mirror of https://gitlab.com/QEF/q-e.git
Merge branch 'develop' into syncqe2
This commit is contained in:
commit
05c866e91f
|
@ -34,12 +34,25 @@ build:cp:
|
|||
# - make run-tests-ph-serial
|
||||
# - rm -r /tmp/save
|
||||
|
||||
build:cmake-gnu:
|
||||
tags: [docker]
|
||||
image: ubuntu:latest
|
||||
script:
|
||||
- apt-get update
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata
|
||||
- apt-get install --yes gfortran git cmake libopenblas0 libopenblas-dev libfftw3-3 libfftw3-dev libopenmpi3 libopenmpi-dev
|
||||
- cmake --version
|
||||
- mkdir build
|
||||
- cd build
|
||||
- cmake -DCMAKE_Fortran_COMPILER=mpif90 -DCMAKE_C_COMPILER=gcc .. && make
|
||||
|
||||
build:pgi:
|
||||
tags: [docker]
|
||||
image: nvcr.io/hpc/pgi-compilers:ce
|
||||
script:
|
||||
- ./configure FC=pgf90 F90=pgf90 MPIF90=mpif90 --enable-openmp
|
||||
- ./configure FC=pgf90 F90=pgf90 F77=pgfortran MPIF90=mpif90 --enable-openmp --with-cuda=yes --enable-cuda-env-check=no
|
||||
- apt-get install --reinstall make
|
||||
- ln -s /usr/bin/cpp /bin/cpp # workaround bug in autotools
|
||||
- make pw cp ph
|
||||
|
||||
#build:centos:
|
||||
|
|
|
@ -7,3 +7,6 @@
|
|||
[submodule "external/wannier90"]
|
||||
path = external/wannier90
|
||||
url = https://github.com/wannier-developers/wannier90.git
|
||||
[submodule "external/devxlib"]
|
||||
path = external/devxlib
|
||||
url = https://gitlab.com/max-centre/components/devicexlib.git
|
||||
|
|
176
CMakeLists.txt
176
CMakeLists.txt
|
@ -29,13 +29,14 @@ set(QE_TESTS_DIR ${qe_BINARY_DIR}/tests/bin)
|
|||
###########################################################
|
||||
# Build helpers
|
||||
###########################################################
|
||||
set(PROJECT_CMAKE ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
|
||||
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include")
|
||||
include(cmake/qeHelpers.cmake)
|
||||
|
||||
###########################################################
|
||||
# Build Type
|
||||
# Ensure that a specific, default build type is set when
|
||||
# Ensure that a specific, default build type is set when
|
||||
# none has been explicitly set by the user
|
||||
###########################################################
|
||||
qe_ensure_build_type("Release")
|
||||
|
@ -73,9 +74,9 @@ option(QE_ENABLE_HDF5
|
|||
"enable HDF5 data collection" OFF)
|
||||
option(QE_ENABLE_CUDA
|
||||
"enable CUDA acceleration on NVIDIA GPUs" OFF)
|
||||
option(QE_ENABLE_VENDOR_DEPS
|
||||
option(QE_ENABLE_VENDOR_DEPS
|
||||
"enable fallback on vendored deps when none is found via find_package()" ON)
|
||||
option(QE_ENABLE_DOC
|
||||
option(QE_ENABLE_DOC
|
||||
"enable documentation building" OFF)
|
||||
|
||||
# TODO change all ifdefs throughout code base to match
|
||||
|
@ -134,16 +135,12 @@ endif()
|
|||
# The following targets will be defined:
|
||||
add_library(qe_mpi_fortran INTERFACE)
|
||||
add_library(QE::MPI_Fortran ALIAS qe_mpi_fortran)
|
||||
add_library(qe_mpi_c INTERFACE)
|
||||
add_library(QE::MPI_C ALIAS qe_mpi_c)
|
||||
qe_install_targets(qe_mpi_fortran qe_mpi_c)
|
||||
qe_install_targets(qe_mpi_fortran)
|
||||
###########################################################
|
||||
if(QE_ENABLE_MPI)
|
||||
find_package(MPI REQUIRED Fortran C)
|
||||
target_link_libraries(qe_mpi_fortran
|
||||
find_package(MPI REQUIRED Fortran)
|
||||
target_link_libraries(qe_mpi_fortran
|
||||
INTERFACE MPI::MPI_Fortran)
|
||||
target_link_libraries(qe_mpi_c
|
||||
INTERFACE MPI::MPI_C)
|
||||
endif(QE_ENABLE_MPI)
|
||||
|
||||
###########################################################
|
||||
|
@ -157,16 +154,23 @@ qe_install_targets(qe_openmp_fortran qe_openmp_c)
|
|||
###########################################################
|
||||
if(QE_ENABLE_OPENMP)
|
||||
find_package(OpenMP REQUIRED Fortran C)
|
||||
target_link_libraries(qe_openmp_fortran
|
||||
target_link_libraries(qe_openmp_fortran
|
||||
INTERFACE OpenMP::OpenMP_Fortran)
|
||||
target_link_libraries(qe_openmp_c
|
||||
target_link_libraries(qe_openmp_c
|
||||
INTERFACE OpenMP::OpenMP_C)
|
||||
|
||||
|
||||
endif(QE_ENABLE_OPENMP)
|
||||
|
||||
############################################################
|
||||
## Compiler specific options
|
||||
############################################################
|
||||
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
|
||||
include(${PROJECT_CMAKE}/GNUFortranCompiler.cmake)
|
||||
endif()
|
||||
|
||||
############################################################
|
||||
## Vendor
|
||||
## Try to found vendor specific libraries for:
|
||||
## Try to found vendor specific libraries for:
|
||||
## BLAS, LAPACK and FFTW
|
||||
############################################################
|
||||
if(QE_ENABLE_OPENMP)
|
||||
|
@ -195,13 +199,13 @@ endif()
|
|||
add_library(qe_lapack INTERFACE)
|
||||
add_library(QE::LAPACK ALIAS qe_lapack)
|
||||
qe_install_targets(qe_lapack)
|
||||
###########################################################
|
||||
#######################################################################
|
||||
if(NOT VENDOR_FOUND)
|
||||
find_package(LAPACK)
|
||||
if(LAPACK_FOUND)
|
||||
message(STATUS "Found LAPACK: ${LAPACK_LIBRARIES}")
|
||||
target_link_libraries(qe_lapack
|
||||
INTERFACE
|
||||
target_link_libraries(qe_lapack
|
||||
INTERFACE
|
||||
${LAPACK_LIBRARIES}
|
||||
${LAPACK_LINKER_FLAGS})
|
||||
elseif(QE_ENABLE_VENDOR_DEPS)
|
||||
|
@ -233,8 +237,8 @@ qe_install_targets(qe_scalapack)
|
|||
if(QE_ENABLE_SCALAPACK)
|
||||
find_package(SCALAPACK REQUIRED QUIET)
|
||||
message(STATUS "Found SCALAPACK: ${SCALAPACK_LIBRARIES};${SCALAPACK_LINKER_FLAGS}")
|
||||
target_link_libraries(qe_scalapack
|
||||
INTERFACE
|
||||
target_link_libraries(qe_scalapack
|
||||
INTERFACE
|
||||
${SCALAPACK_LIBRARIES}
|
||||
${SCALAPACK_LINKER_FLAGS})
|
||||
endif(QE_ENABLE_SCALAPACK)
|
||||
|
@ -248,27 +252,24 @@ qe_install_targets(qe_elpa)
|
|||
###########################################################
|
||||
if(QE_ENABLE_ELPA)
|
||||
find_package(ELPA REQUIRED)
|
||||
|
||||
string(REGEX MATCH "elpa-[0-9][0-9][0-9][0-9]" CMAKE_MATCH_ELPA_VER "${ELPA_INCLUDE_DIRS}")
|
||||
string(REGEX MATCH "[0-9][0-9][0-9][0-9]" CMAKE_MATCH_ONLY_VER "${CMAKE_MATCH_ELPA_VER}")
|
||||
|
||||
|
||||
# Check if ELPA version is compatible with QE
|
||||
if(CMAKE_MATCH_ONLY_VER EQUAL "2018" OR
|
||||
CMAKE_MATCH_ONLY_VER EQUAL "2017" OR
|
||||
CMAKE_MATCH_ONLY_VER EQUAL "2016")
|
||||
qe_add_global_compile_definitions(__ELPA_2016)
|
||||
elseif(CMAKE_MATCH_ONLY_VER EQUAL "2015")
|
||||
qe_add_global_compile_definitions(__ELPA_2015)
|
||||
elseif(CMAKE_MATCH_ONLY_VER LESS "2015")
|
||||
qe_add_global_compile_definitions(__ELPA)
|
||||
if(ELPA_VERSION_STRING VERSION_GREATER_EQUAL "2018.11")
|
||||
set(QE_ELPA_DEFINITIONS __ELPA)
|
||||
elseif(ELPA_VERSION_STRING VERSION_GREATER_EQUAL "2016.11")
|
||||
set(QE_ELPA_DEFINITIONS __ELPA_2016)
|
||||
elseif(ELPA_VERSION_STRING VERSION_GREATER_EQUAL "2015")
|
||||
set(QE_ELPA_DEFINITIONS __ELPA_2015)
|
||||
else()
|
||||
message(FATAL_ERROR "ELPA ver. ${CMAKE_MATCH_ONLY_VER} is not supported.")
|
||||
message(FATAL_ERROR "ELPA verion ${ELPA_VERSION_STRING} is not supported.")
|
||||
endif()
|
||||
message(STATUS "Add ELPA flag : ${QE_ELPA_DEFINITIONS}")
|
||||
qe_add_global_compile_definitions(${QE_ELPA_DEFINITIONS})
|
||||
|
||||
# Looking for module directory
|
||||
file(GLOB_RECURSE ELPA_MODS "${ELPA_INCLUDE_DIRS}/*.mod")
|
||||
list(GET ELPA_MODS 0 ELPA_MOD)
|
||||
if(EXISTS ${ELPA_MOD})
|
||||
file(GLOB_RECURSE ELPA_MODS_FILES "${ELPA_INCLUDE_DIRS}/*.mod" "${ELPA_INCLUDE_DIRS}/../modules/*.mod")
|
||||
if(ELPA_MODS_FILES)
|
||||
list(GET ELPA_MODS_FILES 0 ELPA_MOD)
|
||||
get_filename_component(ELPA_MOD_DIR "${ELPA_MOD}" PATH)
|
||||
set(ELPA_INCLUDE_DIRS "${ELPA_MOD_DIR};${ELPA_INCLUDE_DIRS}")
|
||||
else()
|
||||
|
@ -276,7 +277,7 @@ if(QE_ENABLE_ELPA)
|
|||
endif()
|
||||
|
||||
# Add link libraries and include directories
|
||||
target_link_libraries(qe_elpa
|
||||
target_link_libraries(qe_elpa
|
||||
INTERFACE
|
||||
${ELPA_LIBRARIES}
|
||||
${ELPA_LIBRARIES_DEP}
|
||||
|
@ -297,17 +298,23 @@ add_library(QE::HDF5_C ALIAS qe_hdf5_c)
|
|||
qe_install_targets(qe_hdf5_fortran qe_hdf5_c)
|
||||
###########################################################
|
||||
if(QE_ENABLE_HDF5)
|
||||
if(QE_ENABLE_MPI)
|
||||
option(HDF5_PREFER_PARALLEL "Prefer parallel HDF5" ON)
|
||||
endif()
|
||||
find_package(HDF5 REQUIRED Fortran C)
|
||||
|
||||
if(NOT HDF5_Fortran_LIBRARIES OR NOT HDF5_Fortran_INCLUDE_DIRS)
|
||||
if(NOT HDF5_FOUND)
|
||||
message(FATAL_ERROR "HDF5 Fortran interface has not been found!")
|
||||
endif()
|
||||
if (NOT HDF5_IS_PARALLEL OR NOT QE_ENABLE_MPI)
|
||||
qe_add_global_compile_definitions(__HDF5_SERIAL)
|
||||
endif()
|
||||
|
||||
target_link_libraries(qe_hdf5_fortran
|
||||
INTERFACE
|
||||
if (NOT HDF5_IS_PARALLEL OR NOT QE_ENABLE_MPI)
|
||||
message(STATUS "Serial HDF5 enabled!")
|
||||
qe_add_global_compile_definitions(__HDF5_SERIAL)
|
||||
else()
|
||||
message(STATUS "Parallel HDF5 enabled!")
|
||||
endif()
|
||||
|
||||
target_link_libraries(qe_hdf5_fortran
|
||||
INTERFACE
|
||||
${HDF5_Fortran_LIBRARIES}
|
||||
${HDF5_Fortran_HL_LIBRARIES})
|
||||
target_include_directories(qe_hdf5_fortran
|
||||
|
@ -317,8 +324,8 @@ if(QE_ENABLE_HDF5)
|
|||
INTERFACE
|
||||
${HDF5_Fortran_DEFINITIONS})
|
||||
|
||||
target_link_libraries(qe_hdf5_c
|
||||
INTERFACE
|
||||
target_link_libraries(qe_hdf5_c
|
||||
INTERFACE
|
||||
${HDF5_C_LIBRARIES}
|
||||
${HDF5_C_HL_LIBRARIES})
|
||||
target_include_directories(qe_hdf5_c
|
||||
|
@ -402,10 +409,10 @@ write_basic_package_version_file(
|
|||
VERSION ${PACKAGE_VERSION}
|
||||
COMPATIBILITY AnyNewerVersion)
|
||||
|
||||
configure_file(cmake/qeConfig.cmake.in
|
||||
configure_file(cmake/qeConfig.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/qeConfig.cmake @ONLY)
|
||||
|
||||
install(FILES
|
||||
install(FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/qeConfigVersion.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/qeConfig.cmake
|
||||
DESTINATION
|
||||
|
@ -424,8 +431,8 @@ add_custom_target(depgraph
|
|||
###########################################################
|
||||
# Custom make targets
|
||||
###########################################################
|
||||
add_custom_target(pw
|
||||
DEPENDS
|
||||
add_custom_target(pw
|
||||
DEPENDS
|
||||
qe_pw_exe
|
||||
qe_pw_tools_ibrav2cell_exe
|
||||
qe_pw_tools_cell2ibrav_exe
|
||||
|
@ -435,8 +442,8 @@ add_custom_target(pw
|
|||
COMMENT
|
||||
"basic code for scf, structure optimization, MD")
|
||||
|
||||
add_custom_target(ph
|
||||
DEPENDS
|
||||
add_custom_target(ph
|
||||
DEPENDS
|
||||
qe_phonon_ph_exe
|
||||
qe_phonon_dynmat_exe
|
||||
qe_phonon_q2r_exe
|
||||
|
@ -451,27 +458,27 @@ add_custom_target(ph
|
|||
COMMENT
|
||||
"phonon code, Gamma-only and third-order derivatives")
|
||||
|
||||
add_custom_target(hp
|
||||
DEPENDS
|
||||
add_custom_target(hp
|
||||
DEPENDS
|
||||
qe_hp_exe
|
||||
COMMENT
|
||||
"calculation of the Hubbard parameters from DFPT")
|
||||
|
||||
add_custom_target(pwcond
|
||||
DEPENDS
|
||||
add_custom_target(pwcond
|
||||
DEPENDS
|
||||
qe_pwcond_exe
|
||||
COMMENT
|
||||
"ballistic conductance")
|
||||
|
||||
add_custom_target(neb
|
||||
DEPENDS
|
||||
add_custom_target(neb
|
||||
DEPENDS
|
||||
qe_neb_exe
|
||||
qe_neb_pathinterpolation_exe
|
||||
COMMENT
|
||||
"code for Nudged Elastic Band method")
|
||||
|
||||
add_custom_target(pp
|
||||
DEPENDS
|
||||
add_custom_target(pp
|
||||
DEPENDS
|
||||
qe_pp_exe
|
||||
qe_pp_opengrid_exe
|
||||
qe_pp_average_exe
|
||||
|
@ -504,17 +511,17 @@ add_custom_target(pp
|
|||
COMMENT
|
||||
"postprocessing programs")
|
||||
|
||||
add_custom_target(pwall
|
||||
DEPENDS
|
||||
pw
|
||||
ph
|
||||
pp
|
||||
pwcond
|
||||
add_custom_target(pwall
|
||||
DEPENDS
|
||||
pw
|
||||
ph
|
||||
pp
|
||||
pwcond
|
||||
neb
|
||||
COMMENT
|
||||
"same as \"make pw ph pp pwcond neb\"")
|
||||
|
||||
add_custom_target(cp
|
||||
add_custom_target(cp
|
||||
DEPENDS
|
||||
qe_cpv_exe
|
||||
qe_cpv_manycp_exe
|
||||
|
@ -523,7 +530,7 @@ add_custom_target(cp
|
|||
COMMENT
|
||||
"CP code: Car-Parrinello molecular dynamics")
|
||||
|
||||
add_custom_target(tddfpt
|
||||
add_custom_target(tddfpt
|
||||
DEPENDS
|
||||
qe_tddfpt_turbolanczos_exe
|
||||
qe_tddfpt_turbodavidson_exe
|
||||
|
@ -532,7 +539,7 @@ add_custom_target(tddfpt
|
|||
COMMENT
|
||||
"time dependent dft code")
|
||||
|
||||
add_custom_target(gwl
|
||||
add_custom_target(gwl
|
||||
DEPENDS
|
||||
qe_gww_util_grap_exe
|
||||
qe_gww_util_abcoefftoeps_exe
|
||||
|
@ -540,36 +547,23 @@ add_custom_target(gwl
|
|||
COMMENT
|
||||
"GW with Lanczos chains")
|
||||
|
||||
add_custom_target(ld1
|
||||
add_custom_target(ld1
|
||||
DEPENDS
|
||||
qe_atomic_exe
|
||||
COMMENT
|
||||
"utilities for pseudopotential generation")
|
||||
|
||||
add_custom_target(upf
|
||||
add_custom_target(upf
|
||||
DEPENDS
|
||||
qe_upftools_extractcore_exe
|
||||
qe_upftools_casino2upf_exe
|
||||
qe_upftools_upf2upf2_exe
|
||||
qe_upftools_cpmd2upf_exe
|
||||
qe_upftools_fhi2upf_exe
|
||||
qe_upftools_fpmd2upf_exe
|
||||
qe_upftools_ncpp2upf_exe
|
||||
qe_upftools_oldcp2upf_exe
|
||||
qe_upftools_readupf_exe
|
||||
qe_upftools_readupftofile_exe
|
||||
qe_upftools_fixupf_exe
|
||||
qe_upftools_rrkj2upf_exe
|
||||
qe_upftools_upf2casino_exe
|
||||
qe_upftools_uspp2upf_exe
|
||||
qe_upftools_vdb2upf_exe
|
||||
qe_upftools_virtualv2_exe
|
||||
qe_upftools_interpolate_exe
|
||||
qe_upftools_hgh2qelininterpol_gh2qe_exe
|
||||
#Library
|
||||
qe_upflib
|
||||
#Executables
|
||||
qe_upflib_virtual_v2_exe
|
||||
qe_upflib_upfconv_exe
|
||||
COMMENT
|
||||
"utilities for pseudopotential conversion")
|
||||
|
||||
add_custom_target(xspectra
|
||||
add_custom_target(xspectra
|
||||
DEPENDS
|
||||
qe_xspectra_exe
|
||||
qe_xspectra_spectracorrection_exe
|
||||
|
@ -577,13 +571,13 @@ add_custom_target(xspectra
|
|||
COMMENT
|
||||
"X-ray core-hole spectroscopy calculations")
|
||||
|
||||
add_custom_target(couple
|
||||
add_custom_target(couple
|
||||
DEPENDS
|
||||
qe_couple
|
||||
COMMENT
|
||||
"library interface for coupling to external codes")
|
||||
|
||||
add_custom_target(epw
|
||||
add_custom_target(epw
|
||||
DEPENDS
|
||||
qe_epw_exe
|
||||
COMMENT
|
||||
|
|
|
@ -185,6 +185,7 @@ CONTAINS
|
|||
!
|
||||
CASE ('ensemble','ensemble-dft','edft')
|
||||
!
|
||||
CALL errore(' ensemble_initval ','ensemble-dft is broken, sorry!', 1 )
|
||||
tens =.true.
|
||||
ninner = n_inner_
|
||||
etemp = degauss_
|
||||
|
|
|
@ -1,12 +1,16 @@
|
|||
New in dev version:
|
||||
* Support for CMake (F. Ficarelli and D. Cesarini, CINECA, with help from
|
||||
Ye Luo, P. Delugas, S. Gsaenger)
|
||||
* In vc-relax with Hubbard corrections, the final SCF calculation is done by
|
||||
reading atomic occupations from file produced during the vc-relax
|
||||
(rather then recomputing them from scratch).
|
||||
|
||||
Fixed in dev version:
|
||||
* Some linkers yield "missing references to ddot_" in libbeef
|
||||
* FFT test in FFTXlib was not always compiling
|
||||
* angle1, angle2, starting_magnetization incorrectly written to xml file
|
||||
* Bug in Hubbard forces and stress for bands parallelization (when nproc_pool>nbnd)
|
||||
* Bug in DFT+U+V when starting_ns_eigenvalue is used (courtesy of M. Cococcioni)
|
||||
* Crash in the calculation of Z* with ultrasoft PP when the number of bands
|
||||
is larger than the number of occupied bands (thanks to Sasha Fonari)
|
||||
* Crash in matdyn.x when ibrav=0 (thanks to Sasha Fonari)
|
||||
|
|
|
@ -622,6 +622,8 @@ The following options are available for the CUDA Fortran GPU version:\\
|
|||
& CUDA Toolkit installed on the workstation \\
|
||||
& or available on the compute nodes of the HPC facility.\\
|
||||
& PGI compilers currently accept 7.5, 8.0 or 9.0 (default: 8.0)\\
|
||||
\texttt{--enable-cuda-env-check=[yes]}& if set, sanity checks on the CUDA environment\\
|
||||
& are performed (default: yes).
|
||||
\end{tabular}\\
|
||||
|
||||
Please remember that in order to compile the CUDA code for GPU's you need ...
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
#
|
||||
# Script to automatically add status and error message to ALLOCATE and DEALLOCATE in
|
||||
# Fortran files.
|
||||
#
|
||||
# Script to automatically add status and error message to ALLOCATE and DEALLOCATE in
|
||||
# Fortran files.
|
||||
#
|
||||
# Author: S. Ponce
|
||||
# Date: Sept. 2019
|
||||
#
|
||||
|
||||
from __future__ import print_function
|
||||
import numpy as np
|
||||
|
||||
|
||||
# File name
|
||||
file_name = 'elphel2_shuffle.f90'
|
||||
|
||||
|
@ -18,7 +20,7 @@ with open(file_name,'r') as F:
|
|||
#tmp = lines.split()
|
||||
if len(tmp_split) < 1:
|
||||
continue
|
||||
#
|
||||
#
|
||||
#print tmp_split[0][0:9]
|
||||
if tmp_split[0] == 'SUBROUTINE':
|
||||
for ii in np.arange(len(tmp)):
|
||||
|
@ -28,7 +30,7 @@ with open(file_name,'r') as F:
|
|||
end = ii
|
||||
|
||||
name_sub = str(tmp[start+2:end])
|
||||
|
||||
|
||||
if tmp_split[0] == 'FUNCTION':
|
||||
for ii in np.arange(len(tmp)):
|
||||
if tmp[ii] == 'N' and tmp[ii+1] == ' ':
|
||||
|
@ -47,19 +49,18 @@ with open(file_name,'r') as F:
|
|||
if tmp[ii] == ')':
|
||||
final = ii
|
||||
#print 'start ',start
|
||||
print str(tmp[0:start-9])+'ALLOCATE('+str(tmp[start:final])+', STAT = ierr)'
|
||||
print str(tmp[0:start-9])+'IF (ierr /= 0) CALL errore(\''+str(name_sub)+'\', \'Error allocating '+str(tmp[start:end])+'\', 1)'
|
||||
print('{}ALLOCATE({}, STAT = ierr)'.format(tmp[0:start-9], tmp[start:final]))
|
||||
print("{}IF (ierr /= 0) CALL errore('{}', 'Error allocating {}', 1)".format(
|
||||
tmp[0:start-9], name_sub, tmp[start:end]
|
||||
))
|
||||
elif tmp_split[0][0:11] == 'DEALLOCATE(':
|
||||
for ii in np.arange(len(tmp)):
|
||||
if tmp[ii] == '(':
|
||||
start = ii
|
||||
if tmp[ii] == ')':
|
||||
end = ii
|
||||
print str(tmp[0:start-10])+'DEALLOCATE('+str(tmp[start+1:end])+', STAT = ierr)'
|
||||
print str(tmp[0:start-10])+'IF (ierr /= 0) CALL errore(\''+str(name_sub)+'\', \'Error deallocating '+str(tmp[start+1:end])+'\', 1)'
|
||||
print('{}DEALLOCATE({}, STAT = ierr)'.format(tmp[0:start-10], tmp[start+1:end]))
|
||||
print("{}IF (ierr /= 0) CALL errore('{}', 'Error deallocating {}', 1)".format(
|
||||
tmp[0:start-10], name_sub, tmp[start+1:end]))
|
||||
else:
|
||||
print str(lines),
|
||||
|
||||
|
||||
|
||||
|
||||
print(lines, end='')
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
#!/usr/bin/python
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Post-processing script from of PH data in format used by EPW
|
||||
# 14/07/2015 - Creation of the script - Samuel Ponce
|
||||
# 14/03/2018 - Automatically reads the number of q-points - Michael Waters
|
||||
# 14/03/2018 - Detect if SOC is included in the calculation - Samuel Ponce
|
||||
# 14/03/2018 - Detect if SOC is included in the calculation - Samuel Ponce
|
||||
# 13/11/2018 - Write dyn files in xml format for SOC case - Shunhong Zhang (USTC)
|
||||
#
|
||||
#
|
||||
from __future__ import print_function
|
||||
from builtins import input
|
||||
import numpy as np
|
||||
import os
|
||||
from xml.dom import minidom
|
||||
|
@ -14,12 +16,12 @@ from xml.dom import minidom
|
|||
def dyn2xml(prefix):
|
||||
ndyn=int(os.popen('head -2 {0}.dyn0|tail -1'.format(prefix)).read())
|
||||
for idyn in range(1,ndyn+1):
|
||||
print '{0}.dyn{1} to {0}.dyn_q{1}.xml'.format(prefix,idyn)
|
||||
print('{0}.dyn{1} to {0}.dyn_q{1}.xml'.format(prefix, idyn))
|
||||
dynmat=dyn(prefix,idyn)
|
||||
dynmat._write_xml()
|
||||
def get_geom_info():
|
||||
if os.path.isfile('ph.out')==False:
|
||||
print 'cannot extract geometry info from ph.out'
|
||||
if not os.path.isfile('ph.out'):
|
||||
print('cannot extract geometry info from ph.out')
|
||||
return 1
|
||||
else:
|
||||
volm=float(os.popen('grep -a volume ph.out 2>/dev/null|tail -1').readline().split()[-2])
|
||||
|
@ -47,7 +49,7 @@ class dyn(object):
|
|||
self._at=np.zeros((3,3),float)
|
||||
self._bg=np.zeros((3,3),float)
|
||||
try: self._volm,self._at,self._bg = get_geom_info()
|
||||
except: print 'warning: lattice info not found'
|
||||
except Exception: print('warning: lattice info not found')
|
||||
for i in range(0, 4):
|
||||
f.readline()
|
||||
self._species=[];
|
||||
|
@ -215,7 +217,7 @@ def hasSOC(prefix):
|
|||
xmldoc = minidom.parse(fname)
|
||||
item = xmldoc.getElementsByTagName('spinorbit')[0]
|
||||
lSOC = item.childNodes[0].data
|
||||
|
||||
|
||||
return lSOC
|
||||
|
||||
# Check if the calculation was done in sequential
|
||||
|
@ -225,11 +227,11 @@ def isSEQ(prefix):
|
|||
lseq = True
|
||||
else:
|
||||
lseq = False
|
||||
|
||||
|
||||
return lseq
|
||||
|
||||
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
user_input = input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
prefix = str(user_input)
|
||||
|
||||
# Test if SOC
|
||||
|
@ -237,14 +239,14 @@ SOC = hasSOC(prefix)
|
|||
|
||||
# If SOC detected, but dyn is not in XML and we want to convert it
|
||||
if SOC=='true':
|
||||
user_input = raw_input('Calculation with SOC detected. Do you want to convert dyn in XML format [y/n]?\n')
|
||||
user_input = input('Calculation with SOC detected. Do you want to convert dyn in XML format [y/n]?\n')
|
||||
if str(user_input) == 'y':
|
||||
dyn2xml(prefix)
|
||||
os.system('mv {0}.dyn*.xml save'.format(prefix))
|
||||
|
||||
# If no SOC detected, do you want to convert into XML format
|
||||
# If no SOC detected, do you want to convert into XML format
|
||||
if SOC=='false':
|
||||
user_input = raw_input('Calculation without SOC detected. Do you want to convert to xml anyway [y/n]?\n')
|
||||
user_input = input('Calculation without SOC detected. Do you want to convert to xml anyway [y/n]?\n')
|
||||
if str(user_input) == 'y':
|
||||
SOC = 'true'
|
||||
dyn2xml(prefix)
|
||||
|
@ -258,7 +260,7 @@ if True: # this gets the nqpt from the outputfiles
|
|||
|
||||
else:
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the number of irreducible q-points\n')
|
||||
user_input = input('Enter the number of irreducible q-points\n')
|
||||
nqpt = user_input
|
||||
try:
|
||||
nqpt = int(user_input)
|
||||
|
@ -293,7 +295,7 @@ for iqpt in np.arange(1,nqpt+1):
|
|||
else:
|
||||
os.system('cp _ph0/'+prefix+'.q_'+str(iqpt)+'/'+prefix+'.dvscf save/'+prefix+'.dvscf_q'+label)
|
||||
os.system('rm _ph0/'+prefix+'.q_'+str(iqpt)+'/*wfc*' )
|
||||
|
||||
|
||||
else:
|
||||
# Case with SOC
|
||||
if SOC == 'true':
|
||||
|
@ -316,4 +318,3 @@ for iqpt in np.arange(1,nqpt+1):
|
|||
else:
|
||||
os.system('cp _ph0/'+prefix+'.q_'+str(iqpt)+'/'+prefix+'.dvscf1 save/'+prefix+'.dvscf_q'+label)
|
||||
os.system('rm _ph0/'+prefix+'.q_'+str(iqpt)+'/*wfc*' )
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/python
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Post-processing script from of PH data in format used by EPW
|
||||
# 14/07/2015 - Creation of the script - Samuel Ponce
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
#
|
||||
# 14/07/2015 Samuel Ponce
|
||||
#
|
||||
from __future__ import print_function
|
||||
import numpy as np
|
||||
|
||||
i=0
|
||||
for ii in np.arange(0.5,0.0,-1.0/200):
|
||||
print str(ii)+' 0.0 0.0 '+str(1.0/201)
|
||||
i +=1
|
||||
i = 0
|
||||
for ii in np.arange(0.5, 0.0, -1.0 / 200):
|
||||
print('{0} 0.0 0.0 {1}'.format(ii, 1.0 / 201))
|
||||
i += 1
|
||||
|
||||
for ii in np.arange(0.0,0.5+1.0/200,1.0/200):
|
||||
print str(ii)+' '+str(ii)+' 0.0 '+str(1.0/201)
|
||||
i +=1
|
||||
for ii in np.arange(0.0, 0.5 + 1.0 / 200, 1.0 / 200):
|
||||
print('{0} {0} 0.0 {1}'.format(ii, 1.0 / 201))
|
||||
i += 1
|
||||
|
||||
print i
|
||||
print(i)
|
||||
|
|
|
@ -1,20 +1,19 @@
|
|||
#
|
||||
# Post-processing script QE --> EPW
|
||||
# Post-processing script QE --> EPW
|
||||
# 14/07/2015 - Samuel Ponce
|
||||
#
|
||||
|
||||
from builtins import input
|
||||
import numpy as np
|
||||
import os
|
||||
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
prefix = str(user_input)
|
||||
# Enter the number of irr. q-points
|
||||
prefix = input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the number of irreducible q-points\n')
|
||||
nqpt = user_input
|
||||
# Enter the number of irr. q-points
|
||||
nqpt = input('Enter the number of irreducible q-points\n')
|
||||
try:
|
||||
nqpt = int(user_input)
|
||||
nqpt = int(nqpt)
|
||||
except ValueError:
|
||||
raise Exception('The value you enter is not an integer!')
|
||||
|
||||
|
@ -30,4 +29,3 @@ for iqpt in np.arange(1,nqpt+1):
|
|||
else:
|
||||
os.system('cp _ph0/'+prefix+'.q_'+str(iqpt)+'/'+prefix+'.dvscf1 save/'+prefix+'.dvscf_q'+label)
|
||||
os.system('rm _ph0/'+prefix+'.q_'+str(iqpt)+'/*wfc*' )
|
||||
|
||||
|
|
|
@ -1,20 +1,19 @@
|
|||
#
|
||||
# Post-processing script QE --> EPW
|
||||
# Post-processing script QE --> EPW
|
||||
# 14/07/2015 - Samuel Ponce
|
||||
#
|
||||
|
||||
from builtins import input
|
||||
import numpy as np
|
||||
import os
|
||||
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
prefix = str(user_input)
|
||||
# Enter the number of irr. q-points
|
||||
prefix = input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the number of irreducible q-points\n')
|
||||
nqpt = user_input
|
||||
# Enter the number of irr. q-points
|
||||
nqpt = input('Enter the number of irreducible q-points\n')
|
||||
try:
|
||||
nqpt = int(user_input)
|
||||
nqpt = int(nqpt)
|
||||
except ValueError:
|
||||
raise Exception('The value you enter is not an integer!')
|
||||
|
||||
|
@ -30,4 +29,3 @@ for iqpt in np.arange(1,nqpt+1):
|
|||
else:
|
||||
os.system('cp _ph0/'+prefix+'.q_'+str(iqpt)+'/'+prefix+'.dvscf1 save/'+prefix+'.dvscf_q'+label)
|
||||
os.system('rm _ph0/'+prefix+'.q_'+str(iqpt)+'/*wfc*' )
|
||||
|
||||
|
|
|
@ -1,20 +1,19 @@
|
|||
#
|
||||
# Post-processing script QE --> EPW
|
||||
# Post-processing script QE --> EPW
|
||||
# 14/07/2015 - Samuel Ponce
|
||||
#
|
||||
|
||||
from builtins import input
|
||||
import numpy as np
|
||||
import os
|
||||
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
prefix = str(user_input)
|
||||
# Enter the number of irr. q-points
|
||||
prefix = input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the number of irreducible q-points\n')
|
||||
nqpt = user_input
|
||||
# Enter the number of irr. q-points
|
||||
nqpt = input('Enter the number of irreducible q-points\n')
|
||||
try:
|
||||
nqpt = int(user_input)
|
||||
nqpt = int(nqpt)
|
||||
except ValueError:
|
||||
raise Exception('The value you enter is not an integer!')
|
||||
|
||||
|
@ -30,4 +29,3 @@ for iqpt in np.arange(1,nqpt+1):
|
|||
else:
|
||||
os.system('cp _ph0/'+prefix+'.q_'+str(iqpt)+'/'+prefix+'.dvscf1 save/'+prefix+'.dvscf_q'+label)
|
||||
os.system('rm _ph0/'+prefix+'.q_'+str(iqpt)+'/*wfc*' )
|
||||
|
||||
|
|
|
@ -1,20 +1,19 @@
|
|||
#
|
||||
# Post-processing script QE --> EPW
|
||||
# Post-processing script QE --> EPW
|
||||
# 14/07/2015 - Samuel Ponce
|
||||
#
|
||||
|
||||
from builtins import input
|
||||
import numpy as np
|
||||
import os
|
||||
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
prefix = str(user_input)
|
||||
# Enter the number of irr. q-points
|
||||
prefix = input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the number of irreducible q-points\n')
|
||||
nqpt = user_input
|
||||
# Enter the number of irr. q-points
|
||||
nqpt = input('Enter the number of irreducible q-points\n')
|
||||
try:
|
||||
nqpt = int(user_input)
|
||||
nqpt = int(nqpt)
|
||||
except ValueError:
|
||||
raise Exception('The value you enter is not an integer!')
|
||||
|
||||
|
@ -30,4 +29,3 @@ for iqpt in np.arange(1,nqpt+1):
|
|||
else:
|
||||
os.system('cp _ph0/'+prefix+'.q_'+str(iqpt)+'/'+prefix+'.dvscf1 save/'+prefix+'.dvscf_q'+label)
|
||||
os.system('rm _ph0/'+prefix+'.q_'+str(iqpt)+'/*wfc*' )
|
||||
|
||||
|
|
|
@ -1,20 +1,19 @@
|
|||
#
|
||||
# Post-processing script QE --> EPW
|
||||
# Post-processing script QE --> EPW
|
||||
# 14/07/2015 - Samuel Ponce
|
||||
#
|
||||
|
||||
from builtins import input
|
||||
import numpy as np
|
||||
import os
|
||||
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
prefix = str(user_input)
|
||||
# Enter the number of irr. q-points
|
||||
prefix = input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the number of irreducible q-points\n')
|
||||
nqpt = user_input
|
||||
# Enter the number of irr. q-points
|
||||
nqpt = input('Enter the number of irreducible q-points\n')
|
||||
try:
|
||||
nqpt = int(user_input)
|
||||
nqpt = int(nqpt)
|
||||
except ValueError:
|
||||
raise Exception('The value you enter is not an integer!')
|
||||
|
||||
|
@ -30,4 +29,3 @@ for iqpt in np.arange(1,nqpt+1):
|
|||
else:
|
||||
os.system('cp _ph0/'+prefix+'.q_'+str(iqpt)+'/'+prefix+'.dvscf1 save/'+prefix+'.dvscf_q'+label)
|
||||
os.system('rm _ph0/'+prefix+'.q_'+str(iqpt)+'/*wfc*' )
|
||||
|
||||
|
|
|
@ -1,20 +1,19 @@
|
|||
#
|
||||
# Post-processing script QE --> EPW
|
||||
# Post-processing script QE --> EPW
|
||||
# 14/07/2015 - Samuel Ponce
|
||||
#
|
||||
|
||||
from builtins import input
|
||||
import numpy as np
|
||||
import os
|
||||
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
prefix = str(user_input)
|
||||
# Enter the number of irr. q-points
|
||||
prefix = input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the number of irreducible q-points\n')
|
||||
nqpt = user_input
|
||||
# Enter the number of irr. q-points
|
||||
nqpt = input('Enter the number of irreducible q-points\n')
|
||||
try:
|
||||
nqpt = int(user_input)
|
||||
nqpt = int(nqpt)
|
||||
except ValueError:
|
||||
raise Exception('The value you enter is not an integer!')
|
||||
|
||||
|
@ -30,4 +29,3 @@ for iqpt in np.arange(1,nqpt+1):
|
|||
else:
|
||||
os.system('cp _ph0/'+prefix+'.q_'+str(iqpt)+'/'+prefix+'.dvscf1 save/'+prefix+'.dvscf_q'+label)
|
||||
os.system('rm _ph0/'+prefix+'.q_'+str(iqpt)+'/*wfc*' )
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
from __future__ import print_function
|
||||
import re, sys
|
||||
|
||||
info = """
|
||||
|
|
|
@ -215,9 +215,12 @@ SUBROUTINE laxlib_cdiaghg_gpu( n, m, h_d, s_d, ldh, e_d, v_d, me_bgrp, root_bgrp
|
|||
!
|
||||
USE laxlib_parallel_include
|
||||
!
|
||||
! NB: the flag below can be used to decouple LAXlib from devXlib.
|
||||
! This will make devXlib an optional dependency of LAXlib when
|
||||
! the library will be decoupled from QuantumESPRESSO.
|
||||
#define __USE_GLOBAL_BUFFER
|
||||
#if defined(__USE_GLOBAL_BUFFER)
|
||||
USE gbuffers, ONLY : dev=>dev_buf, pin=>pin_buf
|
||||
#if defined(__USE_GLOBAL_BUFFER) && defined(__CUDA)
|
||||
USE device_fbuff_m, ONLY : dev=>dev_buf, pin=>pin_buf
|
||||
#define VARTYPE POINTER
|
||||
#else
|
||||
#define VARTYPE ALLOCATABLE
|
||||
|
|
|
@ -200,9 +200,12 @@ SUBROUTINE laxlib_rdiaghg_gpu( n, m, h_d, s_d, ldh, e_d, v_d, me_bgrp, root_bgrp
|
|||
#endif
|
||||
#endif
|
||||
!
|
||||
! NB: the flag below can be used to decouple LAXlib from devXlib.
|
||||
! This will make devXlib an optional dependency of LAXlib when
|
||||
! the library will be decoupled from QuantumESPRESSO.
|
||||
#define __USE_GLOBAL_BUFFER
|
||||
#if defined(__USE_GLOBAL_BUFFER)
|
||||
USE gbuffers, ONLY : dev=>dev_buf, pin=>pin_buf
|
||||
#if defined(__USE_GLOBAL_BUFFER) && defined(__CUDA)
|
||||
USE device_fbuff_m, ONLY : dev=>dev_buf, pin=>pin_buf
|
||||
#define VARTYPE POINTER
|
||||
#else
|
||||
#define VARTYPE ALLOCATABLE
|
||||
|
|
|
@ -437,6 +437,7 @@ CONTAINS
|
|||
integer :: event
|
||||
|
||||
LOGICAL, EXTERNAL :: matches
|
||||
LOGICAL :: new_event
|
||||
|
||||
|
||||
! this is a temporary local variable
|
||||
|
@ -546,13 +547,23 @@ CONTAINS
|
|||
! Heres where it get interesting
|
||||
! We may have a new event , or not! :)
|
||||
|
||||
IF ( ((event-1) .gt. 0) .and. ( now_step .lt. event_step(event-1)) ) THEN
|
||||
IF( ionode ) write(*,*) ' AutoPilot: current input_line', input_line
|
||||
CALL auto_error( ' AutoPilot ','Dynamic Rule Event Out of Order!')
|
||||
go to 20
|
||||
IF ((event-1) .gt. 0) THEN
|
||||
IF ( now_step .lt. event_step(event-1)) THEN
|
||||
IF( ionode ) write(*,*) ' AutoPilot: current input_line', input_line
|
||||
CALL auto_error( ' AutoPilot ','Dynamic Rule Event Out of Order!')
|
||||
go to 20
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IF ( (event .eq. 0) .or. ( now_step .gt. event_step(event)) ) THEN
|
||||
IF (event .eq. 0) THEN
|
||||
new_event = .true.
|
||||
ELSEIF ( now_step .gt. event_step(event)) THEN
|
||||
new_event = .true.
|
||||
ELSE
|
||||
new_event = .false.
|
||||
ENDIF
|
||||
|
||||
IF ( new_event ) THEN
|
||||
! new event
|
||||
event = event + 1
|
||||
|
||||
|
@ -601,14 +612,24 @@ CONTAINS
|
|||
! We may have a new event , or not! :)
|
||||
|
||||
|
||||
IF ( ((event-1) .gt. 0) .and. ( on_step .lt. event_step(event-1)) ) THEN
|
||||
IF( ionode ) write(*,*) ' AutoPilot: current input_line', input_line
|
||||
CALL auto_error( ' AutoPilot ','Dynamic Rule Event Out of Order!')
|
||||
go to 20
|
||||
IF ( ((event-1) .gt. 0)) THEN
|
||||
IF ( on_step .lt. event_step(event-1)) THEN
|
||||
IF( ionode ) write(*,*) ' AutoPilot: current input_line', input_line
|
||||
CALL auto_error( ' AutoPilot ','Dynamic Rule Event Out of Order!')
|
||||
go to 20
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
|
||||
IF ( (event .eq. 0) .or. (on_step .gt. event_step(event)) ) THEN
|
||||
IF (event .eq. 0) THEN
|
||||
new_event = .true.
|
||||
ELSEIF (on_step .gt. event_step(event)) THEN
|
||||
new_event = .true.
|
||||
ELSE
|
||||
new_event = .false.
|
||||
ENDIF
|
||||
|
||||
IF (new_event) THEN
|
||||
! new event
|
||||
event = event + 1
|
||||
IF (event > max_event_step) THEN
|
||||
|
|
|
@ -0,0 +1,314 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<!-- *** FILE AUTOMATICALLY CREATED: DO NOT EDIT, CHANGES WILL BE LOST *** --><meta http-equiv="Content-Style-Type" CONTENT="text/css">
|
||||
<style>
|
||||
body {
|
||||
background-color:#ffffff;
|
||||
font:normal 14px/1.8em arial, helvetica, sans-serif;
|
||||
width:900px;
|
||||
text-align:justify;
|
||||
margin: 30 10 10 30;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size:24px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size:18px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size:16px;
|
||||
}
|
||||
pre, tt, code {
|
||||
font-size:14px;
|
||||
}
|
||||
.syntax, .syntax table {
|
||||
font-size:14px;
|
||||
}
|
||||
span.namelist {
|
||||
color: #214478;
|
||||
}
|
||||
span.card {
|
||||
color: #782167;
|
||||
}
|
||||
span.flag {
|
||||
color: #008000;
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
<title>postahc.x: input description</title>
|
||||
</head>
|
||||
<body>
|
||||
<a name="__top__"></a><table style="border-width: 0; table-layout: auto; width: 100%; text-align: left; vertical-align: top; background: #00395a;">
|
||||
<tr><th style="margin: 3 3 3 10; background: #005789; background: linear-gradient(rgba(0,87,137,1),rgba(0,119,189,1)); color: #ffffee; ">
|
||||
<h1 style="margin: 10 10 10 15; text-align: left;"> Input File Description </h1>
|
||||
<h2 style="margin: 10 10 10 15; text-align: left;"> Program:
|
||||
postahc.x / PWscf / Quantum Espresso<span style="font-weight: normal;"> (version: 6.6)</span>
|
||||
</h2>
|
||||
</th></tr>
|
||||
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">
|
||||
<blockquote style="margin-bottom: 2em;">
|
||||
<h3>TABLE OF CONTENTS</h3>
|
||||
<blockquote>
|
||||
|
||||
|
||||
<p><a href="#idm3">INTRODUCTION</a></p>
|
||||
<p><a href="#idm8">&INPUT</a></p>
|
||||
<blockquote>
|
||||
<a href="#idm9">ahc_dir</a> | <a href="#idm12">nk</a> | <a href="#idm15">nbnd</a> | <a href="#idm18">nat</a> | <a href="#idm21">nq</a> | <a href="#idm24">ahc_nbnd</a> | <a href="#idm27">ahc_nbndskip</a> | <a href="#idm30">flvec</a> | <a href="#idm33">eta</a> | <a href="#idm36">temp_kelvin</a> | <a href="#idm39">efermi</a> | <a href="#idm42">amass_amu</a> | <a href="#idm46">skip_upperfan</a> | <a href="#idm50">skip_dw</a>
|
||||
</blockquote>
|
||||
</blockquote>
|
||||
</blockquote>
|
||||
<blockquote>
|
||||
<a name="idm3"></a><h3>INTRODUCTION</h3>
|
||||
<blockquote><pre>
|
||||
<b>Purpose of postahc.x:</b>
|
||||
|
||||
- Read the electron-phonon quantities calculated by ph.x with the
|
||||
electron_phonon='ahc' option.
|
||||
|
||||
- Calculate the phonon-induced electron self-energy in the full matrix form
|
||||
at a given temperature.
|
||||
|
||||
<b>Structure of the input data:</b>
|
||||
========================================================================
|
||||
|
||||
<b>&INPUT</b>
|
||||
...specs of namelist variables...
|
||||
<b>/</b>
|
||||
</pre></blockquote>
|
||||
</blockquote>
|
||||
<a name="idm8"></a><a name="INPUT"></a><table border="0" width="100%" style="margin-bottom: 20;">
|
||||
<tr><th bgcolor="#ddcba6"><h2 style="margin: 10 10 10 15; text-align: left;"> Namelist: <span class="namelist"><span style="font-weight:normal">&</span>INPUT</span>
|
||||
</h2></th></tr>
|
||||
<tr><td style="text-align: left; background: #ffebc6; padding: 5 5 5 30; "><table style="border-color: #505087; border-style: solid; border-width: 0; margin-bottom: 10; table-layout: auto; width: 800;"><tbody><tr><td>
|
||||
<a name="idm9"></a><a name="ahc_dir"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
|
||||
<tr>
|
||||
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">ahc_dir</th>
|
||||
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">CHARACTER</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "><i>Status:</i></td>
|
||||
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> REQUIRED
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
|
||||
Directory where the binary files are located.
|
||||
</pre></blockquote></td></tr>
|
||||
</table>
|
||||
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
|
||||
<a name="idm12"></a><a name="nk"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
|
||||
<tr>
|
||||
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">nk</th>
|
||||
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "><i>Status:</i></td>
|
||||
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> REQUIRED
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
|
||||
Number of k points. Must be identical to that of the preceding SCF or NSCF run.
|
||||
</pre></blockquote></td></tr>
|
||||
</table>
|
||||
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
|
||||
<a name="idm15"></a><a name="nbnd"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
|
||||
<tr>
|
||||
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">nbnd</th>
|
||||
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "><i>Status:</i></td>
|
||||
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> REQUIRED
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
|
||||
Number of bands. Must be identical to nbnd of the preceding SCF or NSCF run.
|
||||
</pre></blockquote></td></tr>
|
||||
</table>
|
||||
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
|
||||
<a name="idm18"></a><a name="nat"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
|
||||
<tr>
|
||||
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">nat</th>
|
||||
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "><i>Status:</i></td>
|
||||
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> REQUIRED
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
|
||||
Number of atoms. Must be identical to nat of the preceding pw.x and ph.x
|
||||
runs.
|
||||
</pre></blockquote></td></tr>
|
||||
</table>
|
||||
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
|
||||
<a name="idm21"></a><a name="nq"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
|
||||
<tr>
|
||||
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">nq</th>
|
||||
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "><i>Status:</i></td>
|
||||
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> REQUIRED
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
|
||||
Number of q points. Must be identical to that of the preceding ph.x run
|
||||
with electron_phonon='ahc'.
|
||||
</pre></blockquote></td></tr>
|
||||
</table>
|
||||
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
|
||||
<a name="idm24"></a><a name="ahc_nbnd"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
|
||||
<tr>
|
||||
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">ahc_nbnd</th>
|
||||
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "><i>Status:</i></td>
|
||||
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> REQUIRED
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
|
||||
Number of bands for which the electron self-energy is to be computed. Must be
|
||||
identical to ahc_nbnd of the ph.x run with electron_phonon='ahc'.
|
||||
</pre></blockquote></td></tr>
|
||||
</table>
|
||||
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
|
||||
<a name="idm27"></a><a name="ahc_nbndskip"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
|
||||
<tr>
|
||||
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">ahc_nbndskip</th>
|
||||
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">INTEGER</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "><i>Default:</i></td>
|
||||
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> 0
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
|
||||
Number of bands to exclude when computing the self-energy. Must be identical to
|
||||
ahc_nbndskip of the ph.x run with electron_phonon='ahc'.
|
||||
</pre></blockquote></td></tr>
|
||||
</table>
|
||||
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
|
||||
<a name="idm30"></a><a name="flvec"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
|
||||
<tr>
|
||||
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">flvec</th>
|
||||
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">CHARACTER</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "><i>Status:</i></td>
|
||||
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> REQUIRED
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
|
||||
File containing the normalized phonon displacements written by matdyn.x.
|
||||
</pre></blockquote></td></tr>
|
||||
</table>
|
||||
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
|
||||
<a name="idm33"></a><a name="eta"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
|
||||
<tr>
|
||||
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">eta</th>
|
||||
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">REAL</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "><i>Status:</i></td>
|
||||
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> REQUIRED
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
|
||||
Magnitude of the small imaginary component included to smooth the energy
|
||||
denominators, in Ry.
|
||||
</pre></blockquote></td></tr>
|
||||
</table>
|
||||
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
|
||||
<a name="idm36"></a><a name="temp_kelvin"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
|
||||
<tr>
|
||||
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">temp_kelvin</th>
|
||||
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">REAL</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "><i>Status:</i></td>
|
||||
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> REQUIRED
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
|
||||
Temperature in Kelvins at which the electron self-energy is calculated.
|
||||
</pre></blockquote></td></tr>
|
||||
</table>
|
||||
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
|
||||
<a name="idm39"></a><a name="efermi"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
|
||||
<tr>
|
||||
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">efermi</th>
|
||||
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">REAL</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "><i>Status:</i></td>
|
||||
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> REQUIRED
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
|
||||
Fermi energy of the electrons in Ry.
|
||||
</pre></blockquote></td></tr>
|
||||
</table>
|
||||
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
|
||||
<a name="idm42"></a><a name="amass_amu"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
|
||||
<tr>
|
||||
<th width="20%" style="white-space: nowrap; text-align: left; vertical-align: top; background: #ffff99; padding: 2 2 2 10; ">amass_amu(i), i=1,nat</th>
|
||||
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">REAL</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "><i>Status:</i></td>
|
||||
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> REQUIRED
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
|
||||
Mass for each atom in atomic mass unit. In postahc.x, <a href="#amass_amu">amass_amu</a> must be
|
||||
set for each atom, not for each atom type as in other programs.
|
||||
</pre></blockquote></td></tr>
|
||||
</table>
|
||||
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
|
||||
<a name="idm46"></a><a name="skip_upperfan"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
|
||||
<tr>
|
||||
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">skip_upperfan</th>
|
||||
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "><i>Default:</i></td>
|
||||
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> .false.
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
|
||||
If .true., skip calculation of the upper Fan self-energy.
|
||||
If .false., ahc_upfan_iq#.bin files must be present in <a href="#ahc_dir">ahc_dir</a>.
|
||||
</pre></blockquote></td></tr>
|
||||
</table>
|
||||
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
|
||||
<a name="idm50"></a><a name="skip_dw"></a><table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
|
||||
<tr>
|
||||
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">skip_dw</th>
|
||||
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">LOGICAL</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "><i>Default:</i></td>
|
||||
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; "> .false.
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td align="left" valign="top" colspan="2"><blockquote><pre style="margin-bottom: -1em;">
|
||||
If .true., skip calculation of the Debye-Waller self-energy.
|
||||
If .false., ahc_dw.bin file must be present in <a href="#ahc_dir">ahc_dir</a>.
|
||||
</pre></blockquote></td></tr>
|
||||
</table>
|
||||
<div align="right" style="margin-bottom: 5;">[<a href="#__top__">Back to Top</a>]</div>
|
||||
</td></tr></tbody></table></td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
</table>
|
||||
<small>
|
||||
This file has been created by helpdoc utility on Tue Oct 06 22:11:45 CEST 2020.
|
||||
</small>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,153 @@
|
|||
*** FILE AUTOMATICALLY CREATED: DO NOT EDIT, CHANGES WILL BE LOST ***
|
||||
|
||||
------------------------------------------------------------------------
|
||||
INPUT FILE DESCRIPTION
|
||||
|
||||
Program: postahc.x / PWscf / Quantum Espresso (version: 6.6)
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
Purpose of postahc.x:
|
||||
|
||||
- Read the electron-phonon quantities calculated by ph.x with the
|
||||
electron_phonon='ahc' option.
|
||||
|
||||
- Calculate the phonon-induced electron self-energy in the full matrix form
|
||||
at a given temperature.
|
||||
|
||||
Structure of the input data:
|
||||
========================================================================
|
||||
|
||||
&INPUT
|
||||
...specs of namelist variables...
|
||||
/
|
||||
|
||||
|
||||
|
||||
========================================================================
|
||||
NAMELIST: &INPUT
|
||||
|
||||
+--------------------------------------------------------------------
|
||||
Variable: ahc_dir
|
||||
|
||||
Type: CHARACTER
|
||||
Status: REQUIRED
|
||||
Description: Directory where the binary files are located.
|
||||
+--------------------------------------------------------------------
|
||||
|
||||
+--------------------------------------------------------------------
|
||||
Variable: nk
|
||||
|
||||
Type: INTEGER
|
||||
Status: REQUIRED
|
||||
Description: Number of k points. Must be identical to that of the preceding SCF or NSCF run.
|
||||
+--------------------------------------------------------------------
|
||||
|
||||
+--------------------------------------------------------------------
|
||||
Variable: nbnd
|
||||
|
||||
Type: INTEGER
|
||||
Status: REQUIRED
|
||||
Description: Number of bands. Must be identical to nbnd of the preceding SCF or NSCF run.
|
||||
+--------------------------------------------------------------------
|
||||
|
||||
+--------------------------------------------------------------------
|
||||
Variable: nat
|
||||
|
||||
Type: INTEGER
|
||||
Status: REQUIRED
|
||||
Description: Number of atoms. Must be identical to nat of the preceding pw.x and ph.x
|
||||
runs.
|
||||
+--------------------------------------------------------------------
|
||||
|
||||
+--------------------------------------------------------------------
|
||||
Variable: nq
|
||||
|
||||
Type: INTEGER
|
||||
Status: REQUIRED
|
||||
Description: Number of q points. Must be identical to that of the preceding ph.x run
|
||||
with electron_phonon='ahc'.
|
||||
+--------------------------------------------------------------------
|
||||
|
||||
+--------------------------------------------------------------------
|
||||
Variable: ahc_nbnd
|
||||
|
||||
Type: INTEGER
|
||||
Status: REQUIRED
|
||||
Description: Number of bands for which the electron self-energy is to be computed. Must be
|
||||
identical to ahc_nbnd of the ph.x run with electron_phonon='ahc'.
|
||||
+--------------------------------------------------------------------
|
||||
|
||||
+--------------------------------------------------------------------
|
||||
Variable: ahc_nbndskip
|
||||
|
||||
Type: INTEGER
|
||||
Default: 0
|
||||
Description: Number of bands to exclude when computing the self-energy. Must be identical to
|
||||
ahc_nbndskip of the ph.x run with electron_phonon='ahc'.
|
||||
+--------------------------------------------------------------------
|
||||
|
||||
+--------------------------------------------------------------------
|
||||
Variable: flvec
|
||||
|
||||
Type: CHARACTER
|
||||
Status: REQUIRED
|
||||
Description: File containing the normalized phonon displacements written by matdyn.x.
|
||||
+--------------------------------------------------------------------
|
||||
|
||||
+--------------------------------------------------------------------
|
||||
Variable: eta
|
||||
|
||||
Type: REAL
|
||||
Status: REQUIRED
|
||||
Description: Magnitude of the small imaginary component included to smooth the energy
|
||||
denominators, in Ry.
|
||||
+--------------------------------------------------------------------
|
||||
|
||||
+--------------------------------------------------------------------
|
||||
Variable: temp_kelvin
|
||||
|
||||
Type: REAL
|
||||
Status: REQUIRED
|
||||
Description: Temperature in Kelvins at which the electron self-energy is calculated.
|
||||
+--------------------------------------------------------------------
|
||||
|
||||
+--------------------------------------------------------------------
|
||||
Variable: efermi
|
||||
|
||||
Type: REAL
|
||||
Status: REQUIRED
|
||||
Description: Fermi energy of the electrons in Ry.
|
||||
+--------------------------------------------------------------------
|
||||
|
||||
+--------------------------------------------------------------------
|
||||
Variable: amass_amu(i), i=1,nat
|
||||
|
||||
Type: REAL
|
||||
Status: REQUIRED
|
||||
Description: Mass for each atom in atomic mass unit. In postahc.x, "amass_amu" must be
|
||||
set for each atom, not for each atom type as in other programs.
|
||||
+--------------------------------------------------------------------
|
||||
|
||||
+--------------------------------------------------------------------
|
||||
Variable: skip_upperfan
|
||||
|
||||
Type: LOGICAL
|
||||
Default: .false.
|
||||
Description: If .true., skip calculation of the upper Fan self-energy.
|
||||
If .false., ahc_upfan_iq#.bin files must be present in "ahc_dir".
|
||||
+--------------------------------------------------------------------
|
||||
|
||||
+--------------------------------------------------------------------
|
||||
Variable: skip_dw
|
||||
|
||||
Type: LOGICAL
|
||||
Default: .false.
|
||||
Description: If .true., skip calculation of the Debye-Waller self-energy.
|
||||
If .false., ahc_dw.bin file must be present in "ahc_dir".
|
||||
+--------------------------------------------------------------------
|
||||
|
||||
===END OF NAMELIST======================================================
|
||||
|
||||
|
||||
This file has been created by helpdoc utility on Tue Oct 06 22:11:45 CEST 2020
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -102,7 +102,6 @@ SUBROUTINE readxmlfile_vasp(iexch,icorr,igcx,igcc,inlc,ierr)
|
|||
USE klist, ONLY : nkstot, nks, xk, wk
|
||||
USE lsda_mod, ONLY : lsda, nspin, current_spin, isk
|
||||
USE wvfct, ONLY : nbnd, nbndx, et, wg
|
||||
USE symm_base, ONLY : irt, d1, d2, d3, checkallsym, nsym
|
||||
USE extfield, ONLY : forcefield, tefield, gate, forcegate
|
||||
USE cellmd, ONLY : cell_factor, lmovecell
|
||||
USE fft_base, ONLY : dfftp
|
||||
|
@ -916,7 +915,6 @@ END SUBROUTINE vasp_init_vars_from_schema
|
|||
USE constants, ONLY : e2
|
||||
USE cell_base, ONLY : at, bg, alat, omega, cell_base_init
|
||||
USE ions_base, ONLY : nat, nsp
|
||||
USE symm_base, ONLY : nsym
|
||||
USE gvect, ONLY : ngm_g, ecutrho
|
||||
USE fft_base, ONLY : dfftp
|
||||
USE gvecs, ONLY : ngms_g, dual
|
||||
|
@ -1001,7 +999,6 @@ END SUBROUTINE vasp_init_vars_from_schema
|
|||
USE constants, ONLY : e2, ANGSTROM_AU
|
||||
USE cell_base, ONLY : at, alat, omega
|
||||
USE ions_base, ONLY : nat, nsp, ityp, tau, zv, atm
|
||||
USE symm_base, ONLY : nsym
|
||||
USE gvect, ONLY : ngm_g, ecutrho
|
||||
USE fft_base, ONLY : dfftp
|
||||
USE gvecs, ONLY : ngms_g, dual
|
||||
|
@ -1050,7 +1047,6 @@ END SUBROUTINE vasp_init_vars_from_schema
|
|||
USE constants, ONLY : e2
|
||||
USE cell_base, ONLY : at, alat, omega
|
||||
USE ions_base, ONLY : nat, nsp, ityp, tau, atm
|
||||
USE symm_base, ONLY : nsym
|
||||
USE gvect, ONLY : ngm_g, ecutrho
|
||||
USE fft_base, ONLY : dfftp
|
||||
USE gvecs, ONLY : ngms_g, dual
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#! /usr/bin/python
|
||||
#!/usr/bin/env python3
|
||||
|
||||
###### SUM STATES #######
|
||||
# Python script for summing and ploting the data from the Density Of States
|
||||
|
@ -31,17 +31,17 @@
|
|||
# ni.pdos_atm#1\(Ni\)_wfc#2\(d\) -t "Example PP/02" -xr -6 2
|
||||
#
|
||||
#
|
||||
# The procedure for obtaining the DOS files is explained
|
||||
# The procedure for obtaining the DOS files is explained
|
||||
# i.e. in (espresso-dir)/PP/examples/example02/
|
||||
#
|
||||
#
|
||||
# Author: Dr. Julen Larrucea
|
||||
# University of Bremen,
|
||||
# Bremen Centre for Computational Materials Science, HMI Group
|
||||
# julenl [at] gmail.com or larrucea [at] hmi.uni-bremen.de
|
||||
#
|
||||
# This file is distributed under the terms of the GNU General Public
|
||||
# This file is distributed under the terms of the GNU General Public
|
||||
# License. See the file `License'
|
||||
# in the root directory of the present distribution,
|
||||
# in the root directory of the present distribution,
|
||||
# or http://www.gnu.org/copyleft/gpl.txt .
|
||||
#######################
|
||||
|
||||
|
@ -60,7 +60,7 @@ min_y,max_y="",""
|
|||
output_file_name="sum_dos.out"
|
||||
prt="no"
|
||||
|
||||
print " #### sum_states.py version "+str(version)+" #### "
|
||||
print(" #### sum_states.py version {} #### ".format(version))
|
||||
|
||||
|
||||
# Check if X11, mathplotlib and gnuplot are available
|
||||
|
@ -89,14 +89,14 @@ if len(sys.argv)>1:
|
|||
if option=="t":
|
||||
graphtitle= sys.argv[sys.argv.index('-t')+1]
|
||||
if option=="xr":
|
||||
min_x,max_x= float(sys.argv[sys.argv.index('-xr')+1]),float(sys.argv[sys.argv.index('-xr')+2])
|
||||
min_x,max_x= float(sys.argv[sys.argv.index('-xr')+1]),float(sys.argv[sys.argv.index('-xr')+2])
|
||||
if option=="yr":
|
||||
min_y,max_y= float(sys.argv[sys.argv.index('-yr')+1]),float(sys.argv[sys.argv.index('-yr')+2])
|
||||
min_y,max_y= float(sys.argv[sys.argv.index('-yr')+1]),float(sys.argv[sys.argv.index('-yr')+2])
|
||||
if option=="v":
|
||||
print "sum_dos.py version: "+version
|
||||
print("sum_dos.py version:", version)
|
||||
sys.exit()
|
||||
if option=="h":
|
||||
print '''
|
||||
print('''
|
||||
-o QE output file name (for grepping Fermi E)
|
||||
-s Selection of atoms for summing the DOSes. "*" for all, *1*Fe*d* for first Fe atom " (def. "*")
|
||||
-p Print output to a file and aditionaly provide an output name (def. no output and "sum_dos.out")
|
||||
|
@ -105,8 +105,8 @@ if len(sys.argv)>1:
|
|||
-yr set min and max y value for the axes in the graph
|
||||
-h print this help
|
||||
-v print version
|
||||
Example: sum_states.py --s sys.pdos_atm#4\(Fe2\)_wfc#2\(d\) -t "Wustite LDA+U single Fe" -xr -9 4
|
||||
'''
|
||||
Example: sum_states.py --s sys.pdos_atm#4\(Fe2\)_wfc#2\(d\) -t "Wustite LDA+U single Fe" -xr -9 4
|
||||
''')
|
||||
sys.exit()
|
||||
|
||||
|
||||
|
@ -116,13 +116,13 @@ if len(os.popen('echo $DISPLAY').read()) > 1:
|
|||
try:
|
||||
from pylab import *
|
||||
mplplot="yes"
|
||||
print "pylab imported"
|
||||
print("pylab imported")
|
||||
except:
|
||||
print "There is no mathplotlib installed. Using gnuplot."
|
||||
print("There is no mathplotlib installed. Using gnuplot.")
|
||||
mplplot="no"
|
||||
prt="yes"
|
||||
else:
|
||||
print "No X11. Trying to plot on terminal"
|
||||
print("No X11. Trying to plot on terminal")
|
||||
graphic_plot="no"
|
||||
if prog_gnuplot=="no":
|
||||
prt="yes"
|
||||
|
@ -132,7 +132,7 @@ else:
|
|||
if pwout == "":
|
||||
for filen in filter(os.path.isfile, os.listdir('.')):
|
||||
if "Program PWSCF" in linecache.getline(filen, 2):
|
||||
print "Using " + filen + " as pw.x output. You can specify another one with the -o option."
|
||||
print("Using " + filen + " as pw.x output. You can specify another one with the -o option.")
|
||||
pwout=filen
|
||||
|
||||
# Parse Fermi energy from the pw.x output
|
||||
|
@ -140,35 +140,32 @@ if pwout!="":
|
|||
try:
|
||||
os.popen("grep -a 'the Fermi energy is' "+pwout ).read()
|
||||
fermi=float(os.popen("grep -a 'the Fermi energy is' "+pwout ).read().split()[4])
|
||||
print "Fermi energy = ", fermi, "a.u."
|
||||
print("Fermi energy = ", fermi, "a.u.")
|
||||
except:
|
||||
print "WARNING: No Fermi energy found. Using 0 e.V. instead"
|
||||
print("WARNING: No Fermi energy found. Using 0 e.V. instead")
|
||||
fermi=0
|
||||
else:
|
||||
print "WARNING: No pw.x output found. Using E Fermi = 0 e.V."
|
||||
print("WARNING: No pw.x output found. Using E Fermi = 0 e.V.")
|
||||
fermi=0
|
||||
|
||||
# List of all DOS files to add
|
||||
# List of all DOS files to add
|
||||
dosfiles=[]
|
||||
for dfile in os.listdir('.'):
|
||||
if fnmatch.fnmatch(dfile, selat):
|
||||
dosfiles.append(dfile)
|
||||
dosfiles.append(dfile)
|
||||
if len(dosfiles)==0:
|
||||
print "ERROR: Provide a (list of) valid DOS file(s)"
|
||||
print("ERROR: Provide a (list of) valid DOS file(s)")
|
||||
sys.exit()
|
||||
|
||||
print "dosfiles list: ",
|
||||
for dosfile in dosfiles:
|
||||
print dosfile,
|
||||
print ""
|
||||
print("dosfiles list:", " ".join(dosfiles))
|
||||
|
||||
# Check wetter we have k-solved DOS
|
||||
if open(dosfiles[0],'r').readline().split()[1]=="E":
|
||||
ksolved="no"
|
||||
print "no ksolved"
|
||||
print("no ksolved")
|
||||
elif open(dosfiles[0],'r').readline().split()[1]=="ik":
|
||||
ksolved="yes"
|
||||
print "ksolved"
|
||||
print("ksolved")
|
||||
|
||||
# Sum over all k-points and files
|
||||
mat=[] # matrix with total sum of ldos
|
||||
|
@ -191,28 +188,28 @@ for i in range(len(dosfiles)):
|
|||
elif ik == k and k > 1:
|
||||
oldmat.append([float(line.split()[1]),float(line.split()[2]),float(line.split()[3])])
|
||||
elif len(line) < 5 and k > 1: #if blank line, sum k-frame to the total
|
||||
for j in range(len(oldmat)):
|
||||
for j in range(len(oldmat)):
|
||||
mati[j]=[mati[j][0],mati[j][1]+oldmat[j][1],mati[j][2]+oldmat[j][2]]
|
||||
|
||||
if mat == []: # if it is the first dos file, copy total matrix (mat) = the first dos files's data
|
||||
mat=mati[:]
|
||||
else:
|
||||
for j in range(len(mati)): # if it is not the first file, sum values
|
||||
mat[j]=[mat[j][0],mat[j][1]+mati[j][1],mat[j][2]+mati[j][2]]
|
||||
mat[j]=[mat[j][0],mat[j][1]+mati[j][1],mat[j][2]+mati[j][2]]
|
||||
|
||||
|
||||
print "...ploting..."
|
||||
print("...ploting...")
|
||||
|
||||
|
||||
if prt=="yes":
|
||||
out=open(output_file_name,"w")
|
||||
x,y1,y2=[],[],[]
|
||||
x,y1,y2=[],[],[]
|
||||
for i in mat:
|
||||
x.append(i[0]-fermi)
|
||||
y1.append(i[1])
|
||||
y2.append(-i[2])
|
||||
if prt=="yes": # print to a file
|
||||
print>>out, i[0]-fermi, i[1], i[2]
|
||||
print(i[0] - fermi, i[1], i[2], file=out)
|
||||
if prt=="yes":
|
||||
out.close()
|
||||
|
||||
|
@ -222,7 +219,7 @@ if graphic_plot=="yes":
|
|||
if mplplot=="yes":
|
||||
plot(x,y1,linewidth=1.0)
|
||||
plot(x,y2,linewidth=1.0)
|
||||
print min(y2),max(y1)
|
||||
print(min(y2), max(y1))
|
||||
plt.title(graphtitle)
|
||||
plt.xlabel('E (eV)')
|
||||
plt.ylabel('States')
|
||||
|
@ -231,15 +228,13 @@ if graphic_plot=="yes":
|
|||
plt.fill(x,y1,color='0.8')
|
||||
plt.fill(x,y2,color='0.9')
|
||||
if min_x and max_x:
|
||||
fromx,tox=min_x,max_x
|
||||
fromx, tox = min_x, max_x
|
||||
plt.axis([fromx, tox, min(y2), max(y1)])
|
||||
show()
|
||||
show()
|
||||
elif mplplot=="no" and prog_gnuplot=="yes": # If no mathplotlib available, use gnuplot
|
||||
os.system("echo \"plot '"+ output_file_name + "' using ($1-"+str(fermi)+"):2 w l, '' u ($1"+str(fermi)+"):3 w l\" | gnuplot -persist")
|
||||
os.system("""echo "plot '{0}' using ($1-{1}):2 w l, '' u ($1-{1}):3 w l" | gnuplot -persist""".format(
|
||||
output_file_name, fermi))
|
||||
elif graphic_plot=="no": # If no X forwarding available, show graph in terminal
|
||||
if prog_gnuplot=="yes":
|
||||
os.system("echo \"set terminal dumb; plot '"+ output_file_name + "' using ($1-"+str(fermi)+"):2 w l, '' u ($1-"+str(fermi)+"):3 w l\" | gnuplot -persist")
|
||||
|
||||
|
||||
|
||||
|
||||
os.system("""echo "set terminal dumb; plot '{0}' using ($1-{1}):2 w l, '' u ($1-{1}):3 w l" | gnuplot -persist""".format(
|
||||
output_file_name, fermi))
|
||||
|
|
|
@ -327,6 +327,8 @@ SUBROUTINE move_ions( idone, ions_status )
|
|||
!
|
||||
! ... before leaving check that the new positions still transform
|
||||
! ... according to the symmetry of the system.
|
||||
! ... FIXME: should be done in all cases, not just for vc-md
|
||||
! ... FIXME 2: why not impose symmetry instead of just checking it?
|
||||
!
|
||||
CALL checkallsym( nat, tau, ityp)
|
||||
!
|
||||
|
|
|
@ -15,23 +15,17 @@ SUBROUTINE nsg_adj
|
|||
!
|
||||
USE kinds, ONLY : DP
|
||||
USE ions_base, ONLY : nat, ntyp => nsp, ityp
|
||||
USE ldaU, ONLY : Hubbard_lmax, Hubbard_l, Hubbard_U, starting_ns, &
|
||||
Hubbard_l_back, Hubbard_U_back, starting_ns_back, ldim_u, &
|
||||
nsg, nsgnew
|
||||
USE scf, ONLY : rho
|
||||
USE ldaU, ONLY : Hubbard_lmax, Hubbard_l, starting_ns, &
|
||||
nsgnew, neighood, is_hubbard
|
||||
USE lsda_mod, ONLY : nspin
|
||||
USE noncollin_module, ONLY : noncolin, npol
|
||||
USE io_global, ONLY : stdout
|
||||
|
||||
IMPLICIT NONE
|
||||
!
|
||||
INTEGER, PARAMETER :: ldmx = 7
|
||||
INTEGER :: na, nt, is, m1, m2, majs, mins, adjs, mol(ldmx), &
|
||||
nel, i, j, l, index(ldmx), viz, ldim
|
||||
REAL(DP) :: totoc, delta,lambda(ldmx)
|
||||
INTEGER :: na, na1, nt, is, m1, m2, i, viz, ldim
|
||||
REAL(DP) :: lambda(ldmx)
|
||||
COMPLEX(DP) :: vet(ldmx,ldmx), f(ldmx,ldmx), temp
|
||||
LOGICAL :: adjust
|
||||
INTEGER, EXTERNAL :: find_viz
|
||||
!
|
||||
IF (ALL(starting_ns == -1.d0)) RETURN
|
||||
!
|
||||
|
@ -43,20 +37,27 @@ SUBROUTINE nsg_adj
|
|||
!
|
||||
nt = ityp(na)
|
||||
!
|
||||
ldim = 2*Hubbard_l(nt) + 1
|
||||
!
|
||||
viz = find_viz(na,na)
|
||||
!
|
||||
IF (ldim_u(nt).GT.0) THEN
|
||||
IF (is_hubbard(nt)) THEN
|
||||
!
|
||||
ldim = 2*Hubbard_l(nt) + 1
|
||||
!
|
||||
DO is = 1, nspin
|
||||
!
|
||||
DO m1 = 1, ldim
|
||||
DO m2 = 1, ldim
|
||||
f(m1,m2) = nsgnew(na,m1,viz,m2,is)
|
||||
ENDDO
|
||||
DO viz = 1, neighood(na)%num_neigh
|
||||
na1 = neighood(na)%neigh(viz)
|
||||
IF (na1.EQ.na) THEN
|
||||
f(:,:) = (0.d0, 0.d0)
|
||||
DO m1 = 1, ldim
|
||||
DO m2 = 1, ldim
|
||||
f(m1,m2) = nsgnew(m2,m1,viz,na,is)
|
||||
ENDDO
|
||||
ENDDO
|
||||
GO TO 7
|
||||
ENDIF
|
||||
ENDDO
|
||||
!
|
||||
7 CONTINUE
|
||||
!
|
||||
CALL cdiagh(ldim, f, ldmx, lambda, vet)
|
||||
!
|
||||
DO i = 1, ldim
|
||||
|
@ -69,8 +70,8 @@ SUBROUTINE nsg_adj
|
|||
DO i = 1,ldim
|
||||
temp = temp + CONJG(vet(m1,i))*lambda(i)*vet(m2,i)
|
||||
ENDDO
|
||||
nsgnew(na,m1,viz,m2,is) = DBLE(temp)
|
||||
nsgnew(na,m2,viz,m1,is) = nsgnew(na,m1,viz,m2,is)
|
||||
nsgnew(m2,m1,viz,na,is) = DBLE(temp)
|
||||
nsgnew(m1,m2,viz,na,is) = nsgnew(m2,m1,viz,na,is)
|
||||
ENDDO
|
||||
ENDDO
|
||||
!
|
||||
|
@ -80,6 +81,9 @@ SUBROUTINE nsg_adj
|
|||
!
|
||||
ENDDO
|
||||
!
|
||||
! Uncomment the line below if needed (useful for debugging purposes)
|
||||
!CALL write_nsg
|
||||
!
|
||||
RETURN
|
||||
!
|
||||
END SUBROUTINE nsg_adj
|
||||
|
|
|
@ -1168,8 +1168,8 @@ MODULE pw_restart_new
|
|||
time_reversal = (.NOT.magnetic_sym) .AND. (.NOT.noinv)
|
||||
CALL inverse_s()
|
||||
CALL s_axis_to_cart()
|
||||
!! symmetry check - FIXME: is this needed?
|
||||
IF (nat > 0) CALL checkallsym( nat, tau, ityp)
|
||||
!! symmetry check - FIXME: must be done in a more consistent way
|
||||
!! IF (nat > 0) CALL checkallsym( nat, tau, ityp)
|
||||
!! Algorithmic info
|
||||
do_cutoff_2D = (output_obj%boundary_conditions%assume_isolated == "2D")
|
||||
CALL qexsd_copy_algorithmic_info ( output_obj%algorithmic_info, &
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
!
|
||||
! Copyright (C) 2013-2017 Quantum ESPRESSO group
|
||||
! Copyright (C) 2013-2020 Quantum ESPRESSO group
|
||||
! This file is distributed under the terms of the
|
||||
! GNU General Public License. See the file `License'
|
||||
! in the root directory of the present distribution,
|
||||
|
@ -33,6 +33,8 @@ SUBROUTINE run_pwscf( exit_status )
|
|||
!! @endnote
|
||||
!!
|
||||
!
|
||||
USE kinds, ONLY : DP
|
||||
USE mp, ONLY : mp_bcast, mp_sum
|
||||
USE io_global, ONLY : stdout, ionode, ionode_id
|
||||
USE parameters, ONLY : ntypx, npk
|
||||
USE upf_params, ONLY : lmaxx
|
||||
|
@ -53,6 +55,7 @@ SUBROUTINE run_pwscf( exit_status )
|
|||
USE qexsd_module, ONLY : qexsd_set_status
|
||||
USE funct, ONLY : dft_is_hybrid, stop_exx
|
||||
USE beef, ONLY : beef_energies
|
||||
USE ldaU, ONLY : lda_plus_u
|
||||
!
|
||||
USE gbuffers, ONLY : dev_buf
|
||||
!
|
||||
|
@ -233,8 +236,13 @@ SUBROUTINE run_pwscf( exit_status )
|
|||
!
|
||||
lbfgs=.FALSE.; lmd=.FALSE.
|
||||
WRITE( UNIT = stdout, FMT=9020 )
|
||||
!
|
||||
CALL reset_gvectors( )
|
||||
!
|
||||
! ... read atomic occupations for DFT+U(+V)
|
||||
!
|
||||
IF ( lda_plus_u ) CALL read_ns()
|
||||
!
|
||||
ELSE IF ( ions_status == 2 ) THEN
|
||||
!
|
||||
! ... check whether nonzero magnetization is real
|
||||
|
|
|
@ -671,3 +671,94 @@ SUBROUTINE write_nsg
|
|||
!
|
||||
END SUBROUTINE write_nsg
|
||||
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE read_ns()
|
||||
!---------------------------------------------------------------------
|
||||
!
|
||||
! This routine was written for the final SCF after vc-relax (M. Cococcioni).
|
||||
! The occupations ns/nsg also need to be read in order to reproduce
|
||||
! the right electronic ground state. When using Hubbard corrections
|
||||
! this might be different (i.e. have different ordering of states)
|
||||
! from that simply obtained from the superposition of free ions.
|
||||
! In other words the KS Hamiltonian (and its ground state) is also
|
||||
! functional of the Hubbard interaction parameters.
|
||||
!
|
||||
USE kinds, ONLY : DP
|
||||
USE mp, ONLY : mp_bcast
|
||||
USE mp_images, ONLY : intra_image_comm
|
||||
USE io_global, ONLY : ionode, ionode_id
|
||||
USE scf, ONLY : rho, v
|
||||
USE ldaU, ONLY : lda_plus_u_kind, nsg, v_nsg, hub_back
|
||||
USE noncollin_module, ONLY : noncolin
|
||||
USE io_files, ONLY : restart_dir
|
||||
!
|
||||
IMPLICIT NONE
|
||||
INTEGER :: iunocc, iunocc1, ierr
|
||||
CHARACTER (LEN=256) :: dirname
|
||||
REAL(DP) :: eth, eth1
|
||||
!
|
||||
dirname = restart_dir()
|
||||
!
|
||||
IF ( ionode ) THEN
|
||||
!
|
||||
OPEN ( NEWUNIT=iunocc, FILE = TRIM(dirname) // 'occup.txt', &
|
||||
FORM='formatted', STATUS='old', IOSTAT=ierr )
|
||||
IF (lda_plus_u_kind.EQ.0) THEN
|
||||
READ( UNIT = iunocc, FMT = *, iostat = ierr ) rho%ns
|
||||
IF (hub_back) THEN
|
||||
READ( UNIT = iunocc, FMT = * , iostat = ierr) rho%nsb
|
||||
ENDIF
|
||||
ELSEIF (lda_plus_u_kind.EQ.1) THEN
|
||||
IF (noncolin) THEN
|
||||
READ( UNIT = iunocc, FMT = *, iostat = ierr ) rho%ns_nc
|
||||
ELSE
|
||||
READ( UNIT = iunocc, FMT = *, iostat = ierr ) rho%ns
|
||||
ENDIF
|
||||
ELSEIF (lda_plus_u_kind.EQ.2) THEN
|
||||
READ( UNIT = iunocc, FMT = * , iostat = ierr) nsg
|
||||
ENDIF
|
||||
CLOSE(UNIT=iunocc,STATUS='keep')
|
||||
!
|
||||
ELSE
|
||||
!
|
||||
IF (lda_plus_u_kind.EQ.0) THEN
|
||||
rho%ns(:,:,:,:) = 0.D0
|
||||
IF (hub_back) rho%nsb(:,:,:,:) = 0.D0
|
||||
ELSEIF (lda_plus_u_kind.EQ.1) THEN
|
||||
IF (noncolin) THEN
|
||||
rho%ns_nc(:,:,:,:) = 0.D0
|
||||
ELSE
|
||||
rho%ns(:,:,:,:) = 0.D0
|
||||
ENDIF
|
||||
ELSEIF (lda_plus_u_kind.EQ.2) THEN
|
||||
nsg(:,:,:,:,:) = (0.d0, 0.d0)
|
||||
ENDIF
|
||||
!
|
||||
ENDIF
|
||||
!
|
||||
CALL mp_bcast( ierr, ionode_id, intra_image_comm )
|
||||
!
|
||||
IF (lda_plus_u_kind.EQ.0) THEN
|
||||
CALL mp_bcast(rho%ns, ionode_id, intra_image_comm)
|
||||
CALL v_hubbard (rho%ns, v%ns, eth)
|
||||
IF (hub_back) THEN
|
||||
CALL mp_bcast(rho%nsb, ionode_id, intra_image_comm)
|
||||
CALL v_hubbard_b (rho%nsb, v%nsb, eth1)
|
||||
eth = eth + eth1
|
||||
ENDIF
|
||||
ELSEIF (lda_plus_u_kind.EQ.1) THEN
|
||||
IF (noncolin) THEN
|
||||
CALL mp_bcast(rho%ns_nc, ionode_id, intra_image_comm)
|
||||
CALL v_hubbard_full_nc (rho%ns_nc, v%ns_nc, eth)
|
||||
ELSE
|
||||
CALL mp_bcast(rho%ns, ionode_id, intra_image_comm)
|
||||
CALL v_hubbard_full (rho%ns, v%ns, eth)
|
||||
ENDIF
|
||||
ELSEIF (lda_plus_u_kind.EQ.2) THEN
|
||||
CALL mp_bcast(nsg, ionode_id, intra_image_comm)
|
||||
CALL v_hubbard_extended (nsg, v_nsg, eth)
|
||||
ENDIF
|
||||
!
|
||||
RETURN
|
||||
!
|
||||
END SUBROUTINE read_ns
|
||||
|
|
|
@ -198,6 +198,10 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT ELPA_FOUND) OR
|
|||
NAMES elpa.h
|
||||
HINTS ${ELPA_DIR}
|
||||
PATH_SUFFIXES "include" "include/elpa")
|
||||
if(NOT ELPA_elpa.h_DIRS)
|
||||
file(GLOB ELPA_elpa.h_PATH "${ELPA_DIR}/include/elpa-20*/elpa/elpa.h")
|
||||
get_filename_component(ELPA_elpa.h_DIRS "${ELPA_elpa.h_PATH}" PATH)
|
||||
endif()
|
||||
else()
|
||||
set(ELPA_elpa.h_DIRS "ELPA_elpa.h_DIRS-NOTFOUND")
|
||||
find_path(ELPA_elpa.h_DIRS
|
||||
|
@ -210,6 +214,7 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT ELPA_FOUND) OR
|
|||
# If found, add path to cmake variable
|
||||
# ------------------------------------
|
||||
if (ELPA_elpa.h_DIRS)
|
||||
message(STATUS "elpa.h found in ${ELPA_elpa.h_DIRS}")
|
||||
set(ELPA_INCLUDE_DIRS "${ELPA_elpa.h_DIRS}")
|
||||
else ()
|
||||
set(ELPA_INCLUDE_DIRS "ELPA_INCLUDE_DIRS-NOTFOUND")
|
||||
|
@ -218,6 +223,12 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT ELPA_FOUND) OR
|
|||
endif()
|
||||
endif()
|
||||
|
||||
# If not defined, guess the version string
|
||||
if(NOT ELPA_VERSION_STRING)
|
||||
string(REGEX MATCH "elpa-20[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9][0-9]" CMAKE_MATCH_ELPA_VER "${ELPA_INCLUDE_DIRS}")
|
||||
string(REGEX MATCH "20[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9][0-9]" ELPA_VERSION_STRING "${CMAKE_MATCH_ELPA_VER}")
|
||||
message(STATUS "ELPA version ${ELPA_VERSION_STRING}")
|
||||
endif()
|
||||
|
||||
# Looking for lib
|
||||
# ---------------
|
||||
|
@ -354,7 +365,12 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT ELPA_FOUND) OR
|
|||
# test link
|
||||
unset(ELPA_WORKS CACHE)
|
||||
include(CheckFunctionExists)
|
||||
check_function_exists(elpa_dgetrf ELPA_WORKS)
|
||||
if(ELPA_VERSION_STRING AND ELPA_VERSION_STRING VERSION_LESS "2017")
|
||||
set(ELPA_TEST_FUNCTION get_elpa_row_col_comms)
|
||||
else()
|
||||
set(ELPA_TEST_FUNCTION elpa_init)
|
||||
endif()
|
||||
check_function_exists(${ELPA_TEST_FUNCTION} ELPA_WORKS)
|
||||
mark_as_advanced(ELPA_WORKS)
|
||||
|
||||
if(ELPA_WORKS)
|
||||
|
@ -368,7 +384,7 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT ELPA_FOUND) OR
|
|||
list(REMOVE_DUPLICATES ELPA_LINKER_FLAGS)
|
||||
else()
|
||||
if(NOT ELPA_FIND_QUIETLY)
|
||||
message(STATUS "Looking for elpa : test of elpa_dgetrf with
|
||||
message(STATUS "Looking for elpa : test of ${ELPA_TEST_FUNCTION} with
|
||||
elpa, cblas, cuda and lapack libraries fails")
|
||||
message(STATUS "CMAKE_REQUIRED_LIBRARIES: ${CMAKE_REQUIRED_LIBRARIES}")
|
||||
message(STATUS "CMAKE_REQUIRED_INCLUDES: ${CMAKE_REQUIRED_INCLUDES}")
|
||||
|
@ -413,4 +429,4 @@ else()
|
|||
find_package_handle_standard_args(ELPA DEFAULT_MSG
|
||||
ELPA_LIBRARIES
|
||||
ELPA_WORKS)
|
||||
endif()
|
||||
endif()
|
||||
|
|
|
@ -400,6 +400,19 @@ if(BLAS_FOUND
|
|||
endif()
|
||||
# Then try the search libs
|
||||
foreach(IT ${SCALAPACK_SEARCH_LIBS})
|
||||
# First try mkl_blacs_openmpi (OpenMPI derived)
|
||||
if(NOT ${_LIBRARIES})
|
||||
check_scalapack_libraries(
|
||||
${_LIBRARIES}
|
||||
BLAS
|
||||
${SCALAPACK_mkl_SEARCH_SYMBOL}
|
||||
""
|
||||
"${IT};mkl_blacs_openmpi_lp64"
|
||||
"${_BLAS_LIBRARIES}"
|
||||
""
|
||||
"${MPI_Fortran_LIBRARIES}")
|
||||
endif()
|
||||
# First try mkl_blacs_intelmpi (MPICH derived)
|
||||
if(NOT ${_LIBRARIES})
|
||||
check_scalapack_libraries(
|
||||
${_LIBRARIES}
|
||||
|
|
|
@ -738,6 +738,7 @@ if(NOT FFTW_INCLUDE_DIRS)
|
|||
list(APPEND _libdirs "${_libdir}/include")
|
||||
get_filename_component(_libdir ${_libdir} PATH)
|
||||
list(APPEND _libdirs "${_libdir}/include")
|
||||
unset(_libdir)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
# Check compiler version
|
||||
if(CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 4.9)
|
||||
message(FATAL_ERROR "Requires GCC 4.9 or higher ")
|
||||
endif()
|
||||
|
||||
if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)
|
||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-argument-mismatch")
|
||||
endif()
|
|
@ -1,20 +1,25 @@
|
|||
from __future__ import print_function
|
||||
import sys
|
||||
import subprocess as sp
|
||||
|
||||
have_yaml = True
|
||||
try:
|
||||
import yaml
|
||||
except:
|
||||
have_yaml = False
|
||||
|
||||
try:
|
||||
from StringIO import StringIO
|
||||
except ImportError:
|
||||
from io import BytesIO as StringIO
|
||||
have_yaml = False
|
||||
|
||||
try:
|
||||
from io import StringIO
|
||||
except ImportError:
|
||||
try:
|
||||
from StringIO import StringIO
|
||||
except ImportError:
|
||||
from io import BytesIO as StringIO
|
||||
|
||||
|
||||
print("\n\n This is a helper tool to check the details of your GPU before configuring QE.\n\n")
|
||||
print("""Remeber to load CUDA environemt and run this on the COMPUTE NODE
|
||||
if you are not sure that the frontend node shares
|
||||
print("""Remeber to load CUDA environemt and run this on the COMPUTE NODE
|
||||
if you are not sure that the frontend node shares
|
||||
the same configuration as the backend nodes\n\n""")
|
||||
|
||||
|
||||
|
@ -54,13 +59,11 @@ else:
|
|||
minor = str(5 if int(minor)>=5 else 0)
|
||||
if 'major' in line:
|
||||
_, major = line.split(':')
|
||||
|
||||
|
||||
if minor != "" and major != "":
|
||||
print("Compute capabilities for dev {}: {}.{}".format(str(devnum), major.strip(),minor.strip()))
|
||||
conf_cc=major.strip()+minor.strip()
|
||||
minor = ""; major = ""; devnum += 1
|
||||
|
||||
|
||||
print("\n If all compute capabilities match, configure QE with:")
|
||||
print("./configure --with-cuda=$CUDA_HOME --with-cuda-cc={} --with-cuda-runtime={}\n".format(conf_cc, conf_rt))
|
||||
|
||||
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
from __future__ import print_function
|
||||
import numpy as np
|
||||
|
||||
#1) Run dev-tools/mem_counter inside EPW/src
|
||||
#2) compile UtilXlib/mem_counter.f90 with -D__DEBUG flag
|
||||
#3) Run EPW
|
||||
#3) Run EPW
|
||||
#4) grep ' allocating' epw1.out > alloc.txt
|
||||
#5) grep 'deallocating' epw1.out > dealloc.txt
|
||||
#6) Run this script after having changed the correct allocation lengths
|
||||
|
@ -37,18 +38,18 @@ with open('dealloc.txt','r') as R:
|
|||
deall_found = [ False ] * dealloc_len
|
||||
|
||||
for ii in np.arange(alloc_len):
|
||||
print ii,' / ',alloc_len
|
||||
print(ii, ' / ', alloc_len)
|
||||
name = alloc_name[ii]
|
||||
|
||||
|
||||
found = False
|
||||
for jj in np.arange(dealloc_len):
|
||||
if name == dealloc_name[jj]:
|
||||
if (alloc_size[ii] == dealloc_size[jj] and deall_found[jj]==False ) :
|
||||
if alloc_size[ii] == dealloc_size[jj] and not deall_found[jj]:
|
||||
# We found the corresponding all/deall pair
|
||||
deall_found[jj] = True
|
||||
found = True
|
||||
break
|
||||
if (found == False):
|
||||
if not found:
|
||||
with open('mem_analyse.out','a') as O:
|
||||
O.write('We did not find a maching pair in '+str(alloc_sub[ii])+'\n')
|
||||
O.write('Allocate: '+str(name)+' '+str(alloc_size[ii])+'\n')
|
||||
|
@ -56,6 +57,3 @@ for ii in np.arange(alloc_len):
|
|||
# print 'We did not find a maching pair in ', alloc_sub[ii]
|
||||
# print 'Allocate: ',name,' ',alloc_size[ii]
|
||||
# print 'Deallocate: ',dealloc_name[jj],' ',dealloc_size[jj]
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ for file in *.bkp; do cp $file ${file%.bkp}; done
|
|||
|
||||
"""
|
||||
|
||||
from __future__ import print_function
|
||||
import os, sys, re
|
||||
from shutil import copyfile
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# (C) 2010 Norbert Nemec
|
||||
#
|
||||
|
|
|
@ -4,8 +4,9 @@
|
|||
if(FOX_ROOT)
|
||||
add_library(qe_fox INTERFACE)
|
||||
add_library(QE::FOX ALIAS qe_fox)
|
||||
target_link_libraries(qe_fox INTERFACE "${FOX_ROOT}/lib;-lFoX_fsys;-lFoX_utils;-lFoX_common;-lFoX_wxml;-lFoX_sax;-lFoX_dom")
|
||||
target_include_directories(qe_fox INTERFACE ${FOX_ROOT}/include)
|
||||
qe_install_targets(qe_fox)
|
||||
target_link_libraries(qe_fox INTERFACE "-L${FOX_ROOT}/lib;-lFoX_dom;-lFoX_sax;-lFoX_wxml;-lFoX_common;-lFoX_utils;-lFoX_fsys")
|
||||
target_include_directories(qe_fox INTERFACE ${FOX_ROOT}/finclude)
|
||||
elseif(QE_ENABLE_VENDOR_DEPS)
|
||||
message(STATUS "Installing QE::FOX via submodule")
|
||||
set(fox_targets
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Subproject commit e5392b772497f8597f6c3b2851e0c17da756bb64
|
|
@ -676,6 +676,7 @@ blas_line
|
|||
blas_libs
|
||||
f90rule
|
||||
SET_MAKE
|
||||
cuda_path
|
||||
cuda_extlibs
|
||||
cuda_libs
|
||||
cuda_fflags
|
||||
|
@ -773,6 +774,7 @@ enable_shared
|
|||
with_cuda
|
||||
with_cuda_cc
|
||||
with_cuda_runtime
|
||||
enable_cuda_env_check
|
||||
with_libxc
|
||||
with_libxc_prefix
|
||||
with_libxc_include
|
||||
|
@ -1421,6 +1423,9 @@ Optional Features:
|
|||
--enable-debug compile Fortran with debug flags (default: no)
|
||||
--enable-pedantic compile Fortran with pedantic flags (default: no)
|
||||
--enable-shared use shared libraries if available (default: yes)
|
||||
--enable-cuda-env-check=yes
|
||||
The configure script will check CUDA installation
|
||||
and report problems [default=yes]
|
||||
--enable-signals enable signal trapping (default: no)
|
||||
|
||||
Optional Packages:
|
||||
|
@ -4374,6 +4379,7 @@ test_ldflags="`echo $ldflags | sed 's/\$([^)]*)//g'`"
|
|||
NVCC=no
|
||||
CUDA_CFLAGS=
|
||||
CUDA_LDLIBS=
|
||||
cuda_path=
|
||||
cuda_fflags=
|
||||
cuda_libs=
|
||||
cuda_extlibs=
|
||||
|
@ -4406,6 +4412,13 @@ else
|
|||
fi
|
||||
|
||||
|
||||
# Check whether --enable-cuda-env-check was given.
|
||||
if test "${enable_cuda_env_check+set}" = set; then :
|
||||
enableval=$enable_cuda_env_check;
|
||||
else
|
||||
enable_cuda_env_check=yes
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if test "x$with_cuda" != "xno"
|
||||
|
@ -4627,7 +4640,7 @@ $as_echo "no" >&6; }
|
|||
fi
|
||||
|
||||
|
||||
if test "x$NVCC" = "xno"
|
||||
if test "x$NVCC" = "xno" && test "x$enable_cuda_env_check" = "xyes"
|
||||
then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find nvcc compiler. To enable CUDA, please add path to
|
||||
nvcc in the PATH environment variable and/or specify the path
|
||||
|
@ -4675,7 +4688,7 @@ EOF
|
|||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_compile_nvcc" >&5
|
||||
$as_echo "$ac_compile_nvcc" >&6; }
|
||||
|
||||
if test "x$ac_compile_nvcc" = "xno"
|
||||
if test "x$ac_compile_nvcc" = "xno" && test "x$enable_cuda_env_check" = "xyes"
|
||||
then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: CUDA compiler has problems." >&5
|
||||
$as_echo "$as_me: WARNING: CUDA compiler has problems." >&2;}
|
||||
|
@ -4693,7 +4706,9 @@ $as_echo "$as_me: WARNING: CUDA compiler has problems." >&2;}
|
|||
LIBS="$CUDA_LDLIBS $LIBS"
|
||||
|
||||
# And the header and the lib
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cuInit in -lcuda" >&5
|
||||
if test "x$enable_cuda_env_check" = "xyes"
|
||||
then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cuInit in -lcuda" >&5
|
||||
$as_echo_n "checking for cuInit in -lcuda... " >&6; }
|
||||
if ${ac_cv_lib_cuda_cuInit+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
|
@ -4743,7 +4758,7 @@ as_fn_error $? "Couldn't find libcuda
|
|||
See \`config.log' for more details" "$LINENO" 5; }
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cudaMalloc in -lcudart" >&5
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cudaMalloc in -lcudart" >&5
|
||||
$as_echo_n "checking for cudaMalloc in -lcudart... " >&6; }
|
||||
if ${ac_cv_lib_cudart_cudaMalloc+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
|
@ -4793,7 +4808,7 @@ as_fn_error $? "Couldn't find libcudart
|
|||
See \`config.log' for more details" "$LINENO" 5; }
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cublasInit in -lcublas" >&5
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cublasInit in -lcublas" >&5
|
||||
$as_echo_n "checking for cublasInit in -lcublas... " >&6; }
|
||||
if ${ac_cv_lib_cublas_cublasInit+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
|
@ -4843,7 +4858,7 @@ as_fn_error $? "Couldn't find libcublas
|
|||
See \`config.log' for more details" "$LINENO" 5; }
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cufftPlanMany in -lcufft" >&5
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cufftPlanMany in -lcufft" >&5
|
||||
$as_echo_n "checking for cufftPlanMany in -lcufft... " >&6; }
|
||||
if ${ac_cv_lib_cufft_cufftPlanMany+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
|
@ -4893,6 +4908,7 @@ as_fn_error $? "Couldn't find libcufft
|
|||
See \`config.log' for more details" "$LINENO" 5; }
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
new_cusolver="yes"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cusolverDnZhegvdx_bufferSize in -lcusolver" >&5
|
||||
|
@ -4951,20 +4967,25 @@ fi
|
|||
$as_echo "#define HAVE_CUDA 1" >>confdefs.h
|
||||
|
||||
try_dflags="$try_dflags -D__CUDA"
|
||||
cuda_extlibs="devxlib"
|
||||
cuda_libs="-Mcudalib=cufft,cublas,cusolver \$(TOPDIR)/external/devxlib/src/libdevXlib.a"
|
||||
cuda_fflags="-Mcuda=cc$with_cuda_cc,cuda$with_cuda_runtime"
|
||||
cuda_fflags="$cuda_fflags \$(MOD_FLAG)\$(TOPDIR)/external/devxlib/src"
|
||||
cuda_fflags="$cuda_fflags \$(MOD_FLAG)\$(TOPDIR)/external/devxlib/include"
|
||||
|
||||
if test ${new_cusolver} != yes; then
|
||||
cuda_fflags="-Mcuda=cc$with_cuda_cc,cuda$with_cuda_runtime \$(MOD_FLAG)\$(TOPDIR)/EIGENSOLVER_GPU/lib_eigsolve"
|
||||
cuda_extlibs="eigensolver"
|
||||
cuda_libs="-Mcudalib=cufft,cublas,cusolver \$(TOPDIR)/EIGENSOLVER_GPU/lib_eigsolve/lib_eigsolve.a"
|
||||
cuda_fflags="$cuda_fflags \$(MOD_FLAG)\$(TOPDIR)/EIGENSOLVER_GPU/lib_eigsolve"
|
||||
cuda_extlibs="$cuda_extlibs eigensolver"
|
||||
cuda_libs="$cuda_libs \$(TOPDIR)/EIGENSOLVER_GPU/lib_eigsolve/lib_eigsolve.a"
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Using legacy custom solver." >&5
|
||||
$as_echo "$as_me: WARNING: Using legacy custom solver." >&2;}
|
||||
else
|
||||
cuda_fflags="-Mcuda=cc$with_cuda_cc,cuda$with_cuda_runtime"
|
||||
cuda_libs="-Mcudalib=cufft,cublas,cusolver"
|
||||
try_dflags="$try_dflags -D__USE_CUSOLVER"
|
||||
fi
|
||||
ldflags="$ldflags -Mcuda=cc$with_cuda_cc,cuda$with_cuda_runtime"
|
||||
gpu_arch="$with_cuda_cc"
|
||||
gpu_runtime="$with_cuda_runtime"
|
||||
cuda_path="$CUDAPATH"
|
||||
fi
|
||||
|
||||
# Announcing the new variables
|
||||
|
@ -4981,6 +5002,7 @@ fi
|
|||
|
||||
|
||||
|
||||
|
||||
# Checking F90 rule...
|
||||
|
||||
|
||||
|
|
|
@ -21,6 +21,10 @@ EIGENSOLVER_GPU=v${EIGENSOLVER_VERSION}.tar.gz
|
|||
EIGENSOLVER_GPU_NAME=Eigensolver_gpu-${EIGENSOLVER_VERSION}
|
||||
EIGENSOLVER_GPU_URL=https://github.com/NVIDIA/Eigensolver_gpu/archive/${EIGENSOLVER_GPU}
|
||||
|
||||
# For DevXlib
|
||||
DEVXLIB_VERSION=master
|
||||
DEVXLIB_URL="https://gitlab.com/max-centre/components/devicexlib/-/archive/master/devicexlib-${DEVXLIB_VERSION}.tar.gz"
|
||||
|
||||
# MAIN target
|
||||
|
||||
all: libcuda
|
||||
|
@ -179,6 +183,32 @@ libcuda_eigensolver_clean:
|
|||
libcuda_eigensolver_veryclean:
|
||||
if test -d ../EIGENSOLVER_GPU; then (rm -R -f ../EIGENSOLVER_GPU ../${EIGENSOLVER_GPU_NAME}); fi
|
||||
|
||||
libcuda_devxlib :
|
||||
cd ../external/devxlib; \
|
||||
if test ! -e configure; then \
|
||||
wget $(DEVXLIB_URL) -O devxlib.tar.gz || curl $(DEVXLIB_URL) -o devxlib.tar.gz ; \
|
||||
tar xzf devxlib.tar.gz --strip-components=1 -C . ; \
|
||||
rm devxlib.tar.gz ; \
|
||||
fi; \
|
||||
if test ! -f make.inc; then \
|
||||
touch make.inc; \
|
||||
$(MAKE) clean; \
|
||||
./configure FC=$(F90) F77=$(F77) CC=$(CC) \
|
||||
--with-cuda=$(CUDA_PATH) \
|
||||
--with-cuda-cc=$(GPU_ARCH) \
|
||||
--with-cuda-runtime=$(CUDA_RUNTIME) \
|
||||
--disable-parallel \
|
||||
--enable-cuda-env-check=no; \
|
||||
fi; \
|
||||
make all
|
||||
|
||||
libcuda_devxlib_clean:
|
||||
cd ../external/devxlib; \
|
||||
if test -f make.inc; then ($(MAKE) clean); fi
|
||||
libcuda_devxlib_veryclean:
|
||||
cd ../external/devxlib; \
|
||||
if test -f make.inc; then ($(MAKE) distclean && rm make.inc); fi
|
||||
|
||||
###################################
|
||||
# BEEF
|
||||
###################################
|
||||
|
@ -208,6 +238,6 @@ libbeef_veryclean:
|
|||
# cleaning
|
||||
###################################
|
||||
|
||||
clean: lapack_clean elpa_clean iotk_clean fox_clean libcuda_eigensolver_clean libbeef_clean
|
||||
clean: lapack_clean elpa_clean iotk_clean fox_clean libcuda_eigensolver_clean libcuda_devxlib_clean libbeef_clean
|
||||
|
||||
veryclean: lapack_veryclean elpa_veryclean iotk_veryclean fox_clean libcuda_eigensolver_veryclean libbeef_veryclean
|
||||
veryclean: lapack_veryclean elpa_veryclean iotk_veryclean fox_clean libcuda_eigensolver_veryclean libcuda_devxlib_veryclean libbeef_veryclean
|
||||
|
|
|
@ -33,6 +33,7 @@ AC_DEFUN([X_AC_QE_CUDA], [
|
|||
NVCC=no
|
||||
CUDA_CFLAGS=
|
||||
CUDA_LDLIBS=
|
||||
cuda_path=
|
||||
cuda_fflags=
|
||||
cuda_libs=
|
||||
cuda_extlibs=
|
||||
|
@ -53,6 +54,10 @@ AC_ARG_WITH([cuda-runtime],
|
|||
[],
|
||||
[with_cuda_runtime=10.1])
|
||||
|
||||
AC_ARG_ENABLE([cuda-env-check],
|
||||
[AS_HELP_STRING([--enable-cuda-env-check=yes],[The configure script will check CUDA installation and report problems @<:@default=yes@:>@])],
|
||||
[],
|
||||
[enable_cuda_env_check=yes])
|
||||
|
||||
|
||||
if test "x$with_cuda" != "xno"
|
||||
|
@ -89,7 +94,7 @@ then
|
|||
# Checking for nvcc
|
||||
# -----------------------------------------
|
||||
AC_PATH_PROG([NVCC],[nvcc],[no],[$PATH:$CUDAPATH/bin])
|
||||
if test "x$NVCC" = "xno"
|
||||
if test "x$NVCC" = "xno" && test "x$enable_cuda_env_check" = "xyes"
|
||||
then
|
||||
AC_MSG_WARN([Cannot find nvcc compiler. To enable CUDA, please add path to
|
||||
nvcc in the PATH environment variable and/or specify the path
|
||||
|
@ -132,7 +137,7 @@ EOF
|
|||
rm -f conftest.cu conftest.o
|
||||
AC_MSG_RESULT([$ac_compile_nvcc])
|
||||
|
||||
if test "x$ac_compile_nvcc" = "xno"
|
||||
if test "x$ac_compile_nvcc" = "xno" && test "x$enable_cuda_env_check" = "xyes"
|
||||
then
|
||||
AC_MSG_WARN([CUDA compiler has problems.])
|
||||
fi
|
||||
|
@ -149,10 +154,13 @@ EOF
|
|||
LIBS="$CUDA_LDLIBS $LIBS"
|
||||
|
||||
# And the header and the lib
|
||||
AC_CHECK_LIB([cuda], [cuInit], [], AC_MSG_FAILURE([Couldn't find libcuda]))
|
||||
AC_CHECK_LIB([cudart], [cudaMalloc], [], AC_MSG_FAILURE([Couldn't find libcudart]))
|
||||
AC_CHECK_LIB([cublas], [cublasInit], [], AC_MSG_FAILURE([Couldn't find libcublas]))
|
||||
AC_CHECK_LIB([cufft], [cufftPlanMany], [], AC_MSG_FAILURE([Couldn't find libcufft]))
|
||||
if test "x$enable_cuda_env_check" = "xyes"
|
||||
then
|
||||
AC_CHECK_LIB([cuda], [cuInit], [], AC_MSG_FAILURE([Couldn't find libcuda]))
|
||||
AC_CHECK_LIB([cudart], [cudaMalloc], [], AC_MSG_FAILURE([Couldn't find libcudart]))
|
||||
AC_CHECK_LIB([cublas], [cublasInit], [], AC_MSG_FAILURE([Couldn't find libcublas]))
|
||||
AC_CHECK_LIB([cufft], [cufftPlanMany], [], AC_MSG_FAILURE([Couldn't find libcufft]))
|
||||
fi
|
||||
|
||||
new_cusolver="yes"
|
||||
AC_CHECK_LIB([cusolver], [cusolverDnZhegvdx_bufferSize], [], new_cusolver="no")
|
||||
|
@ -163,19 +171,24 @@ EOF
|
|||
|
||||
AC_DEFINE(HAVE_CUDA,1,[Define if we have CUDA])
|
||||
try_dflags="$try_dflags -D__CUDA"
|
||||
cuda_extlibs="devxlib"
|
||||
cuda_libs="-Mcudalib=cufft,cublas,cusolver \$(TOPDIR)/external/devxlib/src/libdevXlib.a"
|
||||
cuda_fflags="-Mcuda=cc$with_cuda_cc,cuda$with_cuda_runtime"
|
||||
cuda_fflags="$cuda_fflags \$(MOD_FLAG)\$(TOPDIR)/external/devxlib/src"
|
||||
cuda_fflags="$cuda_fflags \$(MOD_FLAG)\$(TOPDIR)/external/devxlib/include"
|
||||
|
||||
if test ${new_cusolver} != yes; then
|
||||
cuda_fflags="-Mcuda=cc$with_cuda_cc,cuda$with_cuda_runtime \$(MOD_FLAG)\$(TOPDIR)/EIGENSOLVER_GPU/lib_eigsolve"
|
||||
cuda_extlibs="eigensolver"
|
||||
cuda_libs="-Mcudalib=cufft,cublas,cusolver \$(TOPDIR)/EIGENSOLVER_GPU/lib_eigsolve/lib_eigsolve.a"
|
||||
cuda_fflags="$cuda_fflags \$(MOD_FLAG)\$(TOPDIR)/EIGENSOLVER_GPU/lib_eigsolve"
|
||||
cuda_extlibs="$cuda_extlibs eigensolver"
|
||||
cuda_libs="$cuda_libs \$(TOPDIR)/EIGENSOLVER_GPU/lib_eigsolve/lib_eigsolve.a"
|
||||
AC_MSG_WARN([Using legacy custom solver.])
|
||||
else
|
||||
cuda_fflags="-Mcuda=cc$with_cuda_cc,cuda$with_cuda_runtime"
|
||||
cuda_libs="-Mcudalib=cufft,cublas,cusolver"
|
||||
try_dflags="$try_dflags -D__USE_CUSOLVER"
|
||||
fi
|
||||
ldflags="$ldflags -Mcuda=cc$with_cuda_cc,cuda$with_cuda_runtime"
|
||||
gpu_arch="$with_cuda_cc"
|
||||
gpu_runtime="$with_cuda_runtime"
|
||||
cuda_path="$CUDAPATH"
|
||||
fi
|
||||
|
||||
# Announcing the new variables
|
||||
|
@ -190,4 +203,5 @@ AC_SUBST(gpu_runtime)
|
|||
AC_SUBST(cuda_fflags)
|
||||
AC_SUBST(cuda_libs)
|
||||
AC_SUBST(cuda_extlibs)
|
||||
AC_SUBST(cuda_path)
|
||||
])
|
||||
|
|
|
@ -84,6 +84,9 @@ F90 = @f90@
|
|||
CC = @cc@
|
||||
F77 = @f77@
|
||||
|
||||
# CUDA Toolkit path
|
||||
CUDA_PATH=@cuda_path@
|
||||
|
||||
# GPU architecture (Kepler: 35, Pascal: 60, Volta: 70 )
|
||||
GPU_ARCH=@gpu_arch@
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#! /usr/bin/python -tt
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from __future__ import absolute_import
|
||||
from __future__ import division
|
||||
from __future__ import print_function
|
||||
|
||||
from builtins import input
|
||||
from getpass import getpass
|
||||
from smtplib import SMTP
|
||||
|
||||
|
@ -14,7 +14,6 @@ name and password would allow to send e-mail through it.
|
|||
"""
|
||||
|
||||
|
||||
|
||||
SMTP_HOST = 'smtp.gmail.com:587'
|
||||
LOCAL_HOST = ''
|
||||
|
||||
|
@ -28,12 +27,12 @@ def main():
|
|||
|
||||
# server.ehlo()
|
||||
# print(server.ehlo())
|
||||
|
||||
|
||||
server.starttls()
|
||||
|
||||
print(server.ehlo(LOCAL_HOST))
|
||||
|
||||
user = raw_input('user: ')
|
||||
user = input('user: ')
|
||||
password = getpass('password: ')
|
||||
|
||||
print(server.login(user, password))
|
||||
|
@ -41,17 +40,17 @@ def main():
|
|||
fromaddr = 'testfarmqef@gmail.com'
|
||||
toaddrs = 'samuel.pon@gmail.com'
|
||||
msg = "\r\n".join([
|
||||
"From: testfarmqef@gmail.com",
|
||||
"To: samuel.pon@gmail.com",
|
||||
"Subject: Buildbot",
|
||||
"",
|
||||
"Why, oh why"
|
||||
])
|
||||
"From: testfarmqef@gmail.com",
|
||||
"To: samuel.pon@gmail.com",
|
||||
"Subject: Buildbot",
|
||||
"",
|
||||
"Why, oh why"
|
||||
])
|
||||
|
||||
|
||||
server.sendmail(fromaddr, toaddrs, msg)
|
||||
server.sendmail(fromaddr, toaddrs, msg)
|
||||
server.close()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
|
|
|
@ -1,20 +1,19 @@
|
|||
#
|
||||
# Post-processing script QE --> EPW
|
||||
# Post-processing script QE --> EPW
|
||||
# 14/07/2015 - Samuel Ponce
|
||||
#
|
||||
|
||||
from builtins import input
|
||||
import numpy as np
|
||||
import os
|
||||
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
prefix = str(user_input)
|
||||
# Enter the number of irr. q-points
|
||||
prefix = input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the number of irreducible q-points\n')
|
||||
nqpt = user_input
|
||||
# Enter the number of irr. q-points
|
||||
nqpt = input('Enter the number of irreducible q-points\n')
|
||||
try:
|
||||
nqpt = int(user_input)
|
||||
nqpt = int(nqpt)
|
||||
except ValueError:
|
||||
raise Exception('The value you enter is not an integer!')
|
||||
|
||||
|
@ -30,5 +29,3 @@ for iqpt in np.arange(1,nqpt+1):
|
|||
else:
|
||||
os.system('cp _ph0/'+prefix+'.q_'+str(iqpt)+'/'+prefix+'.dvscf1 save/'+prefix+'.dvscf_q'+label)
|
||||
os.system('rm -f _ph0/'+prefix+'.q_'+str(iqpt)+'/*wfc*')
|
||||
|
||||
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
from __future__ import print_function
|
||||
import numpy as np
|
||||
|
||||
tot = 0
|
||||
tot = 0
|
||||
|
||||
for ii in np.arange(0,1,0.25):
|
||||
for jj in np.arange(0,1,0.25):
|
||||
for kk in np.arange(0,1,0.25):
|
||||
print ii,' ',jj,' ',kk,' ',1.0/64
|
||||
for ii in np.arange(0, 1, 0.25):
|
||||
for jj in np.arange(0, 1, 0.25):
|
||||
for kk in np.arange(0, 1, 0.25):
|
||||
print(ii, ' ', jj, ' ', kk, ' ', 1.0 / 64)
|
||||
tot += 1
|
||||
|
||||
print tot
|
||||
print(tot)
|
||||
|
|
|
@ -1,20 +1,19 @@
|
|||
#
|
||||
# Post-processing script QE --> EPW
|
||||
# Post-processing script QE --> EPW
|
||||
# 14/07/2015 - Samuel Ponce
|
||||
#
|
||||
|
||||
from builtins import input
|
||||
import numpy as np
|
||||
import os
|
||||
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
prefix = str(user_input)
|
||||
# Enter the number of irr. q-points
|
||||
prefix = input('Enter the prefix used for PH calculations (e.g. diam)\n')
|
||||
|
||||
# Enter the number of irr. q-points
|
||||
user_input = raw_input('Enter the number of irreducible q-points\n')
|
||||
nqpt = user_input
|
||||
# Enter the number of irr. q-points
|
||||
nqpt = input('Enter the number of irreducible q-points\n')
|
||||
try:
|
||||
nqpt = int(user_input)
|
||||
nqpt = int(nqpt)
|
||||
except ValueError:
|
||||
raise Exception('The value you enter is not an integer!')
|
||||
|
||||
|
@ -28,4 +27,3 @@ for iqpt in np.arange(1,nqpt+1):
|
|||
else:
|
||||
os.system('cp _ph0/'+prefix+'.q_'+str(iqpt)+'/'+prefix+'.dvscf1 save/'+prefix+'.dvscf_q'+label)
|
||||
os.system('rm -f _ph0/'+prefix+'.q_'+str(iqpt)+'/*wfc*')
|
||||
|
||||
|
|
|
@ -0,0 +1,889 @@
|
|||
|
||||
Program PWSCF v.6.6 starts on 7Oct2020 at 10:28:16
|
||||
|
||||
This program is part of the open-source Quantum ESPRESSO suite
|
||||
for quantum simulation of materials; please cite
|
||||
"P. Giannozzi et al., J. Phys.:Condens. Matter 21 395502 (2009);
|
||||
"P. Giannozzi et al., J. Phys.:Condens. Matter 29 465901 (2017);
|
||||
URL http://www.quantum-espresso.org",
|
||||
in publications or presentations arising from this work. More details at
|
||||
http://www.quantum-espresso.org/quote
|
||||
|
||||
Parallel version (MPI), running on 1 processors
|
||||
|
||||
MPI processes distributed on 1 nodes
|
||||
Reading input from lda+U+V-user_ns.in
|
||||
|
||||
Current dimensions of program PWSCF are:
|
||||
Max number of different atomic species (ntypx) = 10
|
||||
Max number of k-points (npk) = 40000
|
||||
Max angular momentum in pseudopotentials (lmaxx) = 3
|
||||
|
||||
Reading Hubbard V parameters from the input...
|
||||
|
||||
Message from routine volume:
|
||||
axis vectors are left-handed
|
||||
file O.pz-rrkjus.UPF: wavefunction(s) 2S renormalized
|
||||
file Fe.pz-nd-rrkjus.UPF: wavefunction(s) 4S renormalized
|
||||
file Fe.pz-nd-rrkjus.UPF: wavefunction(s) 4S renormalized
|
||||
|
||||
Subspace diagonalization in iterative solution of the eigenvalue problem:
|
||||
a serial algorithm will be used
|
||||
|
||||
Message from routine setup:
|
||||
using ibrav=0 with symmetry is DISCOURAGED, use correct ibrav instead
|
||||
First shells distances (in Bohr):
|
||||
shell: 1 0.000000
|
||||
shell: 2 4.095000
|
||||
shell: 3 5.791205
|
||||
shell: 4 7.092748
|
||||
shell: 5 8.190000
|
||||
shell: 6 9.156698
|
||||
shell: 7 10.030660
|
||||
|
||||
i j dist (Bohr) stan-stan stan-bac bac-bac bac-stan
|
||||
1 1 0.00000000 V = 0.0000 0.0000 0.0000 0.0000
|
||||
1 107 21.27824417 V = 0.8000 0.0000 0.0000 0.0000
|
||||
2 2 0.00000000 V = 0.0000 0.0000 0.0000 0.0000
|
||||
2 3 21.27824417 V = 0.8000 0.0000 0.0000 0.0000
|
||||
3 2 21.27824417 V = 0.8000 0.0000 0.0000 0.0000
|
||||
3 3 0.00000000 V = 4.3000 0.0000 0.0000 0.0000
|
||||
3 5 21.27824417 V = 0.8000 0.0000 0.0000 0.0000
|
||||
4 4 0.00000000 V = 4.3000 0.0000 0.0000 0.0000
|
||||
|
||||
G-vector sticks info
|
||||
--------------------
|
||||
sticks: dense smooth PW G-vecs: dense smooth PW
|
||||
Sum 1061 539 163 17255 6111 1081
|
||||
|
||||
|
||||
|
||||
bravais-lattice index = 0
|
||||
lattice parameter (alat) = 8.1900 a.u.
|
||||
unit-cell volume = 274.6766 (a.u.)^3
|
||||
number of atoms/cell = 4
|
||||
number of atomic types = 3
|
||||
number of electrons = 28.00
|
||||
number of Kohn-Sham states= 20
|
||||
kinetic-energy cutoff = 30.0000 Ry
|
||||
charge density cutoff = 240.0000 Ry
|
||||
convergence threshold = 1.0E-08
|
||||
mixing beta = 0.3000
|
||||
number of iterations used = 8 plain mixing
|
||||
Exchange-correlation= SLA PZ NOGX NOGC
|
||||
( 1 1 0 0 0 0 0)
|
||||
|
||||
celldm(1)= 8.190000 celldm(2)= 0.000000 celldm(3)= 0.000000
|
||||
celldm(4)= 0.000000 celldm(5)= 0.000000 celldm(6)= 0.000000
|
||||
|
||||
crystal axes: (cart. coord. in units of alat)
|
||||
a(1) = ( 0.500000 0.500000 1.000000 )
|
||||
a(2) = ( 0.500000 1.000000 0.500000 )
|
||||
a(3) = ( 1.000000 0.500000 0.500000 )
|
||||
|
||||
reciprocal axes: (cart. coord. in units 2 pi/alat)
|
||||
b(1) = ( -0.500000 -0.500000 1.500000 )
|
||||
b(2) = ( -0.500000 1.500000 -0.500000 )
|
||||
b(3) = ( 1.500000 -0.500000 -0.500000 )
|
||||
|
||||
|
||||
PseudoPot. # 1 for O read from file:
|
||||
/scratch/timrov/QE_GitLab_Timrov/tmp4/q-e/test-suite/..//pseudo/O.pz-rrkjus.UPF
|
||||
MD5 check sum: b574877712b4ae31214c077877edcb7d
|
||||
Pseudo is Ultrasoft, Zval = 6.0
|
||||
Generated by new atomic code, or converted to UPF format
|
||||
Using radial grid of 1269 points, 4 beta functions with:
|
||||
l(1) = 0
|
||||
l(2) = 0
|
||||
l(3) = 1
|
||||
l(4) = 1
|
||||
Q(r) pseudized with 0 coefficients
|
||||
|
||||
|
||||
PseudoPot. # 2 for Fe read from file:
|
||||
/scratch/timrov/QE_GitLab_Timrov/tmp4/q-e/test-suite/..//pseudo/Fe.pz-nd-rrkjus.UPF
|
||||
MD5 check sum: b5eb2b1fd79b39c9eac5f7a31bc313a7
|
||||
Pseudo is Ultrasoft + core correction, Zval = 8.0
|
||||
Generated by new atomic code, or converted to UPF format
|
||||
Using radial grid of 957 points, 6 beta functions with:
|
||||
l(1) = 0
|
||||
l(2) = 0
|
||||
l(3) = 1
|
||||
l(4) = 1
|
||||
l(5) = 2
|
||||
l(6) = 2
|
||||
Q(r) pseudized with 0 coefficients
|
||||
|
||||
|
||||
PseudoPot. # 3 for Fe read from file:
|
||||
/scratch/timrov/QE_GitLab_Timrov/tmp4/q-e/test-suite/..//pseudo/Fe.pz-nd-rrkjus.UPF
|
||||
MD5 check sum: b5eb2b1fd79b39c9eac5f7a31bc313a7
|
||||
Pseudo is Ultrasoft + core correction, Zval = 8.0
|
||||
Generated by new atomic code, or converted to UPF format
|
||||
Using radial grid of 957 points, 6 beta functions with:
|
||||
l(1) = 0
|
||||
l(2) = 0
|
||||
l(3) = 1
|
||||
l(4) = 1
|
||||
l(5) = 2
|
||||
l(6) = 2
|
||||
Q(r) pseudized with 0 coefficients
|
||||
|
||||
|
||||
atomic species valence mass pseudopotential
|
||||
O1 6.00 1.00000 O ( 1.00)
|
||||
Fe1 8.00 1.00000 Fe( 1.00)
|
||||
Fe2 8.00 1.00000 Fe( 1.00)
|
||||
|
||||
Starting magnetic structure
|
||||
atomic species magnetization
|
||||
O1 0.000
|
||||
Fe1 0.500
|
||||
Fe2 -0.500
|
||||
|
||||
|
||||
|
||||
12 Sym. Ops., with inversion, found
|
||||
|
||||
|
||||
|
||||
Cartesian axes
|
||||
|
||||
site n. atom positions (alat units)
|
||||
1 O1 tau( 1) = ( 0.5000000 0.5000000 0.5000000 )
|
||||
2 O1 tau( 2) = ( 1.5000000 1.5000000 1.5000000 )
|
||||
3 Fe1 tau( 3) = ( 0.0000000 0.0000000 0.0000000 )
|
||||
4 Fe2 tau( 4) = ( 1.0000000 1.0000000 1.0000000 )
|
||||
|
||||
number of k points= 4 Gaussian smearing, width (Ry)= 0.0100
|
||||
cart. coord. in units 2pi/alat
|
||||
k( 1) = ( 0.0000000 0.0000000 0.0000000), wk = 0.1250000
|
||||
k( 2) = ( -0.7500000 0.2500000 0.2500000), wk = 0.3750000
|
||||
k( 3) = ( -0.5000000 -0.5000000 0.5000000), wk = 0.3750000
|
||||
k( 4) = ( -0.2500000 -0.2500000 -0.2500000), wk = 0.1250000
|
||||
|
||||
Dense grid: 17255 G-vectors FFT dimensions: ( 50, 50, 50)
|
||||
|
||||
Smooth grid: 6111 G-vectors FFT dimensions: ( 36, 36, 36)
|
||||
|
||||
Estimated max dynamical RAM per process > 88.18 MB
|
||||
|
||||
Check: negative core charge= -0.000003
|
||||
Generating pointlists ...
|
||||
new r_m : 0.2063 (alat units) 1.6892 (a.u.) for type 1
|
||||
new r_m : 0.2063 (alat units) 1.6892 (a.u.) for type 2
|
||||
new r_m : 0.2063 (alat units) 1.6892 (a.u.) for type 3
|
||||
|
||||
Initial potential from superposition of free atoms
|
||||
|
||||
starting charge 27.99905, renormalised to 28.00000
|
||||
Number of +U iterations with fixed ns = 0
|
||||
Starting occupations:
|
||||
--- enter write_nsg ---
|
||||
Atom: 1 Spin: 1
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.667
|
||||
1.000 0.000 0.000
|
||||
0.667
|
||||
0.000 1.000 0.000
|
||||
0.667
|
||||
0.000 0.000 1.000
|
||||
occupation matrix before diagonalization:
|
||||
0.667 0.000 0.000
|
||||
0.000 0.667 0.000
|
||||
0.000 0.000 0.667
|
||||
Atom: 2 Spin: 1
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.667
|
||||
1.000 0.000 0.000
|
||||
0.667
|
||||
0.000 1.000 0.000
|
||||
0.667
|
||||
0.000 0.000 1.000
|
||||
occupation matrix before diagonalization:
|
||||
0.667 0.000 0.000
|
||||
0.000 0.667 0.000
|
||||
0.000 0.000 0.667
|
||||
Atom: 3 Spin: 1
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
1.000
|
||||
1.000 0.000 0.000 0.000 0.000
|
||||
1.000
|
||||
0.000 1.000 0.000 0.000 0.000
|
||||
1.000
|
||||
0.000 0.000 1.000 0.000 0.000
|
||||
1.000
|
||||
0.000 0.000 0.000 1.000 0.000
|
||||
1.000
|
||||
0.000 0.000 0.000 0.000 1.000
|
||||
occupation matrix before diagonalization:
|
||||
1.000 0.000 0.000 0.000 0.000
|
||||
0.000 1.000 0.000 0.000 0.000
|
||||
0.000 0.000 1.000 0.000 0.000
|
||||
0.000 0.000 0.000 1.000 0.000
|
||||
0.000 0.000 0.000 0.000 1.000
|
||||
Atom: 4 Spin: 1
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.200
|
||||
1.000 0.000 0.000 0.000 0.000
|
||||
0.200
|
||||
0.000 1.000 0.000 0.000 0.000
|
||||
0.200
|
||||
0.000 0.000 1.000 0.000 0.000
|
||||
0.200
|
||||
0.000 0.000 0.000 1.000 0.000
|
||||
0.200
|
||||
0.000 0.000 0.000 0.000 1.000
|
||||
occupation matrix before diagonalization:
|
||||
0.200 0.000 0.000 0.000 0.000
|
||||
0.000 0.200 0.000 0.000 0.000
|
||||
0.000 0.000 0.200 0.000 0.000
|
||||
0.000 0.000 0.000 0.200 0.000
|
||||
0.000 0.000 0.000 0.000 0.200
|
||||
Atom: 1 Spin: 2
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.667
|
||||
1.000 0.000 0.000
|
||||
0.667
|
||||
0.000 1.000 0.000
|
||||
0.667
|
||||
0.000 0.000 1.000
|
||||
occupation matrix before diagonalization:
|
||||
0.667 0.000 0.000
|
||||
0.000 0.667 0.000
|
||||
0.000 0.000 0.667
|
||||
Atom: 2 Spin: 2
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.667
|
||||
1.000 0.000 0.000
|
||||
0.667
|
||||
0.000 1.000 0.000
|
||||
0.667
|
||||
0.000 0.000 1.000
|
||||
occupation matrix before diagonalization:
|
||||
0.667 0.000 0.000
|
||||
0.000 0.667 0.000
|
||||
0.000 0.000 0.667
|
||||
Atom: 3 Spin: 2
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.200
|
||||
1.000 0.000 0.000 0.000 0.000
|
||||
0.200
|
||||
0.000 1.000 0.000 0.000 0.000
|
||||
0.200
|
||||
0.000 0.000 1.000 0.000 0.000
|
||||
0.200
|
||||
0.000 0.000 0.000 1.000 0.000
|
||||
0.200
|
||||
0.000 0.000 0.000 0.000 1.000
|
||||
occupation matrix before diagonalization:
|
||||
0.200 0.000 0.000 0.000 0.000
|
||||
0.000 0.200 0.000 0.000 0.000
|
||||
0.000 0.000 0.200 0.000 0.000
|
||||
0.000 0.000 0.000 0.200 0.000
|
||||
0.000 0.000 0.000 0.000 0.200
|
||||
Atom: 4 Spin: 2
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
1.000
|
||||
1.000 0.000 0.000 0.000 0.000
|
||||
1.000
|
||||
0.000 1.000 0.000 0.000 0.000
|
||||
1.000
|
||||
0.000 0.000 1.000 0.000 0.000
|
||||
1.000
|
||||
0.000 0.000 0.000 1.000 0.000
|
||||
1.000
|
||||
0.000 0.000 0.000 0.000 1.000
|
||||
occupation matrix before diagonalization:
|
||||
1.000 0.000 0.000 0.000 0.000
|
||||
0.000 1.000 0.000 0.000 0.000
|
||||
0.000 0.000 1.000 0.000 0.000
|
||||
0.000 0.000 0.000 1.000 0.000
|
||||
0.000 0.000 0.000 0.000 1.000
|
||||
atom 1 Tr[ns(na)]= 4.0000000
|
||||
atom 1 Mag[ns(na)]= 0.0000000
|
||||
atom 2 Tr[ns(na)]= 4.0000000
|
||||
atom 2 Mag[ns(na)]= 0.0000000
|
||||
atom 3 Tr[ns(na)]= 6.0000000
|
||||
atom 3 Mag[ns(na)]= 4.0000000
|
||||
atom 4 Tr[ns(na)]= 6.0000000
|
||||
atom 4 Mag[ns(na)]= -4.0000000
|
||||
--- exit write_nsg ---
|
||||
Atomic wfc used for LDA+U Projector are orthogonalized
|
||||
Starting wfcs are 20 randomized atomic wfcs
|
||||
|
||||
total cpu time spent up to now is 1.2 secs
|
||||
|
||||
Self-consistent Calculation
|
||||
|
||||
iteration # 1 ecut= 30.00 Ry beta= 0.30
|
||||
Davidson diagonalization with overlap
|
||||
ethr = 1.00E-02, avg # of iterations = 2.2
|
||||
--- enter write_nsg ---
|
||||
Atom: 1 Spin: 1
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.943
|
||||
0.737 0.673 0.064
|
||||
0.943
|
||||
-0.352 0.462 -0.814
|
||||
0.957
|
||||
-0.577 0.577 0.577
|
||||
occupation matrix before diagonalization:
|
||||
0.948 -0.005 -0.005
|
||||
-0.005 0.948 0.005
|
||||
-0.005 0.005 0.948
|
||||
Atom: 2 Spin: 1
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.943
|
||||
0.747 0.659 0.088
|
||||
0.943
|
||||
-0.330 0.482 -0.812
|
||||
0.957
|
||||
-0.577 0.577 0.577
|
||||
occupation matrix before diagonalization:
|
||||
0.948 -0.005 -0.005
|
||||
-0.005 0.948 0.005
|
||||
-0.005 0.005 0.948
|
||||
Atom: 3 Spin: 1
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.994
|
||||
0.485 0.078 -0.153 -0.854 -0.076
|
||||
0.994
|
||||
0.854 -0.132 -0.001 0.485 -0.133
|
||||
0.995
|
||||
0.175 0.625 0.123 0.068 0.748
|
||||
0.995
|
||||
-0.068 0.503 -0.793 0.175 -0.290
|
||||
0.995
|
||||
-0.000 0.577 0.577 0.000 -0.577
|
||||
occupation matrix before diagonalization:
|
||||
0.994 0.000 0.000 0.000 0.000
|
||||
0.000 0.995 0.000 0.000 -0.000
|
||||
0.000 0.000 0.995 -0.000 -0.000
|
||||
0.000 0.000 -0.000 0.994 -0.000
|
||||
0.000 -0.000 -0.000 -0.000 0.995
|
||||
Atom: 4 Spin: 1
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.077
|
||||
-0.059 0.049 -0.052 0.996 -0.003
|
||||
0.077
|
||||
-0.996 -0.032 -0.026 -0.059 -0.058
|
||||
0.209
|
||||
0.000 -0.577 -0.577 -0.000 0.577
|
||||
0.238
|
||||
-0.067 0.130 0.631 0.025 0.761
|
||||
0.238
|
||||
-0.025 0.804 -0.514 -0.067 0.290
|
||||
occupation matrix before diagonalization:
|
||||
0.077 -0.005 -0.005 0.000 -0.009
|
||||
-0.005 0.227 -0.009 -0.008 0.009
|
||||
-0.005 -0.009 0.227 0.008 0.009
|
||||
0.000 -0.008 0.008 0.077 -0.000
|
||||
-0.009 0.009 0.009 -0.000 0.227
|
||||
Atom: 1 Spin: 2
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.943
|
||||
0.722 0.691 0.031
|
||||
0.943
|
||||
-0.381 0.435 -0.816
|
||||
0.957
|
||||
-0.577 0.577 0.577
|
||||
occupation matrix before diagonalization:
|
||||
0.947 -0.005 -0.005
|
||||
-0.005 0.947 0.005
|
||||
-0.005 0.005 0.947
|
||||
Atom: 2 Spin: 2
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.943
|
||||
0.722 0.691 0.031
|
||||
0.943
|
||||
-0.381 0.435 -0.816
|
||||
0.957
|
||||
-0.577 0.577 0.577
|
||||
occupation matrix before diagonalization:
|
||||
0.947 -0.005 -0.005
|
||||
-0.005 0.947 0.005
|
||||
-0.005 0.005 0.947
|
||||
Atom: 3 Spin: 2
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.077
|
||||
0.418 -0.034 0.060 -0.905 0.025
|
||||
0.077
|
||||
-0.905 -0.049 -0.005 -0.418 -0.054
|
||||
0.208
|
||||
0.000 -0.577 -0.577 -0.000 0.577
|
||||
0.237
|
||||
-0.070 0.175 0.602 0.022 0.776
|
||||
0.237
|
||||
-0.022 0.795 -0.549 -0.070 0.247
|
||||
occupation matrix before diagonalization:
|
||||
0.077 -0.005 -0.005 0.000 -0.010
|
||||
-0.005 0.227 -0.009 -0.008 0.009
|
||||
-0.005 -0.009 0.227 0.008 0.009
|
||||
0.000 -0.008 0.008 0.077 -0.000
|
||||
-0.010 0.009 0.009 -0.000 0.227
|
||||
Atom: 4 Spin: 2
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.994
|
||||
-0.496 -0.084 0.170 0.843 0.086
|
||||
0.994
|
||||
-0.843 0.148 -0.001 -0.496 0.146
|
||||
0.995
|
||||
-0.196 -0.608 -0.145 -0.070 -0.753
|
||||
0.995
|
||||
-0.070 0.518 -0.785 0.196 -0.267
|
||||
0.995
|
||||
0.000 0.577 0.577 0.000 -0.577
|
||||
occupation matrix before diagonalization:
|
||||
0.994 0.000 0.000 0.000 0.000
|
||||
0.000 0.995 0.000 0.000 -0.000
|
||||
0.000 0.000 0.995 -0.000 -0.000
|
||||
0.000 0.000 -0.000 0.994 -0.000
|
||||
0.000 -0.000 -0.000 -0.000 0.995
|
||||
atom 1 Tr[ns(na)]= 5.6849416
|
||||
atom 1 Mag[ns(na)]= 0.0001347
|
||||
atom 2 Tr[ns(na)]= 5.6849416
|
||||
atom 2 Mag[ns(na)]= 0.0001347
|
||||
atom 3 Tr[ns(na)]= 5.8092330
|
||||
atom 3 Mag[ns(na)]= 4.1385627
|
||||
atom 4 Tr[ns(na)]= 5.8110759
|
||||
atom 4 Mag[ns(na)]= -4.1368385
|
||||
--- exit write_nsg ---
|
||||
Modify starting ns matrices according to input values
|
||||
|
||||
total cpu time spent up to now is 2.0 secs
|
||||
|
||||
total energy = -174.06832442 Ry
|
||||
estimated scf accuracy < 2.48924695 Ry
|
||||
|
||||
total magnetization = 0.00 Bohr mag/cell
|
||||
absolute magnetization = 8.47 Bohr mag/cell
|
||||
|
||||
iteration # 2 ecut= 30.00 Ry beta= 0.30
|
||||
Davidson diagonalization with overlap
|
||||
ethr = 8.89E-03, avg # of iterations = 2.0
|
||||
|
||||
total cpu time spent up to now is 2.7 secs
|
||||
|
||||
total energy = -174.50798403 Ry
|
||||
estimated scf accuracy < 0.20019944 Ry
|
||||
|
||||
total magnetization = -0.00 Bohr mag/cell
|
||||
absolute magnetization = 7.28 Bohr mag/cell
|
||||
|
||||
iteration # 3 ecut= 30.00 Ry beta= 0.30
|
||||
Davidson diagonalization with overlap
|
||||
ethr = 7.15E-04, avg # of iterations = 2.9
|
||||
|
||||
total cpu time spent up to now is 3.3 secs
|
||||
|
||||
total energy = -174.55831585 Ry
|
||||
estimated scf accuracy < 0.10640678 Ry
|
||||
|
||||
total magnetization = 0.00 Bohr mag/cell
|
||||
absolute magnetization = 7.38 Bohr mag/cell
|
||||
|
||||
iteration # 4 ecut= 30.00 Ry beta= 0.30
|
||||
Davidson diagonalization with overlap
|
||||
ethr = 3.80E-04, avg # of iterations = 2.4
|
||||
|
||||
total cpu time spent up to now is 4.0 secs
|
||||
|
||||
total energy = -174.58311496 Ry
|
||||
estimated scf accuracy < 0.02049251 Ry
|
||||
|
||||
total magnetization = 0.00 Bohr mag/cell
|
||||
absolute magnetization = 7.41 Bohr mag/cell
|
||||
|
||||
iteration # 5 ecut= 30.00 Ry beta= 0.30
|
||||
Davidson diagonalization with overlap
|
||||
ethr = 7.32E-05, avg # of iterations = 2.5
|
||||
|
||||
total cpu time spent up to now is 4.6 secs
|
||||
|
||||
total energy = -174.58682203 Ry
|
||||
estimated scf accuracy < 0.00199218 Ry
|
||||
|
||||
total magnetization = 0.00 Bohr mag/cell
|
||||
absolute magnetization = 7.38 Bohr mag/cell
|
||||
|
||||
iteration # 6 ecut= 30.00 Ry beta= 0.30
|
||||
Davidson diagonalization with overlap
|
||||
ethr = 7.11E-06, avg # of iterations = 3.5
|
||||
|
||||
total cpu time spent up to now is 5.3 secs
|
||||
|
||||
total energy = -174.58738572 Ry
|
||||
estimated scf accuracy < 0.00030896 Ry
|
||||
|
||||
total magnetization = -0.00 Bohr mag/cell
|
||||
absolute magnetization = 7.39 Bohr mag/cell
|
||||
|
||||
iteration # 7 ecut= 30.00 Ry beta= 0.30
|
||||
Davidson diagonalization with overlap
|
||||
ethr = 1.10E-06, avg # of iterations = 3.5
|
||||
|
||||
total cpu time spent up to now is 6.0 secs
|
||||
|
||||
total energy = -174.58747147 Ry
|
||||
estimated scf accuracy < 0.00004003 Ry
|
||||
|
||||
total magnetization = 0.00 Bohr mag/cell
|
||||
absolute magnetization = 7.39 Bohr mag/cell
|
||||
|
||||
iteration # 8 ecut= 30.00 Ry beta= 0.30
|
||||
Davidson diagonalization with overlap
|
||||
ethr = 1.43E-07, avg # of iterations = 4.2
|
||||
|
||||
total cpu time spent up to now is 6.8 secs
|
||||
|
||||
total energy = -174.58750177 Ry
|
||||
estimated scf accuracy < 0.00000464 Ry
|
||||
|
||||
total magnetization = 0.00 Bohr mag/cell
|
||||
absolute magnetization = 7.39 Bohr mag/cell
|
||||
|
||||
iteration # 9 ecut= 30.00 Ry beta= 0.30
|
||||
Davidson diagonalization with overlap
|
||||
ethr = 1.66E-08, avg # of iterations = 5.0
|
||||
|
||||
total cpu time spent up to now is 7.7 secs
|
||||
|
||||
total energy = -174.58750681 Ry
|
||||
estimated scf accuracy < 0.00000057 Ry
|
||||
|
||||
total magnetization = 0.00 Bohr mag/cell
|
||||
absolute magnetization = 7.39 Bohr mag/cell
|
||||
|
||||
iteration # 10 ecut= 30.00 Ry beta= 0.30
|
||||
Davidson diagonalization with overlap
|
||||
ethr = 2.05E-09, avg # of iterations = 4.5
|
||||
|
||||
total cpu time spent up to now is 8.6 secs
|
||||
|
||||
total energy = -174.58750800 Ry
|
||||
estimated scf accuracy < 0.00000043 Ry
|
||||
|
||||
total magnetization = 0.00 Bohr mag/cell
|
||||
absolute magnetization = 7.39 Bohr mag/cell
|
||||
|
||||
iteration # 11 ecut= 30.00 Ry beta= 0.30
|
||||
Davidson diagonalization with overlap
|
||||
ethr = 1.54E-09, avg # of iterations = 2.0
|
||||
|
||||
total cpu time spent up to now is 9.4 secs
|
||||
|
||||
total energy = -174.58750864 Ry
|
||||
estimated scf accuracy < 0.00000006 Ry
|
||||
|
||||
total magnetization = 0.00 Bohr mag/cell
|
||||
absolute magnetization = 7.39 Bohr mag/cell
|
||||
|
||||
iteration # 12 ecut= 30.00 Ry beta= 0.30
|
||||
Davidson diagonalization with overlap
|
||||
ethr = 2.27E-10, avg # of iterations = 2.2
|
||||
|
||||
total cpu time spent up to now is 10.1 secs
|
||||
|
||||
total energy = -174.58750888 Ry
|
||||
estimated scf accuracy < 0.00000001 Ry
|
||||
|
||||
total magnetization = 0.00 Bohr mag/cell
|
||||
absolute magnetization = 7.39 Bohr mag/cell
|
||||
|
||||
iteration # 13 ecut= 30.00 Ry beta= 0.30
|
||||
Davidson diagonalization with overlap
|
||||
ethr = 4.99E-11, avg # of iterations = 3.8
|
||||
|
||||
Magnetic moment per site:
|
||||
atom: 1 charge: 5.8611 magn: -0.0000 constr: 0.0000
|
||||
atom: 2 charge: 5.8611 magn: -0.0000 constr: 0.0000
|
||||
atom: 3 charge: 5.6781 magn: 3.3895 constr: 0.0000
|
||||
atom: 4 charge: 5.6781 magn: -3.3894 constr: 0.0000
|
||||
|
||||
total cpu time spent up to now is 10.9 secs
|
||||
|
||||
End of self-consistent calculation
|
||||
--- enter write_nsg ---
|
||||
Atom: 1 Spin: 1
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.871
|
||||
0.707 0.707 0.000
|
||||
0.871
|
||||
-0.408 0.408 -0.816
|
||||
0.878
|
||||
-0.577 0.577 0.577
|
||||
occupation matrix before diagonalization:
|
||||
0.873 -0.003 -0.003
|
||||
-0.003 0.873 0.003
|
||||
-0.003 0.003 0.873
|
||||
Atom: 2 Spin: 1
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.871
|
||||
0.707 0.707 0.000
|
||||
0.871
|
||||
-0.408 0.408 -0.816
|
||||
0.878
|
||||
-0.577 0.577 0.577
|
||||
occupation matrix before diagonalization:
|
||||
0.873 -0.003 -0.003
|
||||
-0.003 0.873 0.003
|
||||
-0.003 0.003 0.873
|
||||
Atom: 3 Spin: 1
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.990
|
||||
-0.389 -0.004 0.006 0.921 0.002
|
||||
0.990
|
||||
0.921 -0.005 -0.001 0.389 -0.006
|
||||
0.995
|
||||
0.000 -0.577 -0.577 -0.000 0.577
|
||||
0.997
|
||||
0.008 0.408 0.408 -0.000 0.816
|
||||
0.997
|
||||
0.000 -0.707 0.707 -0.008 0.000
|
||||
occupation matrix before diagonalization:
|
||||
0.990 0.000 0.000 0.000 0.000
|
||||
0.000 0.996 -0.001 0.000 0.001
|
||||
0.000 -0.001 0.996 -0.000 0.001
|
||||
0.000 0.000 -0.000 0.990 -0.000
|
||||
0.000 0.001 0.001 -0.000 0.996
|
||||
Atom: 4 Spin: 1
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.055
|
||||
-0.017 -0.609 0.772 0.081 0.164
|
||||
0.055
|
||||
0.081 -0.540 -0.257 0.017 -0.797
|
||||
0.171
|
||||
-0.282 0.047 -0.066 0.956 -0.019
|
||||
0.171
|
||||
0.956 0.049 0.016 0.282 0.065
|
||||
0.975
|
||||
0.000 -0.577 -0.577 -0.000 0.577
|
||||
occupation matrix before diagonalization:
|
||||
0.170 0.004 0.004 0.000 0.008
|
||||
0.004 0.362 0.306 0.007 -0.306
|
||||
0.004 0.306 0.362 -0.007 -0.306
|
||||
0.000 0.007 -0.007 0.170 -0.000
|
||||
0.008 -0.306 -0.306 -0.000 0.362
|
||||
Atom: 1 Spin: 2
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.871
|
||||
0.738 0.671 0.067
|
||||
0.871
|
||||
-0.349 0.465 -0.814
|
||||
0.878
|
||||
-0.577 0.577 0.577
|
||||
occupation matrix before diagonalization:
|
||||
0.873 -0.003 -0.003
|
||||
-0.003 0.873 0.003
|
||||
-0.003 0.003 0.873
|
||||
Atom: 2 Spin: 2
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.871
|
||||
0.707 0.707 0.000
|
||||
0.871
|
||||
-0.408 0.408 -0.816
|
||||
0.878
|
||||
-0.577 0.577 0.577
|
||||
occupation matrix before diagonalization:
|
||||
0.873 -0.003 -0.003
|
||||
-0.003 0.873 0.003
|
||||
-0.003 0.003 0.873
|
||||
Atom: 3 Spin: 2
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.055
|
||||
-0.030 -0.510 0.804 0.078 0.295
|
||||
0.055
|
||||
0.078 -0.634 -0.124 0.030 -0.758
|
||||
0.171
|
||||
-0.237 0.049 -0.066 0.968 -0.016
|
||||
0.171
|
||||
0.968 0.047 0.019 0.237 0.066
|
||||
0.974
|
||||
0.000 -0.577 -0.577 -0.000 0.577
|
||||
occupation matrix before diagonalization:
|
||||
0.170 0.004 0.004 0.000 0.008
|
||||
0.004 0.362 0.306 0.007 -0.306
|
||||
0.004 0.306 0.362 -0.007 -0.306
|
||||
0.000 0.007 -0.007 0.170 -0.000
|
||||
0.008 -0.306 -0.306 -0.000 0.362
|
||||
Atom: 4 Spin: 2
|
||||
eigenvalues and eigenvectors of the occupation matrix:
|
||||
0.990
|
||||
-0.456 -0.003 0.006 0.890 0.003
|
||||
0.990
|
||||
-0.890 0.005 0.000 -0.456 0.006
|
||||
0.995
|
||||
0.000 -0.577 -0.577 -0.000 0.577
|
||||
0.997
|
||||
0.008 0.425 0.391 0.000 0.816
|
||||
0.997
|
||||
0.000 -0.697 0.717 -0.008 0.020
|
||||
occupation matrix before diagonalization:
|
||||
0.990 0.000 0.000 0.000 0.000
|
||||
0.000 0.996 -0.001 0.000 0.001
|
||||
0.000 -0.001 0.996 -0.000 0.001
|
||||
0.000 0.000 -0.000 0.990 -0.000
|
||||
0.000 0.001 0.001 -0.000 0.996
|
||||
atom 1 Tr[ns(na)]= 5.2401524
|
||||
atom 1 Mag[ns(na)]= 0.0000095
|
||||
atom 2 Tr[ns(na)]= 5.2401524
|
||||
atom 2 Mag[ns(na)]= 0.0000095
|
||||
atom 3 Tr[ns(na)]= 6.3935720
|
||||
atom 3 Mag[ns(na)]= 3.5428346
|
||||
atom 4 Tr[ns(na)]= 6.3935709
|
||||
atom 4 Mag[ns(na)]= -3.5428541
|
||||
--- exit write_nsg ---
|
||||
|
||||
------ SPIN UP ------------
|
||||
|
||||
|
||||
k = 0.0000 0.0000 0.0000 ( 731 PWs) bands (ev):
|
||||
|
||||
-8.6635 -7.4040 2.2308 3.7513 3.7513 5.3016 5.3016 6.7948
|
||||
7.8898 7.9453 7.9453 8.3596 8.3596 9.6959 11.6106 12.8098
|
||||
12.8098 13.9151 13.9151 15.5234
|
||||
|
||||
k =-0.7500 0.2500 0.2500 ( 764 PWs) bands (ev):
|
||||
|
||||
-7.6252 -7.3369 2.8992 3.7830 4.2305 4.2352 5.3425 5.5932
|
||||
6.2103 6.5893 7.0478 8.5879 9.0050 9.3476 12.6590 13.1993
|
||||
13.7472 14.0789 17.3920 17.6861
|
||||
|
||||
k =-0.5000-0.5000 0.5000 ( 780 PWs) bands (ev):
|
||||
|
||||
-7.5257 -7.4199 2.3433 4.2175 4.2531 4.2534 5.3403 5.5298
|
||||
6.7162 6.7407 6.9207 8.5161 8.7315 9.6260 12.7043 13.2595
|
||||
14.1866 14.2868 15.3331 16.6978
|
||||
|
||||
k =-0.2500-0.2500-0.2500 ( 748 PWs) bands (ev):
|
||||
|
||||
-8.1123 -8.0643 3.8351 3.8387 3.8387 4.6374 5.3440 5.3440
|
||||
7.0483 7.0483 7.6438 9.2946 9.2946 9.3598 12.7706 12.7706
|
||||
13.6772 13.6772 14.1447 14.4302
|
||||
|
||||
------ SPIN DOWN ----------
|
||||
|
||||
|
||||
k = 0.0000 0.0000 0.0000 ( 731 PWs) bands (ev):
|
||||
|
||||
-8.6635 -7.4040 2.2228 3.7514 3.7514 5.3035 5.3035 6.7936
|
||||
7.8898 7.9452 7.9452 8.3612 8.3612 9.7059 11.6106 12.8074
|
||||
12.8074 13.9137 13.9137 15.5233
|
||||
|
||||
k =-0.7500 0.2500 0.2500 ( 764 PWs) bands (ev):
|
||||
|
||||
-7.6252 -7.3370 2.9017 3.7847 4.2290 4.2346 5.3428 5.5981
|
||||
6.2085 6.5887 7.0483 8.5865 9.0071 9.3411 12.6611 13.1994
|
||||
13.7463 14.0783 17.3920 17.6860
|
||||
|
||||
k =-0.5000-0.5000 0.5000 ( 780 PWs) bands (ev):
|
||||
|
||||
-7.5257 -7.4199 2.3437 4.2159 4.2531 4.2563 5.3406 5.5281
|
||||
6.7162 6.7407 6.9215 8.5226 8.7326 9.6171 12.7059 13.2597
|
||||
14.1854 14.2866 15.3331 16.6979
|
||||
|
||||
k =-0.2500-0.2500-0.2500 ( 748 PWs) bands (ev):
|
||||
|
||||
-8.1123 -8.0643 3.8324 3.8385 3.8385 4.6280 5.3457 5.3457
|
||||
7.0509 7.0509 7.6471 9.2940 9.2940 9.3685 12.7682 12.7682
|
||||
13.6760 13.6760 14.1447 14.4310
|
||||
|
||||
the Fermi energy is 10.3943 ev
|
||||
|
||||
! total energy = -174.58750911 Ry
|
||||
estimated scf accuracy < 1.5E-10 Ry
|
||||
smearing contrib. (-TS) = -0.00000000 Ry
|
||||
internal energy E=F+TS = -174.58750911 Ry
|
||||
|
||||
The total energy is F=E-TS. E is the sum of the following terms:
|
||||
one-electron contribution = 0.55289282 Ry
|
||||
hartree contribution = 28.09310460 Ry
|
||||
xc contribution = -65.86422036 Ry
|
||||
ewald contribution = -137.50929535 Ry
|
||||
Hubbard energy = 0.14000918 Ry
|
||||
|
||||
total magnetization = 0.00 Bohr mag/cell
|
||||
absolute magnetization = 7.39 Bohr mag/cell
|
||||
|
||||
convergence has been achieved in 13 iterations
|
||||
|
||||
Forces acting on atoms (cartesian axes, Ry/au):
|
||||
|
||||
atom 1 type 1 force = 0.00000305 0.00000305 0.00000305
|
||||
atom 2 type 1 force = -0.00000305 -0.00000305 -0.00000305
|
||||
atom 3 type 2 force = -0.00000000 0.00000000 0.00000000
|
||||
atom 4 type 3 force = 0.00000000 0.00000000 0.00000000
|
||||
|
||||
Total force = 0.000007 Total SCF correction = 0.000006
|
||||
SCF correction compared to forces is large: reduce conv_thr to get better values
|
||||
|
||||
|
||||
Computing stress (Cartesian axis) and pressure
|
||||
|
||||
total stress (Ry/bohr**3) (kbar) P= -116.64
|
||||
-0.00079290 -0.00025323 -0.00025323 -116.64 -37.25 -37.25
|
||||
-0.00025323 -0.00079290 -0.00025323 -37.25 -116.64 -37.25
|
||||
-0.00025323 -0.00025323 -0.00079290 -37.25 -37.25 -116.64
|
||||
|
||||
|
||||
Writing output data file ./pwscf.save/
|
||||
|
||||
init_run : 1.04s CPU 1.08s WALL ( 1 calls)
|
||||
electrons : 8.96s CPU 9.70s WALL ( 1 calls)
|
||||
forces : 0.37s CPU 0.40s WALL ( 1 calls)
|
||||
stress : 0.93s CPU 0.99s WALL ( 1 calls)
|
||||
|
||||
Called by init_run:
|
||||
wfcinit : 0.25s CPU 0.26s WALL ( 1 calls)
|
||||
potinit : 0.04s CPU 0.04s WALL ( 1 calls)
|
||||
hinit0 : 0.70s CPU 0.70s WALL ( 1 calls)
|
||||
|
||||
Called by electrons:
|
||||
c_bands : 5.20s CPU 5.24s WALL ( 13 calls)
|
||||
sum_band : 2.66s CPU 3.04s WALL ( 13 calls)
|
||||
v_of_rho : 0.31s CPU 0.30s WALL ( 14 calls)
|
||||
newd : 0.73s CPU 1.07s WALL ( 14 calls)
|
||||
mix_rho : 0.09s CPU 0.09s WALL ( 13 calls)
|
||||
|
||||
Called by c_bands:
|
||||
init_us_2 : 0.09s CPU 0.10s WALL ( 256 calls)
|
||||
cegterg : 4.90s CPU 4.97s WALL ( 104 calls)
|
||||
|
||||
Called by *egterg:
|
||||
cdiaghg : 0.14s CPU 0.15s WALL ( 430 calls)
|
||||
h_psi : 4.66s CPU 4.74s WALL ( 438 calls)
|
||||
s_psi : 0.06s CPU 0.07s WALL ( 478 calls)
|
||||
g_psi : 0.02s CPU 0.02s WALL ( 326 calls)
|
||||
|
||||
Called by h_psi:
|
||||
h_psi:calbec : 0.05s CPU 0.06s WALL ( 438 calls)
|
||||
vloc_psi : 4.44s CPU 4.48s WALL ( 438 calls)
|
||||
add_vuspsi : 0.05s CPU 0.06s WALL ( 438 calls)
|
||||
vhpsi : 0.12s CPU 0.14s WALL ( 438 calls)
|
||||
|
||||
General routines
|
||||
calbec : 0.28s CPU 0.30s WALL ( 4324 calls)
|
||||
fft : 0.15s CPU 0.17s WALL ( 158 calls)
|
||||
ffts : 0.02s CPU 0.02s WALL ( 54 calls)
|
||||
fftw : 4.62s CPU 4.73s WALL ( 13004 calls)
|
||||
interpolate : 0.04s CPU 0.05s WALL ( 28 calls)
|
||||
davcio : 0.00s CPU 0.00s WALL ( 8 calls)
|
||||
|
||||
Parallel routines
|
||||
|
||||
Hubbard U routines
|
||||
new_nsg : 0.03s CPU 0.03s WALL ( 13 calls)
|
||||
alloc_neigh : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||
vhpsi : 0.12s CPU 0.14s WALL ( 438 calls)
|
||||
force_hub : 0.23s CPU 0.23s WALL ( 1 calls)
|
||||
stres_hub : 0.40s CPU 0.41s WALL ( 1 calls)
|
||||
|
||||
PWSCF : 11.44s CPU 12.31s WALL
|
||||
|
||||
|
||||
This run was terminated on: 10:28:28 7Oct2020
|
||||
|
||||
=------------------------------------------------------------------------------=
|
||||
JOB DONE.
|
||||
=------------------------------------------------------------------------------=
|
|
@ -0,0 +1,43 @@
|
|||
&control
|
||||
calculation = 'scf'
|
||||
tprnfor = .true.
|
||||
tstress = .true.
|
||||
/
|
||||
&system
|
||||
ibrav= 0, celldm(1)=8.19, nat= 4, ntyp= 3,
|
||||
ecutwfc = 30.0, ecutrho = 240.0, nbnd=20,
|
||||
starting_magnetization(1)= 0.0,
|
||||
starting_magnetization(2)= 0.5,
|
||||
starting_magnetization(3)=-0.5,
|
||||
occupations='smearing', smearing='gauss', degauss=0.01,
|
||||
nspin=2,
|
||||
lda_plus_u=.true.,
|
||||
lda_plus_u_kind = 2,
|
||||
Hubbard_V(3,3,1) = 4.3,
|
||||
Hubbard_V(3,2,1) = 0.8,
|
||||
Hubbard_V(4,4,1) = 4.3,
|
||||
U_projection_type = 'ortho-atomic',
|
||||
starting_ns_eigenvalue(3,2,2) = 1.d0
|
||||
starting_ns_eigenvalue(3,1,3) = 1.d0
|
||||
/
|
||||
&electrons
|
||||
mixing_mode = 'plain'
|
||||
mixing_beta = 0.3
|
||||
conv_thr = 1.0d-8
|
||||
mixing_fixed_ns = 0
|
||||
/
|
||||
CELL_PARAMETERS (alat)
|
||||
0.50 0.50 1.00
|
||||
0.50 1.00 0.50
|
||||
1.00 0.50 0.50
|
||||
ATOMIC_SPECIES
|
||||
O1 1. O.pz-rrkjus.UPF
|
||||
Fe1 1. Fe.pz-nd-rrkjus.UPF
|
||||
Fe2 1. Fe.pz-nd-rrkjus.UPF
|
||||
ATOMIC_POSITIONS {crystal}
|
||||
O1 0.25 0.25 0.25
|
||||
O1 0.75 0.75 0.75
|
||||
Fe1 0.0 0.0 0.0
|
||||
Fe2 0.5 0.5 0.5
|
||||
K_POINTS {automatic}
|
||||
2 2 2 0 0 0
|
|
@ -26,6 +26,7 @@ documentation for further details.'''
|
|||
# copyright: (c) 2012 James Spencer
|
||||
# license: modified BSD; see LICENSE for more details
|
||||
|
||||
from __future__ import print_function
|
||||
import glob
|
||||
import optparse
|
||||
import os
|
||||
|
|
|
@ -8,6 +8,7 @@ A framework for regression testing numerical programs.
|
|||
:license: modified BSD; see LICENSE for more details.
|
||||
'''
|
||||
|
||||
from __future__ import print_function
|
||||
import glob
|
||||
import os
|
||||
import pipes
|
||||
|
|
|
@ -8,6 +8,7 @@ Parse jobconfig and userconfig ini files.
|
|||
:license: modified BSD; see LICENSE for more details.
|
||||
'''
|
||||
|
||||
from __future__ import print_function
|
||||
import copy
|
||||
import glob
|
||||
import os
|
||||
|
|
|
@ -8,6 +8,7 @@ Custom exceptions. Initialise signal handler for the interrupt signal.
|
|||
:license: modified BSD; see LICENSE for more details.
|
||||
'''
|
||||
|
||||
from __future__ import print_function
|
||||
import signal
|
||||
import sys
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ Classes and functions for comparing data.
|
|||
:license: modified BSD; see LICENSE for more details.
|
||||
'''
|
||||
|
||||
from __future__ import print_function
|
||||
import re
|
||||
import sys
|
||||
import warnings
|
||||
|
|
|
@ -45,6 +45,32 @@ target_link_libraries(qe_upflib
|
|||
PUBLIC
|
||||
QE::FOX)
|
||||
|
||||
##############################################################
|
||||
# virtual_v2.x
|
||||
##############################################################
|
||||
set(sources virtual_v2.f90)
|
||||
qe_add_executable(qe_upflib_virtual_v2_exe ${sources})
|
||||
set_target_properties(qe_upflib_virtual_v2_exe PROPERTIES OUTPUT_NAME virtual_v2.x)
|
||||
target_link_libraries(qe_upflib_virtual_v2_exe
|
||||
PRIVATE
|
||||
QE::UPF
|
||||
)
|
||||
###########################################################
|
||||
# upfconv.x
|
||||
###########################################################
|
||||
set(sources
|
||||
upfconv.f90
|
||||
casino_pp.f90
|
||||
)
|
||||
qe_add_executable(qe_upflib_upfconv_exe ${sources})
|
||||
set_target_properties(qe_upflib_upfconv_exe PROPERTIES OUTPUT_NAME upfconv.x)
|
||||
target_link_libraries(qe_upflib_upfconv_exe
|
||||
PRIVATE
|
||||
QE::UPF
|
||||
)
|
||||
|
||||
qe_install_targets(qe_upflib)
|
||||
############################################################################
|
||||
qe_install_targets(qe_upflib
|
||||
qe_upflib_virtual_v2_exe
|
||||
qe_upflib_upfconv_exe
|
||||
)
|
||||
|
|
|
@ -4,6 +4,7 @@ simple script to mark as CDATA all text contained in PP_INPUTFILE element. It
|
|||
avoids any issue related to the presence on XML reserved characters in that
|
||||
section.
|
||||
"""
|
||||
from __future__ import print_function
|
||||
from subprocess import Popen, PIPE
|
||||
from xml.etree import cElementTree as eT
|
||||
import os
|
||||
|
|
|
@ -721,7 +721,9 @@ CONTAINS
|
|||
CALL xmlr_opentag( 'PP_GIPAW_CORE_ORBITALS')
|
||||
CALL get_attr ('number_of_core_orbitals', upf%gipaw_ncore_orbitals)
|
||||
ELSE
|
||||
print *, 'FIXME! upf%gipaw_ncore_orbitals'
|
||||
CALL xmlr_readtag ('number_of_core_orbitals', upf%gipaw_ncore_orbitals)
|
||||
IF ( .NOT. upf%paw_as_gipaw) &
|
||||
CALL xmlr_readtag( 'number_of_valence_orbitals', upf%gipaw_wfs_nchannels)
|
||||
END IF
|
||||
ALLOCATE ( upf%gipaw_core_orbital(upf%mesh,upf%gipaw_ncore_orbitals) )
|
||||
ALLOCATE ( upf%gipaw_core_orbital_n(upf%gipaw_ncore_orbitals) )
|
||||
|
@ -778,8 +780,6 @@ CONTAINS
|
|||
CALL xmlr_opentag( 'PP_GIPAW_ORBITALS' )
|
||||
CALL get_attr( 'number_of_valence_orbitals', &
|
||||
upf%gipaw_wfs_nchannels )
|
||||
ELSE
|
||||
print *, 'FIXME! upf%gipaw_wfs_nchannel'
|
||||
END IF
|
||||
ALLOCATE ( upf%gipaw_wfs_el(upf%gipaw_wfs_nchannels) )
|
||||
ALLOCATE ( upf%gipaw_wfs_ll(upf%gipaw_wfs_nchannels) )
|
||||
|
|
|
@ -816,6 +816,10 @@ CONTAINS
|
|||
IF ( v2 ) THEN
|
||||
call add_attr( 'number_of_core_orbitals', upf%gipaw_ncore_orbitals )
|
||||
CALL xmlw_opentag( 'PP_GIPAW_CORE_ORBITALS' )
|
||||
ELSE
|
||||
CALL xmlw_writetag('number_of_core_orbitals', upf%gipaw_ncore_orbitals )
|
||||
IF ( .NOT. upf%paw_as_gipaw ) &
|
||||
CALL xmlw_writetag('number_of_valence_orbitals', upf%gipaw_wfs_nchannels)
|
||||
END IF
|
||||
DO nb = 1,upf%gipaw_ncore_orbitals
|
||||
IF ( v2 ) THEN
|
||||
|
|
|
@ -733,6 +733,14 @@ CONTAINS
|
|||
|
||||
CALL xml_newElement(u, 'pp_gipaw')
|
||||
CALL xml_addAttribute(u, 'gipaw_data_format', upf%gipaw_data_format )
|
||||
CALL xml_NewElement (u, 'number_of_core_orbitals')
|
||||
CALL xml_AddCharacters(u, upf%gipaw_ncore_orbitals)
|
||||
CALL xml_endElement(u, 'number_of_core_orbitals')
|
||||
IF ( .NOT. upf%paw_as_gipaw ) THEN
|
||||
CALL xml_newElement (u, 'number_of_valence_orbitals')
|
||||
CALL xml_AddCharacters(u, upf%gipaw_wfs_nchannels)
|
||||
CALL xml_endElement(u, 'number_of_valence_orbitals')
|
||||
END IF
|
||||
DO nb = 1,upf%gipaw_ncore_orbitals
|
||||
CALL xml_NewElement(u, 'pp_gipaw_core_orbital')
|
||||
CALL xml_addAttribute(u, 'size', upf%mesh)
|
||||
|
|
Loading…
Reference in New Issue