Commit 9b9473ce authored by Daniel Wortmann's avatar Daniel Wortmann

Merge branch 'aixcel' of https://iffgit.fz-juelich.de/fleur/fleur into aixcel

Conflicts:
	eigen/hsmt_sph.F90
parents bb1a6d24 3d41caec
...@@ -70,15 +70,15 @@ CONTAINS ...@@ -70,15 +70,15 @@ CONTAINS
!$OMP MASTER !$OMP MASTER
IF ((atoms%invsat(na).EQ.0) .OR. (atoms%invsat(na).EQ.1)) THEN IF ((atoms%invsat(na) == 0) .OR. (atoms%invsat(na) == 1)) THEN
!---> if this atom is the first of two atoms related by inversion, !---> if this atom is the first of two atoms related by inversion,
!---> the contributions to the overlap matrix of both atoms are added !---> the contributions to the overlap matrix of both atoms are added
!---> at once. where it is made use of the fact, that the sum of !---> at once. where it is made use of the fact, that the sum of
!---> these contributions is twice the real part of the contribution !---> these contributions is twice the real part of the contribution
!---> of each atom. note, that in this case there are twice as many !---> of each atom. note, that in this case there are twice as many
!---> (2*(2*l+1)) k-vectors (compare abccoflo and comments there). !---> (2*(2*l+1)) k-vectors (compare abccoflo and comments there).
IF (atoms%invsat(na).EQ.0) invsfct = 1 IF (atoms%invsat(na) == 0) invsfct = 1
IF (atoms%invsat(na).EQ.1) invsfct = 2 IF (atoms%invsat(na) == 1) invsfct = 2
! !
DO lo = 1,atoms%nlo(ntyp) DO lo = 1,atoms%nlo(ntyp)
...@@ -127,7 +127,7 @@ CONTAINS ...@@ -127,7 +127,7 @@ CONTAINS
!+t3e !+t3e
DO nkvec = 1,invsfct* (2*l+1) DO nkvec = 1,invsfct* (2*l+1)
locol= lapw%nv(jintsp)+lapw%index_lo(lo,na)+nkvec !this is the column of the matrix locol= lapw%nv(jintsp)+lapw%index_lo(lo,na)+nkvec !this is the column of the matrix
IF (MOD(locol-1,mpi%n_size).EQ.mpi%n_rank) THEN IF (MOD(locol-1,mpi%n_size) == mpi%n_rank) THEN
locol=(locol-1)/mpi%n_size+1 !this is the column in local storage locol=(locol-1)/mpi%n_size+1 !this is the column in local storage
!-t3e !-t3e
IF (hmat%l_real) THEN IF (hmat%l_real) THEN
...@@ -174,7 +174,7 @@ CONTAINS ...@@ -174,7 +174,7 @@ CONTAINS
!---> local orbitals at the same atom and with itself !---> local orbitals at the same atom and with itself
DO nkvec = 1,invsfct* (2*l+1) DO nkvec = 1,invsfct* (2*l+1)
locol = lapw%nv(jintsp)+lapw%index_lo(lo,na)+nkvec !this is the column of the matrix locol = lapw%nv(jintsp)+lapw%index_lo(lo,na)+nkvec !this is the column of the matrix
IF (MOD(locol-1,mpi%n_size).EQ.mpi%n_rank) THEN IF (MOD(locol-1,mpi%n_size) == mpi%n_rank) THEN
locol=(locol-1)/mpi%n_size+1 !this is the column in local storage locol=(locol-1)/mpi%n_size+1 !this is the column in local storage
!-t3e !-t3e
!---> calculate the hamiltonian matrix elements with other !---> calculate the hamiltonian matrix elements with other
......
This diff is collapsed.
...@@ -58,15 +58,15 @@ CONTAINS ...@@ -58,15 +58,15 @@ CONTAINS
CALL lapw%phase_factors(i,atoms%taual(:,na),noco%qss,cph(:,i)) CALL lapw%phase_factors(i,atoms%taual(:,na),noco%qss,cph(:,i))
ENDDO ENDDO
IF ((atoms%invsat(na).EQ.0) .OR. (atoms%invsat(na).EQ.1)) THEN IF ((atoms%invsat(na) == 0) .OR. (atoms%invsat(na) == 1)) THEN
!---> if this atom is the first of two atoms related by inversion, !---> if this atom is the first of two atoms related by inversion,
!---> the contributions to the overlap matrix of both atoms are added !---> the contributions to the overlap matrix of both atoms are added
!---> at once. where it is made use of the fact, that the sum of !---> at once. where it is made use of the fact, that the sum of
!---> these contributions is twice the real part of the contribution !---> these contributions is twice the real part of the contribution
!---> of each atom. note, that in this case there are twice as many !---> of each atom. note, that in this case there are twice as many
!---> (2*(2*l+1)) k-vectors (compare abccoflo and comments there). !---> (2*(2*l+1)) k-vectors (compare abccoflo and comments there).
IF (atoms%invsat(na).EQ.0) invsfct = 1 IF (atoms%invsat(na) == 0) invsfct = 1
IF (atoms%invsat(na).EQ.1) invsfct = 2 IF (atoms%invsat(na) == 1) invsfct = 2
con = fpi_const/SQRT(cell%omtil)* ((atoms%rmt(ntyp))**2)/2.0 con = fpi_const/SQRT(cell%omtil)* ((atoms%rmt(ntyp))**2)/2.0
...@@ -82,7 +82,7 @@ CONTAINS ...@@ -82,7 +82,7 @@ CONTAINS
DO nkvec = 1,invsfct* (2*l+1) !Each LO can have several functions DO nkvec = 1,invsfct* (2*l+1) !Each LO can have several functions
!+t3e !+t3e
locol = lapw%nv(jintsp)+lapw%index_lo(lo,na)+nkvec !this is the column of the matrix locol = lapw%nv(jintsp)+lapw%index_lo(lo,na)+nkvec !this is the column of the matrix
IF (MOD(locol-1,mpi%n_size).EQ.mpi%n_rank) THEN IF (MOD(locol-1,mpi%n_size) == mpi%n_rank) THEN
locol=(locol-1)/mpi%n_size+1 !this is the column in local storage locol=(locol-1)/mpi%n_size+1 !this is the column in local storage
!-t3e !-t3e
k = lapw%kvec(nkvec,lo,na) k = lapw%kvec(nkvec,lo,na)
...@@ -107,7 +107,7 @@ CONTAINS ...@@ -107,7 +107,7 @@ CONTAINS
!---> orbitals at the same atom, if they have the same l !---> orbitals at the same atom, if they have the same l
DO lop = 1, (lo-1) DO lop = 1, (lo-1)
lp = atoms%llo(lop,ntyp) lp = atoms%llo(lop,ntyp)
IF (l.EQ.lp) THEN IF (l == lp) THEN
fact3 = con**2 * fl2p1 * (& fact3 = con**2 * fl2p1 * (&
alo1(lop)*(alo1(lo) + & alo1(lop)*(alo1(lo) + &
clo1(lo)*ud%uulon(lo,ntyp,isp))+& clo1(lo)*ud%uulon(lo,ntyp,isp))+&
......
...@@ -13,7 +13,7 @@ MODULE m_fleur_arguments ...@@ -13,7 +13,7 @@ MODULE m_fleur_arguments
CHARACTER(len=200) :: values CHARACTER(len=200) :: values
END TYPE t_fleur_param END TYPE t_fleur_param
INTEGER,PARAMETER:: no_params=6 INTEGER,PARAMETER:: no_params=7
TYPE(t_fleur_param) :: fleur_param(no_params)=(/& TYPE(t_fleur_param) :: fleur_param(no_params)=(/&
t_fleur_param(0,"-old","Generate input file for old fleur versions",""),& t_fleur_param(0,"-old","Generate input file for old fleur versions",""),&
...@@ -21,6 +21,7 @@ MODULE m_fleur_arguments ...@@ -21,6 +21,7 @@ MODULE m_fleur_arguments
t_fleur_param(0,"-genEnpara","generate an 'enpara' file",""),& t_fleur_param(0,"-genEnpara","generate an 'enpara' file",""),&
t_fleur_param(0,"-electronConfig","explicitely write the electron configuration into inp.xml",""),& t_fleur_param(0,"-electronConfig","explicitely write the electron configuration into inp.xml",""),&
t_fleur_param(0,"-fast_defaults","generate more aggressive (and less stable) input parameters for faster calculations",""),& t_fleur_param(0,"-fast_defaults","generate more aggressive (and less stable) input parameters for faster calculations",""),&
t_fleur_param(0,"-kpts_gw","add alternative k point set for GW",""),&
t_fleur_param(0,"-h","print this help message","")& t_fleur_param(0,"-h","print this help message","")&
/) /)
......
...@@ -32,6 +32,7 @@ CONTAINS ...@@ -32,6 +32,7 @@ CONTAINS
CALL print_argument("-explicit") CALL print_argument("-explicit")
CALL print_argument("-electronConfig") CALL print_argument("-electronConfig")
CALL print_argument("-fast_defaults") CALL print_argument("-fast_defaults")
CALL print_argument("-kpts_gw")
CALL print_argument("-h") CALL print_argument("-h")
WRITE(*,'(a)')"" WRITE(*,'(a)')""
WRITE(*,'(a)')"Please check the documentation on www.flapw.de for more details" WRITE(*,'(a)')"Please check the documentation on www.flapw.de for more details"
......
...@@ -279,6 +279,13 @@ SUBROUTINE w_inpXML(& ...@@ -279,6 +279,13 @@ SUBROUTINE w_inpXML(&
212 FORMAT(' <kPointDensity denX="',f0.6,'" denY="',f0.6,'" denZ="',f0.6,'" gamma="',l1,'"/>') 212 FORMAT(' <kPointDensity denX="',f0.6,'" denY="',f0.6,'" denZ="',f0.6,'" gamma="',l1,'"/>')
WRITE (fileNum,212) kpts%kPointDensity(1),kpts%kPointDensity(2),kpts%kPointDensity(3),kptGamma WRITE (fileNum,212) kpts%kPointDensity(1),kpts%kPointDensity(2),kpts%kPointDensity(3),kptGamma
END IF END IF
IF(juDFT_was_argument("-kpts_gw")) THEN
WRITE(fileNum,'(a)') ' <altKPointSet purpose="GW">'
WRITE(fileNum,'(a)') ' <kPointListFile filename="kpts_gw"/>'
WRITE(fileNum,'(a)') ' </altKPointSet>'
END IF
WRITE (fileNum,'(a)') ' </bzIntegration>' WRITE (fileNum,'(a)') ' </bzIntegration>'
! <energyParameterLimits ellow="-2.00000" elup="2.00000"/> ! <energyParameterLimits ellow="-2.00000" elup="2.00000"/>
......
...@@ -13,7 +13,7 @@ MODULE m_fleur_arguments ...@@ -13,7 +13,7 @@ MODULE m_fleur_arguments
CHARACTER(len=200) :: values CHARACTER(len=200) :: values
END TYPE t_fleur_param END TYPE t_fleur_param
INTEGER,PARAMETER:: no_params=22 INTEGER,PARAMETER:: no_params=23
TYPE(t_fleur_param) :: fleur_param(no_params)=(/& TYPE(t_fleur_param) :: fleur_param(no_params)=(/&
!Input options !Input options
t_fleur_param(0,"-toXML","Convert an old 'inp' file into the new XML format",""),& t_fleur_param(0,"-toXML","Convert an old 'inp' file into the new XML format",""),&
...@@ -60,6 +60,7 @@ MODULE m_fleur_arguments ...@@ -60,6 +60,7 @@ MODULE m_fleur_arguments
!Output !Output
t_fleur_param(0,"-no_out","Do not open the 'out' file but write to stdout",""),& t_fleur_param(0,"-no_out","Do not open the 'out' file but write to stdout",""),&
t_fleur_param(0,"-genEnpara","Generate an 'enpara' file for the energy parameters",""),& t_fleur_param(0,"-genEnpara","Generate an 'enpara' file for the energy parameters",""),&
t_fleur_param(0,"-kpts_gw","add alternative k point set for GW in all outputs for the XML input file",""),&
t_fleur_param(0,"-h","Print this message",""),& t_fleur_param(0,"-h","Print this message",""),&
t_fleur_param(0,"-no_send","Do not send usage data","")& t_fleur_param(0,"-no_send","Do not send usage data","")&
!HDF density !HDF density
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
USE m_setupMPI USE m_setupMPI
USE m_cdn_io USE m_cdn_io
USE m_fleur_info USE m_fleur_info
USE m_broyd_io
USE m_checks USE m_checks
USE m_prpqfftmap USE m_prpqfftmap
USE m_writeOutHeader USE m_writeOutHeader
...@@ -523,6 +524,7 @@ ...@@ -523,6 +524,7 @@
CALL results%init(dimension,input,atoms,kpts,noco) CALL results%init(dimension,input,atoms,kpts,noco)
IF (mpi%irank.EQ.0) THEN IF (mpi%irank.EQ.0) THEN
IF(input%gw.NE.0) CALL resetBroydenHistory()
CALL setStartingDensity(noco%l_noco) CALL setStartingDensity(noco%l_noco)
END IF END IF
......
...@@ -32,6 +32,7 @@ math/DoubleFactorial.f90 ...@@ -32,6 +32,7 @@ math/DoubleFactorial.f90
math/ExpSave.f90 math/ExpSave.f90
math/intgr.F90 math/intgr.F90
math/ylm4.F90 math/ylm4.F90
math/LegendrePoly.f90
) )
if (FLEUR_USE_FFTMKL) if (FLEUR_USE_FFTMKL)
set(fleur_F90 ${fleur_F90} math/mkl_dfti.f90) set(fleur_F90 ${fleur_F90} math/mkl_dfti.f90)
......
module m_LegendrePoly
implicit none
contains
pure function LegendrePoly(l,x) result(p)
implicit none
integer, intent(in) :: l
real, intent(in) :: x(:)
real :: p(size(x))
select case(l)
case(0)
p = 1.0
case(1)
p = x
case(2)
p = x**2 - 1./3.
case(3)
p = x**3 - 3./5. * x
case(4)
p = x**4 - 6./7. * x**2 + 3./35.
case(5)
p = x**5 - 10./9. * x**3 + 5./21. * x
case(6)
p = x**6 - 15./11. * x**4 + 5./11. * x**2 - 5./231
case(7)
p = x**7 - 21./13. * x**5 + 105./143. * x**3 - 35./429. * x
case(8)
p = x**8 - 28./15. * x**6 + 14./13. * x**4 - 28./143. * x**2 + 7./1287.
case(9)
p = x**9 - 36./17. * x**7 + 126./85. * x**5 - 84./221. * x**3 + 17./656.
case(10)
p = x**10 - 45./19. * x**8 + 630./323. * x**6 - 210./323. * x**4 + 106./1413. * x**2 - 1./733.
end select
end function LegendrePoly
pure function LegendrePoly_scalar(l,x) result(p)
implicit none
integer, intent(in) :: l
real, intent(in) :: x
real :: p
select case(l)
case(0)
p = 1.0
case(1)
p = x
case(2)
p = x**2 - 1./3.
case(3)
p = x**3 - 3./5. * x
case(4)
p = x**4 - 6./7. * x**2 + 3./35.
case(5)
p = x**5 - 10./9. * x**3 + 5./21. * x
case(6)
p = x**6 - 15./11. * x**4 + 5./11. * x**2 - 5./231
case(7)
p = x**7 - 21./13. * x**5 + 105./143. * x**3 - 35./429. * x
case(8)
p = x**8 - 28./15. * x**6 + 14./13. * x**4 - 28./143. * x**2 + 7./1287.
case(9)
p = x**9 - 36./17. * x**7 + 126./85. * x**5 - 84./221. * x**3 + 17./656.
case(10)
p = x**10 - 45./19. * x**8 + 630./323. * x**6 - 210./323. * x**4 + 106./1413. * x**2 - 1./733.
end select
end function LegendrePoly_scalar
end module m_LegendrePoly
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment