Merge branch 'develop' into syncqe2

This commit is contained in:
Pietro Bonfa 2020-10-18 17:50:41 +02:00
commit 05c866e91f
65 changed files with 2043 additions and 362 deletions

View File

@ -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:

3
.gitmodules vendored
View File

@ -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

View File

@ -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

View File

@ -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_

View File

@ -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)

View File

@ -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 ...

View File

@ -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='')

View File

@ -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*' )

View File

@ -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

View File

@ -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)

View File

@ -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*' )

View File

@ -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*' )

View File

@ -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*' )

View File

@ -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*' )

View File

@ -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*' )

View File

@ -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*' )

View File

@ -1,3 +1,4 @@
from __future__ import print_function
import re, sys
info = """

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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">&amp;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>&amp;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">&amp;</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>

View File

@ -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.

View File

@ -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

View File

@ -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))

View File

@ -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)
!

View File

@ -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

View File

@ -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, &

View File

@ -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

View File

@ -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

0
PW/tools/xsf2pwi.sh Normal file → Executable file
View File

0
UtilXlib/tests/compile_and_run_tests.sh Normal file → Executable file
View File

View File

@ -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()

View File

@ -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}

View File

@ -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()

View File

@ -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()

View File

@ -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))

View File

@ -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]

View File

@ -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

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python3
# (C) 2010 Norbert Nemec
#

View File

@ -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

1
external/devxlib vendored Submodule

@ -0,0 +1 @@
Subproject commit e5392b772497f8597f6c3b2851e0c17da756bb64

0
install/build-mingw-cross.sh Normal file → Executable file
View File

44
install/configure vendored
View File

@ -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...

View File

@ -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

View File

@ -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)
])

View File

@ -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@

View File

@ -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()

View File

@ -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*')

View File

@ -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)

View File

@ -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*')

View File

@ -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.
=------------------------------------------------------------------------------=

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
)

View File

@ -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

View File

@ -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) )

View File

@ -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

View File

@ -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)