Commit 23cde828 authored by Daniel Wortmann's avatar Daniel Wortmann

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

parents 281aafcc 61a638c7
......@@ -74,18 +74,15 @@
DATA ch_mcd/'.+' , '.-' , '.0'/
!
qdim = lmax*atoms%ntype+3
l_orbcomp = .false.
l_orbcomp = banddos%l_orb
IF (banddos%ndir.EQ.-3) THEN
qdim = 2*nsld
n_orb = 0
INQUIRE(file='orbcomp',exist=l_orbcomp)
IF (l_orbcomp) THEN
OPEN (1,file='orbcomp',form='formatted')
READ (1,*) n_orb
IF (banddos%l_orb) THEN
n_orb = banddos%orbCompAtom
WRITE (*,*) 'DOS: orbcomp',n_orb
CLOSE (1)
qdim = 23
ENDIF
END IF
ENDIF
ALLOCATE( qal(qdim,dimension%neigd,kpts%nkpt),&
& qval(vacuum%nstars*vacuum%layers*vacuum%nvac,dimension%neigd,kpts%nkpt),&
......
......@@ -584,6 +584,7 @@
LOGICAL :: l_orb
LOGICAL :: vacdos
INTEGER :: ndir
INTEGER :: orbCompAtom
REAL :: e1_dos
real :: e2_dos
real :: sig_dos
......
......@@ -90,6 +90,11 @@
input%l_core_confpot=.TRUE. !this is the former CPP_CORE switch!
input%l_useapw=.FALSE. !this is the former CPP_APW switch!
atoms%lapw_l(:) = -1
IF(ANY(atoms%lnonsph(:).GT.39)) THEN
WRITE(*,*) 'lnonsph > 39 detected. This is interpreted as an intention to use APW+lo.'
WRITE(*,*) 'Switching to APW+lo!'
input%l_useapw=.TRUE.
END IF
!---> pk non-collinear
!---> read the angle information from nocoinf
noco%qss(:) = 0.0
......
......@@ -43,6 +43,7 @@ SUBROUTINE r_inpXML(&
USE m_localsym
USE m_od_chisym
USE m_ylm
USE m_chkmt
USE m_convndim
USE m_dwigner
USE m_mapatom
......@@ -153,7 +154,7 @@ SUBROUTINE r_inpXML(&
REAL :: tauTemp(3,48)
REAL :: bk(3)
LOGICAL :: flipSpin, l_eV, invSym, l_qfix, relaxX, relaxY, relaxZ, l_gga, l_kpts
LOGICAL :: l_vca, coreConfigPresent, l_enpara
LOGICAL :: l_vca, coreConfigPresent, l_enpara, l_orbcomp
REAL :: magMom, radius, logIncrement, qsc(3), latticeScale, dr
REAL :: aTemp, zp, rmtmax, sumWeight, ldau_u, ldau_j, tempReal
REAL :: weightScale, eParamUp, eParamDown
......@@ -178,6 +179,13 @@ SUBROUTINE r_inpXML(&
INTEGER, ALLOCATABLE :: speciesLOEDeriv(:)
REAL, ALLOCATABLE :: speciesLOeParams(:), speciesLLOReal(:)
! Variables for MT radius testing:
REAL :: dtild1,kmax1,dvac1
LOGICAL :: l_test
INTEGER, ALLOCATABLE :: jri1(:), lmax1(:)
REAL, ALLOCATABLE :: rmt1(:), dx1(:)
EXTERNAL prp_xcfft_box
interface
......@@ -480,7 +488,9 @@ SUBROUTINE r_inpXML(&
DO i = 1, kpts%numSpecialPoints
WRITE(xPathA,*) '/fleurInput/calculationSetup/bzIntegration/kPointCount/specialPoint[',i,']'
valueString = TRIM(ADJUSTL(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA)))))
READ(valueString,*) kpts%specialPoints(1,i), kpts%specialPoints(2,i), kpts%specialPoints(3,i)
kpts%specialPoints(1,i) = evaluatefirst(valueString)
kpts%specialPoints(2,i) = evaluatefirst(valueString)
kpts%specialPoints(3,i) = evaluatefirst(valueString)
kpts%specialPointNames(i) = xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@name')
END DO
END IF
......@@ -1242,6 +1252,7 @@ SUBROUTINE r_inpXML(&
ALLOCATE (speciesNames(numSpecies), speciesNLO(numSpecies))
atoms%numStatesProvided = 0
atoms%lapw_l(:) = -1
DO iSpecies = 1, numSpecies
! Attributes of species
......@@ -1266,8 +1277,6 @@ SUBROUTINE r_inpXML(&
lmaxAPW = evaluateFirstIntOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/atomicCutoffs/@lmaxAPW'))
END IF
! WRITE(*,*) 'APW+lo cutoffs ignored for the moment'
numberNodes = xmlGetNumberOfNodes(TRIM(ADJUSTL(xPathA))//'/ldaU')
ldau_l = -1
ldau_u = 0.0
......@@ -1566,6 +1575,8 @@ SUBROUTINE r_inpXML(&
!!! Start of atomGroup section
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
banddos%l_orb = .FALSE.
banddos%orbCompAtom = 0
atoms%l_geo = .FALSE.
atoms%relax = 0
na = 0
......@@ -1605,6 +1616,14 @@ SUBROUTINE r_inpXML(&
atoms%taual(2,na) = evaluatefirst(valueString)
atoms%taual(3,na) = evaluatefirst(valueString)
atoms%pos(:,na) = matmul(cell%amat,atoms%taual(:,na))
l_orbcomp = evaluateFirstBoolOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))//'/@orbcomp'))
IF(l_orbcomp) THEN
IF(banddos%l_orb) THEN
CALL juDFT_error("Multiple orbcomp flags set.", calledby = "r_inpXML")
END IF
banddos%l_orb = .TRUE.
banddos%orbCompAtom = na
END IF
END DO
numberNodes = xmlGetNumberOfNodes(TRIM(ADJUSTL(xPathA))//'/absPos')
......@@ -1622,6 +1641,14 @@ SUBROUTINE r_inpXML(&
atoms%taual(2,na) = evaluatefirst(valueString)
atoms%taual(3,na) = evaluatefirst(valueString) / cell%amat(3,3)
atoms%pos(:,na) = matmul(cell%amat,atoms%taual(:,na))
l_orbcomp = evaluateFirstBoolOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))//'/@orbcomp'))
IF(l_orbcomp) THEN
IF(banddos%l_orb) THEN
CALL juDFT_error("Multiple orbcomp flags set.", calledby = "r_inpXML")
END IF
banddos%l_orb = .TRUE.
banddos%orbCompAtom = na
END IF
END DO
!Read in atom group specific noco parameters
......@@ -1785,6 +1812,7 @@ SUBROUTINE r_inpXML(&
ALLOCATE(atoms%lo1l(0:atoms%llod,atoms%ntype))
ALLOCATE(atoms%nlol(0:atoms%llod,atoms%ntype))
IF (ANY(atoms%lapw_l(:).NE.-1)) input%l_useapw = .TRUE.
DO iType = 1, atoms%ntype
IF (atoms%nlo(iType).GE.1) THEN
IF (input%secvar) THEN
......@@ -1823,7 +1851,6 @@ SUBROUTINE r_inpXML(&
DO ilo = 1,atoms%nlo(iType)
if (input%l_useapW) THEN
IF (atoms%ulo_der(ilo,iType).EQ.1) THEN
atoms%l_dulo(ilo,iType) = .TRUE.
END IF
......@@ -1962,6 +1989,8 @@ SUBROUTINE r_inpXML(&
DO i = 1, kpts%nkpt
kpts%wtkpt(i) = kpts%wtkpt(i) / sumWeight
END DO
kpts%nkpt3(:) = kpts%nmop(:)
IF (kpts%nkpt3(3).EQ.0) kpts%nkpt3(3) = 1
! Generate missing general parameters
......@@ -2070,6 +2099,16 @@ SUBROUTINE r_inpXML(&
noel(iType) = namat_const(atoms%nz(iType))
END DO
! Check muffin tin radii
ALLOCATE (jri1(atoms%ntype), lmax1(atoms%ntype))
ALLOCATE (rmt1(atoms%ntype), dx1(atoms%ntype))
l_test = .TRUE. ! only checking, dont use new parameters
CALL chkmt(atoms,input,vacuum,cell,oneD,l_gga,noel,l_test,&
kmax1,dtild1,dvac1,lmax1,jri1,rmt1,dx1)
DEALLOCATE (jri1,lmax1,rmt1,dx1)
! Read in enpara file iff available
l_enpara = .FALSE.
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -316,6 +316,8 @@
!
stars%ng3=stars%ng3 ; stars%ng2=stars%ng2
!+t3e
banddos%l_orb = .FALSE.
banddos%orbCompAtom = 0
ENDIF ! mpi%irank.eq.0
CALL timestop("preparation:stars,lattice harmonics,+etc")
......@@ -404,6 +406,19 @@
!-t3e
!--- J>
!Now check for additional input files
IF (mpi%irank.EQ.0) THEN
IF(.NOT.banddos%l_orb) THEN
INQUIRE(file='orbcomp',exist=banddos%l_orb)
IF (banddos%l_orb) THEN
OPEN (111,file='orbcomp',form='formatted')
READ (111,*) banddos%orbCompAtom
CLOSE (111)
END IF
END IF
INQUIRE(file='mcd_inp',exist=banddos%l_mcd)
END IF
#ifdef CPP_MPI
CALL mpi_bc_all(&
......@@ -548,11 +563,6 @@
!new check mode will only run the init-part of FLEUR
IF (judft_was_argument("-check")) CALL judft_end("Check-mode done",mpi%irank)
!Now check for additional input files
INQUIRE(file='orbcomp',exist=banddos%l_orb)
INQUIRE(file='mcd_inp',exist=banddos%l_mcd)
!check for broken feature
IF ((mpi%n_size>1).and.(ANY(atoms%nlo(:)>0)).and.(noco%l_noco)) call judft_warn("Eigenvector parallelization is broken for noco&LOs")
......
......@@ -40,7 +40,7 @@ CONTAINS
INTEGER n
REAL rdum
! .. Local Arrays ..
INTEGER i(37),ierr(3)
INTEGER i(38),ierr(3)
REAL r(29)
LOGICAL l(43)
! ..
......@@ -55,7 +55,8 @@ CONTAINS
i(22)=atoms%n_u ; i(23) = sym%nop2 ; i(24) = sym%nsymt ; i(25) = xcpot%icorr ; i(26) = xcpot%igrd
i(27)=vacuum%nstars ; i(28)=vacuum%nstm ; i(29)=oneD%odd%nq2 ; i(30)=oneD%odd%nop
i(31)=input%gw ; i(32)=input%gw_neigd ; i(33)=hybrid%ewaldlambda ; i(34)=hybrid%lexp
i(35)=hybrid%bands1 ; i(36)=hybrid%bands2 ; i(37)=input%imix
i(35)=hybrid%bands1 ; i(36)=hybrid%bands2 ; i(37)=input%imix ; i(38)=banddos%orbCompAtom
r(1)=cell%omtil ; r(2)=cell%area ; r(3)=vacuum%delz ; r(4)=cell%z1 ; r(5)=input%alpha
r(6)=sliceplot%e1s ; r(7)=sliceplot%e2s ; r(8)=noco%theta ; r(9)=noco%phi ; r(10)=vacuum%tworkf
r(11)=vacuum%locx(1) ; r(12)=vacuum%locx(2); r(13)=vacuum%locy(1) ; r(14)=vacuum%locy(2)
......@@ -63,14 +64,15 @@ CONTAINS
r(19)=cell%volint ; r(20)=hybrid%gcutm1 ; r(21)=hybrid%tolerance1 ; r(22)=hybrid%gcutm2
r(23)=hybrid%tolerance2 ; r(24)=input%delgau ; r(25)=input%tkb ; r(26)=input%efield%vslope
r(27)=aMix_VHSE() ; r(28)=omega_VHSE() ; r(29)=input%minDistance
l(1)=input%eonly ; l(3)=input%secvar ; l(4)=sym%zrfs ; l(5)=input%film
l(6)=sym%invs ; l(7)=sym%invs2 ; l(8)=input%l_bmt ; l(9)=input%l_f ; l(10)=input%cdinf
l(11)=banddos%dos ; l(13)=banddos%vacdos ; l(14)=input%integ ; l(15)=sliceplot%iplot
l(16)=input%strho ; l(17)=input%swsp ; l(18)=input%lflip ; l(19)=obsolete%l_f2u ; l(20)=obsolete%l_u2f
l(21)=input%pallst ; l(22)=sliceplot%slice ; l(23)=noco%l_soc ; l(24)=vacuum%starcoeff
l(25)=noco%l_noco ; l(26)=noco%l_ss; l(27)=noco%l_mperp; l(28)=noco%l_constr
l(29)=oneD%odd%d1 ; l(30)=jij%l_J ; l(31)=jij%l_disp ; l(32)=input%ctail
l(35)=input%sso_opt(1)
l(29)=oneD%odd%d1 ; l(30)=jij%l_J ; l(31)=jij%l_disp ; l(32)=input%ctail ; l(33)=banddos%l_orb
l(34)=banddos%l_mcd ; l(35)=input%sso_opt(1)
l(36)=input%sso_opt(2) ; l(37)=obsolete%pot8; l(38)=input%efield%l_segmented
l(39)=sym%symor ; l(40)=input%frcor ; l(41)=input%tria ; l(42)=input%efield%dirichlet
l(43)=input%efield%l_dirichlet_coeff
......@@ -84,7 +86,7 @@ CONTAINS
sliceplot%nnne=i(17) ; banddos%ndir=i(18) ; stars%mx1=i(19) ; stars%mx2=i(20) ; stars%mx3=i(21)
input%jspins=i(12) ; vacuum%nvac=i(13) ; input%itmax=i(14) ; sliceplot%kk=i(15) ; vacuum%layers=i(16)
stars%ng2=i(7) ; stars%ng3=i(8) ; vacuum%nmz=i(9) ; vacuum%nmzxy=i(10) ; obsolete%lepr=i(11)
atoms%ntype=i(3) ; input%isec1=i(6)
atoms%ntype=i(3) ; input%isec1=i(6) ; banddos%orbCompAtom=i(38)
input%coretail_lmax=i(2)
!
CALL MPI_BCAST(r,SIZE(r),MPI_DOUBLE_PRECISION,0,mpi%mpi_comm,ierr)
......@@ -106,7 +108,8 @@ CONTAINS
noco%l_noco=l(25) ; noco%l_ss=l(26) ; noco%l_mperp=l(27) ; noco%l_constr=l(28)
input%pallst=l(21) ; sliceplot%slice=l(22) ; noco%l_soc=l(23) ; vacuum%starcoeff=l(24)
input%strho=l(16) ; input%swsp=l(17) ; input%lflip=l(18) ; obsolete%l_f2u=l(19) ; obsolete%l_u2f=l(20)
banddos%dos=l(11) ; banddos%vacdos=l(13) ; input%integ=l(14) ; sliceplot%iplot=l(15)
banddos%dos=l(11) ; banddos%vacdos=l(13) ; banddos%l_orb=l(33) ; banddos%l_mcd=l(34)
input%integ=l(14) ; sliceplot%iplot=l(15)
sym%invs=l(6) ; sym%invs2=l(7) ; input%l_bmt=l(8) ; input%l_f=l(9) ; input%cdinf=l(10)
input%eonly=l(1) ; input%secvar=l(3) ; sym%zrfs=l(4) ; input%film=l(5)
input%efield%l_segmented = l(38) ; sym%symor=l(39); input%efield%dirichlet = l(40)
......
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