Commit ebc166ab authored by Daniel Wortmann's avatar Daniel Wortmann

Merge branch 'develop' of fleur-git:fleur into develop

parents a66945e4 a72e844e
*~
#~
#*
build
*.o
*.mod
*.x
*.swp
This diff is collapsed.
......@@ -2,34 +2,34 @@ include_directories(include)
set(fleur_F90 main/fleur.F90)
set(fleur_F77 "")
include(eigen/CmakeLists.txt)
include(force/CmakeLists.txt)
include(main/CmakeLists.txt)
include(core/CmakeLists.txt)
include(eigen_secvar/CmakeLists.txt)
include(global/CmakeLists.txt)
include(io/CmakeLists.txt)
include(optional/CmakeLists.txt)
include(xc-pot/CmakeLists.txt)
include(cdn/CmakeLists.txt)
include(diagonalization/CmakeLists.txt)
include(eigen_soc/CmakeLists.txt)
include(juDFT/CmakeLists.txt)
include(math/CmakeLists.txt)
include(orbdep/CmakeLists.txt)
include(cdn_mt/CmakeLists.txt)
include(dos/CmakeLists.txt)
include(fermi/CmakeLists.txt)
include(init/CmakeLists.txt)
include(ldau/CmakeLists.txt)
include(mix/CmakeLists.txt)
include(vgen/CmakeLists.txt)
include(eigen/CMakeLists.txt)
include(force/CMakeLists.txt)
include(main/CMakeLists.txt)
include(core/CMakeLists.txt)
include(eigen_secvar/CMakeLists.txt)
include(global/CMakeLists.txt)
include(io/CMakeLists.txt)
include(optional/CMakeLists.txt)
include(xc-pot/CMakeLists.txt)
include(cdn/CMakeLists.txt)
include(diagonalization/CMakeLists.txt)
include(eigen_soc/CMakeLists.txt)
include(juDFT/CMakeLists.txt)
include(math/CMakeLists.txt)
include(orbdep/CMakeLists.txt)
include(cdn_mt/CMakeLists.txt)
include(dos/CMakeLists.txt)
include(fermi/CMakeLists.txt)
include(init/CMakeLists.txt)
include(ldau/CMakeLists.txt)
include(mix/CMakeLists.txt)
include(vgen/CMakeLists.txt)
if (${Fleur_uses_MPI})
include(mpi/CmakeLists.txt)
include(mpi/CMakeLists.txt)
endif()
#include(wannier/CmakeLists.txt)
#include(wannier/CMakeLists.txt)
set(inpgen_F77
global/constants.f inpgen/element.f inpgen/atom_input.f inpgen/crystal.f inpgen/lattice2.f inpgen/setab.f inpgen/super_check.f
......@@ -40,7 +40,8 @@ inpgen/closure.f inpgen/lapw_input.f inpgen/struct_input.f inpgen/write_struct.
)
set(inpgen_F90 io/xsf_io.f90
global/types.F90 global/enpara.f90 global/chkmt.f90 inpgen/inpgen.f90 inpgen/set_inp.f90 io/rw_inp.f90)
global/types.F90 global/enpara.f90 global/chkmt.f90 inpgen/inpgen.f90 inpgen/set_inp.f90 io/rw_inp.f90 juDFT/juDFT.F90
juDFT/stop.F90 juDFT/time.F90 juDFT/init.F90)
set(fleur_SRC ${fleur_F90} ${fleur_F77})
......
......@@ -38,7 +38,7 @@ CONTAINS
USE m_hsefunctional
USE m_hybridmix , ONLY: amix_pbe0,amix_hf
USE m_util
USE icorrkeys
USE icorrkeys
USE m_eig66_io, ONLY : open_eig, write_eig, close_eig,read_eig
#ifdef CPP_MPI
USE m_mpimakegroups
......@@ -69,7 +69,7 @@ CONTAINS
#endif
! ..
! .. Scalar Arguments ..
INTEGER,INTENT(IN) :: it
INTEGER,INTENT(IN) :: it
INTEGER,INTENT(INOUT):: eig_id
! ..
!-odim
......@@ -88,9 +88,9 @@ CONTAINS
! .. Local Arrays ..
INTEGER, PARAMETER :: lmaxb=3
INTEGER, ALLOCATABLE :: matind(:,:),kveclo(:)
INTEGER, ALLOCATABLE :: nv2(:)
INTEGER, ALLOCATABLE :: nv2(:)
REAL, ALLOCATABLE :: bkpt(:)
REAL, ALLOCATABLE :: eig(:)
REAL, ALLOCATABLE :: eig(:)
#ifdef CPP_INVERSION
REAL, ALLOCATABLE :: z(:,:),a(:),b(:)
#else
......@@ -98,7 +98,7 @@ CONTAINS
#endif
COMPLEX, ALLOCATABLE :: vpw(:,:),vzxy(:,:,:,:)
COMPLEX, ALLOCATABLE :: vpwtot(:,:)
REAL, ALLOCATABLE :: vz(:,:,:),vr(:,:,:,:)
REAL, ALLOCATABLE :: vz(:,:,:),vr(:,:,:,:)
REAL, ALLOCATABLE :: vrtot(:,:,:,:)
COMPLEX, ALLOCATABLE :: vs_mmp(:,:,:,:)
......@@ -117,11 +117,11 @@ CONTAINS
! - scalar -
#ifdef CPP_NEVER
INTEGER, INTENT(IN) :: maxlcutm,maxindxm,maxbasm
INTEGER, INTENT(IN) :: maxindxp
INTEGER, INTENT(IN) :: bands
INTEGER, INTENT(IN) :: maxindxp
INTEGER, INTENT(IN) :: bands
! - arrays -
INTEGER, INTENT(IN) :: nindxm(0:maxlcutm,atoms%ntypd)
INTEGER, INTENT(IN) :: lcutm(atoms%ntypd)
INTEGER, INTENT(IN) :: lcutm(atoms%ntypd)
REAL , INTENT(IN) :: basm(atoms%jmtd,maxindxm,0:maxlcutm,atoms%ntypd)
#endif
! - local scalar -
......@@ -137,9 +137,9 @@ CONTAINS
#ifdef CPP_NEVER
INTEGER :: nobd(kpts%nkptf)
INTEGER :: lmaxc(atoms%ntypd)
INTEGER :: g(3)
INTEGER :: g(3)
INTEGER :: nindxp(0:maxlcutm,atoms%ntypd)
INTEGER , ALLOCATABLE :: nkpt_EIBZ(:)
INTEGER , ALLOCATABLE :: nkpt_EIBZ(:)
INTEGER , ALLOCATABLE :: nindxc(:,:)
INTEGER , ALLOCATABLE :: kveclo_eig(:,:)
INTEGER , ALLOCATABLE :: nbasm(:)
......@@ -164,7 +164,7 @@ CONTAINS
#endif
!
!
! --> Allocate
! --> Allocate
!
ALLOCATE ( ud%uloulopn(atoms%nlod,atoms%nlod,atoms%ntypd,dimension%jspd),nv2(dimension%jspd) )
ALLOCATE ( ud%ddn(0:atoms%lmaxd,atoms%ntypd,dimension%jspd),eig(dimension%neigd),bkpt(3) )
......@@ -675,6 +675,8 @@ CONTAINS
results%te_hfex%valence = 2*results%te_hfex%valence
results%te_hfex%core = 2*results%te_hfex%core
END IF
enpara_in=enpara
enpara_in%epara_min = minval(enpara%el0)
enpara_in%epara_min = min(minval(enpara%ello0),enpara_in%epara_min)
! enpara_in=enpara
END SUBROUTINE eigen
END MODULE m_eigen
......@@ -2,7 +2,7 @@ MODULE m_setabc1locdn
use m_juDFT
!***********************************************************************
! calculates the (lower case) a, b and c coefficients for the local
! orbitals. The radial function of the local orbital is a linear
! orbitals. The radial function of the local orbital is a linear
! combination of the apw radial function and its derivative and the
! extra radial funtion (a*u + b*udot + c*ulo). This function is zero
! and has zero derivative at the muffin tin boundary.
......@@ -31,12 +31,12 @@ MODULE m_setabc1locdn
TYPE(t_lapw),INTENT(IN) :: lapw
! ..
! .. Scalar Arguments ..
INTEGER, INTENT (IN) :: ne,iintsp,jspin
INTEGER, INTENT (IN) :: ne,iintsp,jspin
! ..
! .. Array Arguments ..
INTEGER, INTENT (IN) :: kveclo(atoms%nlotot)
INTEGER, INTENT (OUT) :: nbasf0(atoms%nlod,atoms%natd),nkvec(atoms%nlod,atoms%natd)
INTEGER, INTENT (OUT) :: kvec(2*(2*atoms%llod+1),atoms%nlod,atoms%ntypd )
INTEGER, INTENT (OUT) :: kvec(2*(2*atoms%llod+1),atoms%nlod,atoms%natd )
REAL, INTENT (OUT) :: alo1(atoms%nlod,atoms%ntypd),blo1(atoms%nlod,atoms%ntypd)
REAL, INTENT (OUT) :: clo1(atoms%nlod,atoms%ntypd)
COMPLEX, INTENT (INOUT) :: ccof(-atoms%llod:,:,:,:)!(-llod:llod,nobd,atoms%nlod,atoms%natd)
......
This diff is collapsed.
......@@ -11,9 +11,10 @@
!***********************************************************************
SUBROUTINE atom_input(
> infh,ntype,zatom,xl_buffer,buffer,nlod,
> jspins,film,neq,idlist,
> jspins,film,neq,idlist,xmlCoreRefOccs,
X nline,jri,lmax,lnonsph,ncst,rmt,dx,bmu,
< nlo,llo,nel )
X xmlCoreStates,xmlPrintCoreStates,xmlCoreOccs,
< nlo,llo,nel,el0,ello0,evac0 )
USE m_readrecord
USE m_setatomcore, ONLY : setatom_bystr, setcore_bystr
......@@ -30,6 +31,7 @@
LOGICAL, INTENT (IN) :: film
INTEGER, INTENT (IN) :: neq(ntype)
REAL , INTENT (IN) :: zatom(ntype),idlist(ntype)
REAL , INTENT (IN) :: xmlCoreRefOccs(29)
INTEGER, INTENT (INOUT) :: jri(ntype) ! mt radial mesh points
INTEGER, INTENT (INOUT) :: lmax(ntype) ! max. l to include for density, overlap etc.
INTEGER, INTENT (INOUT) :: lnonsph(ntype) ! max. l for nonspherical MT-contributions
......@@ -39,6 +41,10 @@
REAL, INTENT (INOUT) :: rmt(ntype) ! muffin-tin radius
REAL, INTENT (INOUT) :: dx(ntype) ! log. spacing
REAL, INTENT (INOUT) :: bmu(ntype) ! magnetic moment
REAL, INTENT (INOUT) :: xmlCoreOccs(2,29,ntype)
LOGICAL, INTENT (INOUT) :: xmlCoreStates(29,ntype)
LOGICAL, INTENT (INOUT) :: xmlPrintCoreStates(29,ntype)
REAL, INTENT (OUT) :: el0(0:3,ntype),ello0(nlod,ntype),evac0(2)
CHARACTER(len=xl_buffer) :: buffer
!===> data
......@@ -51,6 +57,7 @@
INTEGER :: lmax0_def,lnonsph0_def,jri0_def,ncst0_def
INTEGER :: lmax0,lnonsph0,jri0,ncst0,nlod0,llod
INTEGER :: natomst,ncorest,nvalst,z,nlo0
INTEGER :: xmlCoreStateNumber
REAL :: rmt0_def,dx0_def,bmu0_def
REAL :: rmt0,dx0,bmu0,zat0,id
LOGICAL :: fatalerror, h_atom, h_allatoms
......@@ -58,7 +65,6 @@
INTEGER :: lonqn(nlod,ntype),skiplo(ntype),z_int(ntype)
INTEGER :: coreqn(2,nstd,ntype),lval(nstd,ntype),llo0(nlod)
REAL :: nelec(0:nwdd),coreocc(nstd,ntype)
REAL :: el0(0:3,ntype),ello0(nlod,ntype),evac0(2)
LOGICAL :: lchange(0:3,ntype),llochg(2,ntype)
......@@ -68,6 +74,7 @@
CHARACTER(len=13) :: fname
CHARACTER(len=1) :: lotype(0:3)
DATA lotype /'s','p','d','f'/
!---> initialize some variables
......@@ -333,6 +340,7 @@
coreocc(1:nstd,1:ntype) = -1.0
nel = 0; el0 = -9999.9
ello0 = -9999.9; evac0 = -9999.9
atoms: DO n = 1, ntype
CALL setcore_bystr(
......@@ -365,18 +373,72 @@
j = - coreocc(i,n)
ENDIF
write(27,'(4i3)') coreqn(1,i,n),coreqn(2,i,n),j,j
xmlCoreStateNumber = 0
SELECT CASE(coreqn(1,i,n))
CASE (1)
IF(coreqn(2,i,n).EQ.-1) xmlCoreStateNumber = 1 !(1s1/2)
CASE (2)
IF(coreqn(2,i,n).EQ.-1) xmlCoreStateNumber = 2 !(2s1/2)
IF(coreqn(2,i,n).EQ.1) xmlCoreStateNumber = 3 !(2p1/2)
IF(coreqn(2,i,n).EQ.-2) xmlCoreStateNumber = 4 !(2p3/2)
CASE (3)
IF(coreqn(2,i,n).EQ.-1) xmlCoreStateNumber = 5 !(3s1/2)
IF(coreqn(2,i,n).EQ.1) xmlCoreStateNumber = 6 !(3p1/2)
IF(coreqn(2,i,n).EQ.-2) xmlCoreStateNumber = 7 !(3p3/2)
IF(coreqn(2,i,n).EQ.2) xmlCoreStateNumber = 9 !(3d3/2)
IF(coreqn(2,i,n).EQ.-3) xmlCoreStateNumber = 10 !(3d5/2)
CASE (4)
IF(coreqn(2,i,n).EQ.-1) xmlCoreStateNumber = 8 !(4s1/2)
IF(coreqn(2,i,n).EQ.1) xmlCoreStateNumber = 11 !(4p1/2)
IF(coreqn(2,i,n).EQ.-2) xmlCoreStateNumber = 12 !(4p3/2)
IF(coreqn(2,i,n).EQ.2) xmlCoreStateNumber = 14 !(4d3/2)
IF(coreqn(2,i,n).EQ.-3) xmlCoreStateNumber = 15 !(4d5/2)
IF(coreqn(2,i,n).EQ.3) xmlCoreStateNumber = 19 !(4f5/2)
IF(coreqn(2,i,n).EQ.-4) xmlCoreStateNumber = 20 !(4f7/2)
CASE (5)
IF(coreqn(2,i,n).EQ.-1) xmlCoreStateNumber = 13 !(5s1/2)
IF(coreqn(2,i,n).EQ.1) xmlCoreStateNumber = 16 !(5p1/2)
IF(coreqn(2,i,n).EQ.-2) xmlCoreStateNumber = 17 !(5p3/2)
IF(coreqn(2,i,n).EQ.2) xmlCoreStateNumber = 21 !(5d3/2)
IF(coreqn(2,i,n).EQ.-3) xmlCoreStateNumber = 22 !(5d5/2)
IF(coreqn(2,i,n).EQ.3) xmlCoreStateNumber = 26 !(5f5/2)
IF(coreqn(2,i,n).EQ.-4) xmlCoreStateNumber = 27 !(5f7/2)
CASE (6)
IF(coreqn(2,i,n).EQ.-1) xmlCoreStateNumber = 18 !(6s1/2)
IF(coreqn(2,i,n).EQ.1) xmlCoreStateNumber = 23 !(6p1/2)
IF(coreqn(2,i,n).EQ.-2) xmlCoreStateNumber = 24 !(6p3/2)
IF(coreqn(2,i,n).EQ.2) xmlCoreStateNumber = 28 !(6d3/2)
IF(coreqn(2,i,n).EQ.-3) xmlCoreStateNumber = 29 !(6d5/2)
CASE (7)
IF(coreqn(2,i,n).EQ.-1) xmlCoreStateNumber = 25 !(7s1/2)
END SELECT
IF(xmlCoreStateNumber.EQ.0) STOP 'Invalid core state!'
xmlCoreStates(xmlCoreStateNumber,n) = .TRUE.
xmlPrintCoreStates(xmlCoreStateNumber,n) =
+ coreocc(i,n).NE.xmlCoreRefOccs(xmlCoreStateNumber)
SELECT CASE(xmlCoreStateNumber)
CASE (9:10,14:15,19:22,26:29)
up = MIN((xmlCoreRefOccs(xmlCoreStateNumber)/2),
+ coreocc(i,n))
dn = MAX(0.0,coreocc(i,n)-up)
CASE DEFAULT
up = CEILING(coreocc(i,n)/2)
dn = FLOOR(coreocc(i,n)/2)
END SELECT
xmlCoreOccs(1,xmlCoreStateNumber,n) = up
xmlCoreOccs(2,xmlCoreStateNumber,n) = dn
ENDDO
DO i = ncorest+1, natomst
WRITE(6,'(" valence :",2i3,f6.1,i4,a1)')
& coreqn(1,i,n),coreqn(2,i,n),coreocc(i,n),
& coreqn(1,i,n),lotype(lval(i,n))
nel = nel + coreocc(i,n) *neq(n)
c
c In d and f shells a magnetic alignment of the spins
c is preferred in the valence bands
c Hence the up and down occupation is chosen such that
c the total spin is maximized
c
IF ( abs(coreqn(2,i,n)+0.5) > 2.499 )
+ THEN
IF ( coreocc(i,n) > abs(coreqn(2,i,n)) ) THEN
......@@ -386,9 +448,9 @@ c
up = coreocc(i,n)
dn = 0
END IF
c
c in s and p states equal occupation of up and down states
c
ELSE
j = INT(coreocc(i,n) / 2)
IF (coreocc(i,n) > 2*j) THEN
......@@ -452,7 +514,7 @@ c
DO i = 1, nlo(n)
ello0(i,n) = REAL(lonqn(i,n))
IF ( lonqn(i,n) == NINT(el0(llo(i,n),n)) ) THEN ! increase qn
el0(llo(i,n),n) = el0(llo(i,n),n) + 1 ! in LAPW's by 1
el0(llo(i,n),n) = el0(llo(i,n),n) + 1 ! in LAPW's by 1
ENDIF
ENDDO
ENDIF
......@@ -463,6 +525,52 @@ c
ENDDO atoms
DO n = 1, ntype
z = NINT(zatom(n))
IF (all(el0(:,n)>-9999.)) cycle !enpara was set already
IF ( z < 3 ) THEN
el0(:,n) = real( (/1,2,3,4/) )
ELSEIF ( z < 11 ) THEN
el0(:,n) = real( (/2,2,3,4/) )
ELSEIF ( z < 19 ) THEN
el0(:,n) = real( (/3,3,3,4/) )
ELSEIF ( z < 31 ) THEN
el0(:,n) = real( (/4,4,3,4/) )
ELSEIF ( z < 37 ) THEN
el0(:,n) = real( (/4,4,4,4/) )
ELSEIF ( z < 49 ) THEN
el0(:,n) = real( (/5,5,4,4/) )
ELSEIF ( z < 55 ) THEN
el0(:,n) = real( (/5,5,5,4/) )
ELSEIF ( z < 72 ) THEN
el0(:,n) = real( (/6,6,5,4/) )
ELSEIF ( z < 81 ) THEN
el0(:,n) = real( (/6,6,5,5/) )
ELSEIF ( z < 87 ) THEN
el0(:,n) = real( (/6,6,6,5/) )
ELSE
el0(:,n) = real( (/7,7,6,5/) )
ENDIF
! correct valence charge
DO i = 1,nlo(n)
IF (llo(i,n).GT.3) THEN
nel = nel - 2*(2*llo(i,n)+1)*neq(n)
IF (llo(i,n) == 0) ncst(n) = ncst(n) + 1
IF (llo(i,n) > 0) ncst(n) = ncst(n) + 2
ELSE IF (ello0(i,n).GE.el0(llo(i,n),n)) THEN
nel = nel - 2*(2*llo(i,n)+1)*neq(n)
IF (llo(i,n) == 0) ncst(n) = ncst(n) + 1
IF (llo(i,n) > 0) ncst(n) = ncst(n) + 2
END IF
ENDDO
DO i = 1, nlo(n)
IF (ello0(i,n).EQ.0.0) THEN
ello0(i,n) = el0(llo(i,n),n) - 1
END IF
ENDDO
ENDDO
WRITE (6,'("Valence Electrons =",i5)') nel
......
......@@ -180,6 +180,7 @@ PROGRAM inpgen
CLOSE (55)
ENDIF
DEALLOCATE (vacuum%izlay)
DEALLOCATE ( atoms%taual,sym%mrot,sym%tau,atoms%neq,atoms%zatom,atoms%rmt,natmap,atoms%pos,idlist )
IF (inistop) CALL juDFT_end("Symmetry done")
......
......@@ -37,7 +37,7 @@
INTEGER nel,i,j
REAL kmax,dtild,dvac1,n1,n2,gam,kmax0,dtild0,dvac0
LOGICAL l_test,l_gga,l_exists
REAL dx0(atoms%ntype)
REAL dx0(atoms%ntype), rmtTemp(atoms%ntype)
INTEGER div(3)
INTEGER jri0(atoms%ntype),lmax0(atoms%ntype),nlo0(atoms%ntype),llo0(atoms%nlod,atoms%ntype)
CHARACTER(len=1) :: ch_rw
......@@ -48,7 +48,8 @@
INTEGER nu,iofile
INTEGER iggachk
INTEGER n ,iostat
REAL scale,scpos ,zc
REAL scale,scpos ,zc
REAL el0(0:3,atoms%ntype),ello0(atoms%nlod,atoms%ntype),evac0(2)
TYPE(t_banddos)::banddos
TYPE(t_obsolete)::obsolete
......@@ -74,6 +75,16 @@
INTEGER :: nkpt3(3)
!HF
LOGICAL :: xmlCoreStates(29,atoms%ntype)
LOGICAL :: xmlPrintCoreStates(29,atoms%ntype)
REAL :: xmlCoreOccs(2,29,atoms%ntype)
REAL :: xmlCoreRefOccs(29)
DATA xmlCoreRefOccs /2,2,2,4,2,2,4,2,4,6,2,4,2,4,6,2,4,2,6,8,4,&
& 6,2,4,2,6,8,4,6/
xmlCoreStates = .FALSE.
xmlPrintCoreStates = .FALSE.
xmlCoreOccs = 0.0
l_test = .false.
l_gga = .true.
atoms%nlod=9
......@@ -115,7 +126,8 @@
obsolete%lpr = 0 ; input%itmax = 9 ; input%maxiter = 99 ; input%imix = 7 ; input%alpha = 0.05
input%spinf = 2.0 ; obsolete%lepr = 0
sliceplot%kk = 0 ; sliceplot%nnne = 0 ; obsolete%nwd = 1 ; vacuum%nstars = 0 ; vacuum%nstm = 0
input%isec1 = 99 ; nu = 5 ; vacuum%layerd = 1 ; iofile = 6
input%isec1 = 99 ; nu = 5 ; vacuum%layerd = 1 ; iofile = 6
ALLOCATE(vacuum%izlay(vacuum%layerd,2))
banddos%ndir = 0 ; vacuum%layers = 0 ; atoms%nflip(:) = 1 ; vacuum%izlay(:,:) = 0
atoms%lda_u%l = -1 ; atoms%relax(1:2,:) = 1 ; atoms%relax(:,:) = 1
input%epsdisp = 0.00001 ; input%epsforce = 0.00001 ; input%xa = 2.0 ; input%thetad = 330.0
......@@ -167,19 +179,25 @@
! --> read in (possibly) atomic info
stars%gmax = 3.0 * kmax ; xcpot%gmaxxc = 2.5 * kmax ; input%rkmax = kmax
atoms%lnonsph(:) = min( max( (atoms%lmax(:)-2),3 ), 8 )
CALL atom_input(&
& infh,atoms%ntype,atoms%zatom,xl_buffer,buffer,atoms%nlod,&
& input%jspins,input%film,atoms%neq,idlist,&
& input%jspins,input%film,atoms%neq,idlist,xmlCoreRefOccs,&
& nline,atoms%jri,atoms%lmax,atoms%lnonsph,atoms%ncst,atoms%rmt,atoms%dx,atoms%bmu,&
& atoms%nlo,atoms%llo,nel)
& xmlCoreStates,xmlPrintCoreStates,xmlCoreOccs,&
& atoms%nlo,atoms%llo,nel,el0,ello0,evac0)
! --> check once more
input%zelec = nel
! --> check once more
rmtTemp = 999.0
l_test = .true.
CALL chkmt(&
& atoms,input,vacuum,cell,oneD,&
& l_gga,noel,l_test,&
& kmax0,dtild0,dvac0,lmax0,jri0,atoms%rmt,dx0)
& kmax0,dtild0,dvac0,lmax0,jri0,rmtTemp,dx0)
IF ( ANY(atoms%nlo(:).NE.0) ) THEN
input%ellow = -1.8
......@@ -190,10 +208,7 @@
input%elup = 0.5
ELSE
input%elup = 1.0
ENDIF
stars%gmax = 3.0 * kmax ; xcpot%gmaxxc = 2.5 * kmax ; input%rkmax = kmax
atoms%lnonsph(:) = min( max( (atoms%lmax(:)-2),3 ), 8 )
input%zelec = nel
ENDIF
IF (.not.input%film) THEN
vacuum%dvac = a3(3) ; dtild = vacuum%dvac
......@@ -250,6 +265,7 @@
selct2(2,:) = 0
selct2(3,:) = 4
selct2(4,:) = 2
ALLOCATE(hybrid%lcutm2(atoms%ntypd),hybrid%lcutwf(atoms%ntypd))
hybrid%lcutm2 = 4
hybrid%lcutwf = atoms%lmax - atoms%lmax / 10
hybrid%ewaldlambda = 3
......@@ -257,11 +273,12 @@
bands = max( nint(input%zelec)*10, 60 )
hybrid%bands2 = max( nint(input%zelec)*10, 60 )
nkpt3 = (/ 4, 4, 4 /)
l_gamma = .true.
l_gamma = .false.
IF ( l_hyb ) THEN
input%ellow = input%ellow - 2.0
input%elup = input%elup + 10.0
input%gw_neigd = bands
l_gamma = .true.
ELSE
input%gw_neigd = 0
END IF
......@@ -350,6 +367,8 @@
9999 FORMAT ( 'nkpt=',i5,',nx=',i2,',ny=',i2,',nz=',i2,',gamma=',l1)
CLOSE (iofile)
END IF ! l_hyb
DEALLOCATE(hybrid%lcutm2,hybrid%lcutwf)
!HF
END SUBROUTINE set_inp
END MODULE m_setinp
......@@ -84,14 +84,14 @@
IF (PRESENT(dtild_opt)) dtild=dtild_opt
IF (PRESENT(name_opt)) name=name_opt
! Initialize variables
l_hyb = .false.
!---------------------------------------------------------------------
IF (ch_rw.eq.'r') THEN
!--------------------------------------------------------------------
OPEN (5,file='inp',form='formatted',status='old')
! Initialize variables
l_hyb = .false.
!
a1(:) = 0
a2(:) = 0
......
......@@ -23,9 +23,9 @@
! core tails & start --- r.abt 1998
! spin orbit coupling --- a.shick,x.nie 1998
! non-colinear magnet. --- p.kurz 1999
! one-dimensional --- y.mokrousov 2002
! exchange parameters --- m.lezaic 2004
!
! one-dimensional --- y.mokrousov 2002
! exchange parameters --- m.lezaic 2004
!
! g.bihlmayer, s.bluegel 1999
! ***************************************************************
!----------------------------------------
......@@ -49,7 +49,7 @@
! +-+
!----------------------------------------
!
! I/O file list
! I/O file list
! 2... time.info ...
! 5... inp ...
! 6... out ...
......@@ -66,7 +66,7 @@
! 22... dirofmag ...
! 24... nocoinf ...
! 25... potmat ...
! 26... rhomat_inp & rhomat_out
! 26... rhomat_inp & rhomat_out
! 28... tmat ...
! 29... tlst ...
! 38... tmas ...
......@@ -97,7 +97,7 @@
! 116... qptsinfo ...
! 117... shells ...
! 118... MCinp ...
! 300... matelsso (for ss+soc)
! 300... matelsso (for ss+soc)
! 301+XXX matelXXX (for ss+soc)
!
!----------------------------------------
......@@ -105,7 +105,7 @@
USE m_fleur_init
USE m_pldngen
USE m_optional
USE m_vgen
USE m_vgen
USE m_rhodirgen
USE m_writexcstuff
USE m_vmatgen
......@@ -162,7 +162,7 @@
TYPE(t_vacuum) :: vacuum
TYPE(t_sliceplot):: sliceplot
TYPE(t_banddos) :: banddos
TYPE(t_obsolete) :: obsolete
TYPE(t_obsolete) :: obsolete
TYPE(t_enpara) :: enpara
TYPE(t_xcpot) :: xcpot
TYPE(t_results) :: results
......@@ -175,13 +175,13 @@
! .. Local Scalars ..
INTEGER:: eig_id
INTEGER:: i,it,ithf,jspin,n
INTEGER:: i,it,ithf,jspin,n
LOGICAL:: stop80,reap,l_endit,l_opti,l_cont
CHARACTER(len=9) ivers
CHARACTER(len=12) fname(3)
!--- J<
INTEGER :: phn
REAL, PARAMETER :: tol = 1.e-8
INTEGER :: phn
REAL, PARAMETER :: tol = 1.e-8
INTEGER :: qcount ,imt,i_J,j_J
!--- J>
......@@ -199,7 +199,7 @@