mirror of https://gitlab.com/QEF/q-e.git
EPW Makefiles are modified so that ZG executables are compiled with "make epw"
ZG folder is renamed from "ZG_displacement" to "ZG" (looks nicer) tar file containing the example of JDOS is replaced by the folder "example" "doc" folder is added containing a tutorial and a file describing the input variables README is also updated accordingly (minor changes)
This commit is contained in:
parent
2448f65b0d
commit
b6a6b8d6f1
|
@ -7,12 +7,15 @@ epw:
|
|||
(cd src ; make all )
|
||||
- (mkdir -p bin)
|
||||
(cd bin ; ln -fs ../src/epw.x . )
|
||||
(cd ZG/src ; make )
|
||||
|
||||
clean:
|
||||
cd src ; rm -f *.o *.mod *~ *.F90
|
||||
cd ZG/src ; rm -f *.o *.mod *~
|
||||
|
||||
distclean : clean
|
||||
rm -f src/epw.x bin/epw.x
|
||||
rm -f ZG/src/*.x
|
||||
|
||||
release:
|
||||
cd ../ ; cp -r EPW EPW-release; cd EPW-release ; \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Marios Zacharias [1] & Feliciano Giustino [2,3], May 2021
|
||||
Marios Zacharias [1] & Feliciano Giustino [2,3], July 2021
|
||||
|
||||
[1] Department of Mechanical and Materials Science Engineering, Cyprus University of Technology,
|
||||
P.O. Box 50329, 3603 Limassol, Cyprus
|
||||
|
@ -7,7 +7,7 @@ Austin, Texas 78712, USA
|
|||
[3] Department of Physics, The University of Texas at Austin, Austin, Texas 78712, USA
|
||||
---------------------------------------------------------------------------------------------------
|
||||
|
||||
If you use ZG.x please do cite the following work:
|
||||
If you use ZG.x or bands_unfold.x please do cite the following work:
|
||||
|
||||
[1] Marios Zacharias and Feliciano Giustino, Phys. Rev. Research 2, 013357, (2020).
|
||||
[2] Marios Zacharias and Feliciano Giustino, Phys. Rev. B 94, 075125, (2016).
|
||||
|
@ -17,6 +17,19 @@ If you use ZG.x please do cite the following work:
|
|||
Acknowledgement: We thank Hyungjun Lee, Oden Institute for Computational Engineering and Sciences,
|
||||
for help packaging this release.
|
||||
|
||||
---------------------------------------------------------------------------------------------------
|
||||
|
||||
Executables in ZG folder
|
||||
------------------------
|
||||
ZG.x ---> for generating ZG configurations
|
||||
bands_unfold.x ---> for performing band structure unfolding in supercell calculations
|
||||
pp_spctrlfn.x ---> for obtaining the electron spectral function after bands_unfold.x
|
||||
epsilon_Gaus.x ---> for calculating optical properties as in epsilon.x but Gaussian broadening
|
||||
disca.x ---> for calculating one-phonon and all-phonon inelastic scattering intensities
|
||||
pp_disca.x ---> for applying broadening and setting a resolution of scattering patterns
|
||||
src/local folder ---> fortran routines for post-processing. Compile them by "./compile_gfortran.sh"
|
||||
|
||||
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Instructions for the construction of the Zacharias-Giustino "ZG" displacement following
|
||||
Eq. (2) of Phys. Rev. Research 2, 013357, 2020. The approach for generating the ZG-displacement
|
||||
|
@ -27,12 +40,13 @@ STEPS for generating the "ZG-displacement" for the calculation of temperature-de
|
|||
|
||||
0. Compile the version of Quantum Espresso 6.6.0 or later; PW, PH, and PP subroutines
|
||||
are required to run all executables, e.g. "make pw ph pp".
|
||||
Go to "/path_to_your_espresso/EPW/ZG_displacement/src" and "make".
|
||||
Go to "/path_to_your_espresso/EPW/ZG/src" and "make".
|
||||
The code is also compiled with "make epw".
|
||||
This code exploits some main routines of matdyn.x. In particular, the code
|
||||
takes advantage of the phonon interpolation scheme implemented for matdyn.x. This is
|
||||
important, for example, in taking into account the LO-TO splitting in polar materials.
|
||||
The necessary input files are the interatomic force constants "file.fc" and "ZG.in".
|
||||
See for example files in the "example/silicon/inputs" folder.
|
||||
See for example files in the "example/silicon/ZG_structure/inputs" folder.
|
||||
|
||||
1. Run a scf calculation: for example "/path_to_your_espresso/bin/pw.x < si.scf.in > si.scf.out"
|
||||
for the silicon unit cell.
|
||||
|
@ -53,7 +67,7 @@ STEPS for generating the "ZG-displacement" for the calculation of temperature-de
|
|||
|
||||
5. Now one needs to decide on the size of the supercell configuration to be used for calculating
|
||||
temperature dependent properties. For help, please see the example folder by "tar -xvf example.tar.gz".
|
||||
In file "example/silicon/ZG_displacement_generation/inputs/ZG_444.in" we show the example for
|
||||
In file "example/silicon/ZG_structure/inputs/ZG_444.in" we show the example for
|
||||
constructing a 4x4x4 ZG-configuration. One could potentially generate any supercell size
|
||||
by simply changing "dim1","dim2","dim3", and the list of q-points (optional, see below).
|
||||
"ZG.in" has the standard format as a "matdyn.in" file for Quantum Espresso.
|
||||
|
@ -111,7 +125,7 @@ STEPS for generating the "ZG-displacement" for the calculation of temperature-de
|
|||
Only one of the q-point time-reversal partners is kept for the construction of the
|
||||
ZG-displacement. The calculations, for the moment, assume systems with time-reversal symmetry.
|
||||
For the generation of the "qlist_AB.txt" set the q-gird in file
|
||||
"example/silicon/input/qlist.in" and run "../../../src/create_qlist.x < qlist.in > qlist.out".
|
||||
"example/silicon/ZG_structure/input/qlist.in" and run "../../../src/create_qlist.x < qlist.in > qlist.out".
|
||||
One can modify the "create_qlist.f90" to generate a different path for consecutive q-points.
|
||||
Paste the output of "qlist_AB.txt" to "ZG.in" after namelist &input. Set the flag
|
||||
q_external = .true. for the code to read the list.
|
||||
|
@ -121,7 +135,7 @@ STEPS for generating the "ZG-displacement" for the calculation of temperature-de
|
|||
The first file has the equilibrium coordinates of the nuclei and the second has the optimum set of nuclear coordinates
|
||||
that define the ZG-displacement for a particular temperature and supercell size.
|
||||
The third one has the ZG-velocities or momenta of the nuclei generated in the same spirit with the ZG displacement.
|
||||
The outputs for a supercell size of 4x4x4 are in the folder "example/silicon/output/".
|
||||
The outputs for a supercell size of 4x4x4 are in the folder "example/silicon/ZG_structure/output/".
|
||||
iii) The calculation of the ZG-displacement should usually takes a few seconds to few minutes with one processor.
|
||||
|
||||
6. VERY IMPORTANT NOTE: It is perfectly reasonable to find different ZG-displacements / ZG-configurations,
|
||||
|
@ -144,7 +158,7 @@ STEPS for generating the "ZG-displacement" for the calculation of temperature-de
|
|||
band structures using the unfolding technique for supercell calculations.
|
||||
|
||||
----------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
Example using the ZG-displacement
|
||||
|
||||
Here we show a simple example on how to use the ZG-displacement for calculating the temperature dependence
|
|
@ -21,32 +21,32 @@ all : ZG.x disca.x pp_disca.x pp_spctrlfn.x bands_unfold.x epsilon_Gaus.x
|
|||
ZG.x : ZG.o $(PHAUXOBJS) $(PHOBJS) $(PWOBJS) $(LRMODS) $(QEMODS) $(LIBOBJS)
|
||||
$(LD) $(LDFLAGS) -o $@ \
|
||||
ZG.o $(PHAUXOBJS) $(PHOBJS) $(LRMODS) $(PWOBJS) $(QEMODS) $(LIBOBJS) $(QELIBS)
|
||||
- ( cd ../../../bin ; ln -fs ../EPW/ZG_displacement/src/$@ . )
|
||||
- ( cd ../../../bin ; ln -fs ../EPW/ZG/src/$@ . )
|
||||
|
||||
disca.x : disca.o $(PHAUXOBJS) $(PHOBJS) $(PWOBJS) $(LRMODS) $(QEMODS) $(LIBOBJS)
|
||||
$(LD) $(LDFLAGS) -o $@ \
|
||||
disca.o $(PHAUXOBJS) $(PHOBJS) $(LRMODS) $(PWOBJS) $(QEMODS) $(LIBOBJS) $(QELIBS)
|
||||
- ( cd ../../../bin ; ln -fs ../EPW/ZG_displacement/src/$@ . )
|
||||
- ( cd ../../../bin ; ln -fs ../EPW/ZG/src/$@ . )
|
||||
|
||||
pp_disca.x : pp_disca.o $(PWOBJS) $(QEMODS) $(LIBOBJS)
|
||||
$(LD) $(LDFLAGS) -o $@ \
|
||||
pp_disca.o $(PHAUXOBJS) $(PHOBJS) $(PWOBJS) $(QEMODS) $(LIBOBJS) $(QELIBS)
|
||||
- ( cd ../../../bin ; ln -fs ../EPW/ZG_displacement/src/$@ . )
|
||||
- ( cd ../../../bin ; ln -fs ../EPW/ZG/src/$@ . )
|
||||
|
||||
bands_unfold.x : bands_unfold.o $(PWOBJS) $(QEMODS) $(LIBOBJS)
|
||||
$(LD) $(LDFLAGS) -o $@ \
|
||||
bands_unfold.o ../../../PP/src/libpp.a $(PWOBJS) $(QEMODS) $(LIBOBJS) $(QELIBS)
|
||||
- ( cd ../../../bin ; ln -fs ../EPW/ZG_displacement/src/$@ . )
|
||||
- ( cd ../../../bin ; ln -fs ../EPW/ZG/src/$@ . )
|
||||
|
||||
pp_spctrlfn.x : pp_spctrlfn.o $(PWOBJS) $(QEMODS) $(LIBOBJS)
|
||||
$(LD) $(LDFLAGS) -o $@ \
|
||||
pp_spctrlfn.o $(PHAUXOBJS) $(PHOBJS) $(PWOBJS) $(QEMODS) $(LIBOBJS) $(QELIBS)
|
||||
- ( cd ../../../bin ; ln -fs ../EPW/ZG_displacement/src/$@ . )
|
||||
- ( cd ../../../bin ; ln -fs ../EPW/ZG/src/$@ . )
|
||||
|
||||
epsilon_Gaus.x : epsilon_Gaus.o $(PWOBJS) $(QEMODS) $(LIBOBJS)
|
||||
$(LD) $(LDFLAGS) -o $@ \
|
||||
epsilon_Gaus.o ../../../PP/src/libpp.a $(PWOBJS) $(QEMODS) $(LIBOBJS) $(QELIBS)
|
||||
- ( cd ../../../bin ; ln -fs ../EPW/ZG_displacement/src/$@ . )
|
||||
- ( cd ../../../bin ; ln -fs ../EPW/ZG/src/$@ . )
|
||||
|
||||
clean :
|
||||
- /bin/rm -f *.x *.o *.a *~ *.mod
|
|
@ -2947,8 +2947,8 @@ SUBROUTINE ZG_configuration(nq, nat, ntyp, amass, ityp, q, w2, z_nq_zg, ios, &
|
|||
!!!!!!!
|
||||
IF (ionode) THEN
|
||||
WRITE(*,*)
|
||||
WRITE(*,'(A11, i8)') "Iteration:", kk
|
||||
WRITE(*,*) " Minimize error based on threshold"
|
||||
WRITE(*,'(A11, i8)') "Attempt #", kk
|
||||
WRITE(*,*) " Searching for optimum configuration..."
|
||||
ENDIF
|
||||
!
|
||||
DO p = 1, combs_all
|
|
@ -3,12 +3,13 @@ PROGRAM rotate
|
|||
IMPLICIT NONE
|
||||
|
||||
INTEGER :: i, p, sym, nk_tot, ctr
|
||||
DOUBLE PRECISION, ALLOCATABLE :: str_f(:,:), str_f_new(:,:)
|
||||
DOUBLE PRECISION, ALLOCATABLE :: str_f(:,:), str_f_new(:,:), str_fp(:, :)
|
||||
CHARACTER(len=256) :: filename
|
||||
!
|
||||
DOUBLE PRECISION :: Rmat(2,2), pi, theta
|
||||
DOUBLE PRECISION :: Rmat(2,2), pi, theta, eps
|
||||
!
|
||||
pi = 3.1415926536
|
||||
eps = 1d-5
|
||||
!
|
||||
sym = 6
|
||||
WRITE(*,*) "Write number of rotations based on symmetry (integer)"
|
||||
|
@ -17,7 +18,7 @@ IMPLICIT NONE
|
|||
WRITE(*,*) "Write number of entries (integer)"
|
||||
READ(*,*) nk_tot
|
||||
!
|
||||
ALLOCATE(str_f(nk_tot, 4), str_f_new(nk_tot * sym, 4))
|
||||
ALLOCATE(str_f(nk_tot, 4), str_fp(nk_tot, 4), str_f_new(nk_tot * sym, 4))
|
||||
str_f = 0.d0
|
||||
!
|
||||
filename = 'structure_factor_all-phonon.dat'
|
||||
|
@ -27,6 +28,14 @@ IMPLICIT NONE
|
|||
END DO
|
||||
CLOSE(80)
|
||||
!
|
||||
! To remove double contribution upon rotation
|
||||
str_fp = 0.d0
|
||||
str_fp(1, :) = str_f(1, :)
|
||||
DO p = 2, nk_tot
|
||||
IF (ATAN(str_f(p, 1) / str_f(p, 2)) .LT. (2.d0 * pi / float(sym) - eps) ) THEN
|
||||
str_fp(p, :) = str_f(p, :)
|
||||
ENDIF
|
||||
ENDDO
|
||||
!
|
||||
OPEN (unit = 80, file = filename, status = 'unknown', form = 'formatted')
|
||||
!
|
||||
|
@ -36,9 +45,9 @@ IMPLICIT NONE
|
|||
Rmat(1, :) = (/ COS(i * theta), -SIN(i * theta) /)
|
||||
Rmat(2, :) = (/ SIN(i * theta), COS(i * theta) /)
|
||||
DO p = 1, nk_tot
|
||||
str_f_new(ctr, 1 : 2) = MATMUL(Rmat, str_f(p, 1 : 2))
|
||||
str_f_new(ctr, 3) = str_f(p, 3)
|
||||
str_f_new(ctr, 4) = str_f(p, 4)
|
||||
str_f_new(ctr, 1 : 2) = MATMUL(Rmat, str_fp(p, 1 : 2))
|
||||
str_f_new(ctr, 3) = str_fp(p, 3)
|
||||
str_f_new(ctr, 4) = str_fp(p, 4)
|
||||
ctr = ctr + 1
|
||||
END DO
|
||||
ENDDO
|
||||
|
@ -50,7 +59,7 @@ IMPLICIT NONE
|
|||
ctr = 1
|
||||
DO i = 1, sym
|
||||
DO p = 1, nk_tot
|
||||
WRITE(80,'(4f20.6)') str_f_new(ctr, :)
|
||||
WRITE(80,'(4f26.6)') str_f_new(ctr, :)
|
||||
ctr = ctr + 1
|
||||
END DO
|
||||
ENDDO
|
Binary file not shown.
|
@ -86,9 +86,9 @@ QEMODS = ../../Modules/libqemod.a ../../KS_Solvers/libks_solvers.a ../../XClib/x
|
|||
../../upflib/libupf.a ../../FFTXlib/libqefft.a ../../dft-d3/libdftd3qe.a
|
||||
LIBOBJS =../../LAXlib/libqela.a ../../UtilXlib/libutil.a ../../clib/clib.a
|
||||
|
||||
TLDEPS= pw ph
|
||||
TLDEPS= pw ph pp
|
||||
|
||||
all : pw ph wannier libepw.a epw.x
|
||||
all : pw ph pp wannier libepw.a epw.x
|
||||
|
||||
libepw.a : $(EPWOBJS)
|
||||
$(AR) $(ARFLAGS) $@ $?
|
||||
|
@ -105,6 +105,9 @@ pw :
|
|||
ph :
|
||||
cd ../../ ; make ph
|
||||
|
||||
pp :
|
||||
cd ../../ ; make pp
|
||||
|
||||
wannier :
|
||||
cd ../../ ; make w90 ; cd wannier90-3.1.0/ ; make lib
|
||||
|
||||
|
|
Loading…
Reference in New Issue