Commit f09d337e authored by Gregor Michalicek's avatar Gregor Michalicek

Some more preparations for noco with XML input

...still not functional.
parent 1f653f97
......@@ -534,6 +534,7 @@
REAL:: qss(3)
REAL:: mix_b
LOGICAL, ALLOCATABLE :: l_relax(:)
REAL, ALLOCATABLE :: alphInit(:)
REAL, ALLOCATABLE :: alph(:)
REAL, ALLOCATABLE :: beta(:)
REAL, ALLOCATABLE :: b_con(:,:)
......
......@@ -380,6 +380,36 @@
IF (sym%zrfs.OR.sym%invs) vacuum%nvac = 1
IF (oneD%odd%d1) vacuum%nvac = 1
! Set defaults for noco and Jij types
ALLOCATE(noco%l_relax(atoms%ntype),noco%b_con(2,atoms%ntype))
ALLOCATE(noco%alphInit(atoms%ntype),noco%alph(atoms%ntype),noco%beta(atoms%ntype))
ALLOCATE (Jij%alph1(atoms%ntype),Jij%l_magn(atoms%ntype),Jij%M(atoms%ntype))
ALLOCATE (Jij%magtype(atoms%ntype),Jij%nmagtype(atoms%ntype))
noco%l_ss = .FALSE.
noco%l_mperp = .FALSE.
noco%l_constr = .FALSE.
Jij%l_disp = .FALSE.
input%sso_opt = .FALSE.
noco%mix_b = 0.0
Jij%thetaJ = 0.0
Jij%nmagn=1
Jij%nsh = 0
noco%qss = 0.0
noco%l_relax(:) = .FALSE.
noco%alphInit(:) = 0.0
noco%alph(:) = 0.0
noco%beta(:) = 0.0
noco%b_con(:,:) = 0.0
Jij%M(:) = 0.0
Jij%l_magn(:) = .FALSE.
Jij%l_wr=.TRUE.
Jij%nqptd=1
Jij%mtypes=1
Jij%phnd=1
IF(.NOT.juDFT_was_argument("-noXML")) THEN
nkptOld = kpts%nkpt
......@@ -455,6 +485,8 @@
cell%latnam = latnamTemp
END IF !xml output
DEALLOCATE (noco%l_relax,noco%b_con,noco%alphInit,noco%alph,noco%beta)
DEALLOCATE (Jij%alph1,Jij%l_magn,Jij%M,Jij%magtype,Jij%nmagtype)
DEALLOCATE (enpara%el0,enpara%evac0,enpara%lchange,enpara%lchg_v)
DEALLOCATE (enpara%skiplo,enpara%ello0,enpara%llochg,enpara%enmix)
DEALLOCATE (atoms%ulo_der)
......
......@@ -264,7 +264,7 @@ SUBROUTINE r_inpXML(&
ALLOCATE(atoms%invsat(atoms%nat)) ! Where do I put this?
ALLOCATE(noco%soc_opt(atoms%ntype+2),noco%l_relax(atoms%ntype),noco%b_con(2,atoms%ntype))
ALLOCATE(noco%alph(atoms%ntype),noco%beta(atoms%ntype))
ALLOCATE(noco%alphInit(atoms%ntype),noco%alph(atoms%ntype),noco%beta(atoms%ntype))
ALLOCATE (Jij%alph1(atoms%ntype),Jij%l_magn(atoms%ntype),Jij%M(atoms%ntype))
ALLOCATE (Jij%magtype(atoms%ntype),Jij%nmagtype(atoms%ntype))
......@@ -540,6 +540,7 @@ SUBROUTINE r_inpXML(&
noco%qss = 0.0
noco%l_relax(:) = .FALSE.
noco%alphInit(:) = 0.0
noco%alph(:) = 0.0
noco%beta(:) = 0.0
noco%b_con(:,:) = 0.0
......@@ -1595,7 +1596,8 @@ SUBROUTINE r_inpXML(&
noco%l_relax(iType) = evaluateFirstBoolOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))//'/@l_relax'))
Jij%l_magn(iType) = evaluateFirstBoolOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))//'/@l_magn'))
Jij%M(iType) = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))//'/@M'))
noco%alph(iType) = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))//'/@alpha'))
noco%alphInit(iType) = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))//'/@alpha'))
noco%alph(iType) = noco%alphInit(iType)
noco%beta(iType) = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))//'/@beta'))
noco%b_con(1,iType) = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))//'/@b_cons_x'))
noco%b_con(2,iType) = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))//'/@b_cons_y'))
......@@ -1893,7 +1895,7 @@ SUBROUTINE r_inpXML(&
na = 1
DO iType = 1,atoms%ntype
noco%phi = tpi_const*dot_product(noco%qss,atoms%taual(:,na))
noco%alph(iType) = noco%alph(iType) + noco%phi
noco%alph(iType) = noco%alphInit(iType) + noco%phi
na = na + atoms%neq(iType)
END DO
END IF
......
......@@ -96,7 +96,8 @@ SUBROUTINE w_inpXML(&
CHARACTER :: helpchar(atoms%ntypd)
CHARACTER(len= 4) :: chntype
CHARACTER(len= 41) :: chform
CHARACTER(len=100) :: line
CHARACTER(len=100) :: line
CHARACTER(len=3) :: sso_optString
! added for HF and hybrid functionals
REAL :: aMix,omega
......@@ -131,6 +132,8 @@ SUBROUTINE w_inpXML(&
IF (PRESENT(dtild_opt)) dtild=dtild_opt
IF (PRESENT(name_opt)) name=name_opt
l_explicit = juDFT_was_argument("-explicit").OR.l_outFile
symFilename = 'sym.out'
kptGamma = l_gamma
band = .false.
......@@ -203,9 +206,16 @@ SUBROUTINE w_inpXML(&
150 FORMAT(' <soc theta="',f0.8,'" phi="',f0.8,'" l_soc="',l1,'" spav="',l1,'" off="',l1,'" soc66="',l1,'"/>')
WRITE (fileNum,150) noco%theta,noco%phi,noco%l_soc,noco%soc_opt(atoms%ntype+2),noco%soc_opt(atoms%ntype+1),obsolete%eig66(2)
IF (noco%l_noco) THEN
160 FORMAT(' <nocoParams l_ss="',l1,'" l_mperp="',l1,'" l_constr="',l1,'" l_disp="',l1,'" sso_opt="',a3,'" mix_b="',f0.8,'" thetaJ="',f0.8,'" nsh="',i0,'"/>')
STOP 'Output of Noco input not yet implemented!'
IF (noco%l_noco.OR.l_explicit) THEN
160 FORMAT(' <nocoParams l_ss="',l1,'" l_mperp="',l1,'" l_constr="',l1,'" l_disp="',l1,'" sso_opt="',a3,&
'" mix_b="',f0.8,'" thetaJ="',f0.8,'" nsh="',i0,'">')
sso_optString='FFF'
IF(input%sso_opt(1)) sso_optString(1:1) = 'T'
IF(input%sso_opt(2)) sso_optString(2:2) = 'T'
WRITE (fileNum,160) noco%l_ss, noco%l_mperp, noco%l_constr, Jij%l_disp, sso_optString, noco%mix_b, Jij%thetaJ, Jij%nsh
162 FORMAT(' <qss>',f0.15,' ',f0.15,' ',f0.15,'</qss>')
WRITE(fileNum,162) noco%qss(1), noco%qss(2), noco%qss(3)
WRITE (fileNum,'(a)') ' </nocoParams>'
END IF
IF (oneD%odd%d1) THEN
......@@ -235,7 +245,6 @@ SUBROUTINE w_inpXML(&
200 FORMAT(' <bzIntegration valenceElectrons="',f0.8,'" mode="',a,'" fermiSmearingEnergy="',f0.8,'">')
WRITE (fileNum,200) input%zelec,TRIM(ADJUSTL(bzIntMode)),input%tkb
l_explicit = juDFT_was_argument("-explicit").OR.l_outFile
IF(l_explicit) THEN
sumWeight = 0.0
DO i = 1, kpts%nkpt
......@@ -593,6 +602,14 @@ SUBROUTINE w_inpXML(&
360 FORMAT(' <force calculate="',l1,'" relaxXYZ="',3l1,'"/>')
WRITE (fileNum,360) atoms%l_geo(iAtomType),atoms%relax(1,iAtomType),atoms%relax(2,iAtomType),atoms%relax(3,iAtomType)
IF(noco%l_noco.OR.l_explicit) THEN
362 FORMAT(' <nocoParams l_relax="',l1,'" l_magn="',l1,'" M="',f0.10,'" alpha="',f0.10,'" beta="',&
f0.10,'" b_cons_x="',f0.10,'" b_cons_y="',f0.10,'"/>')
WRITE(fileNum,362) noco%l_relax(iAtomType), Jij%l_magn(iAtomType), Jij%M(iAtomType), noco%alphInit(iAtomType),&
noco%beta(iAtomType),noco%b_con(1,iAtomType),noco%b_con(2,iAtomType)
END IF
WRITE (fileNum,'(a)') ' </atomGroup>'
END DO
WRITE (fileNum,'(a)') ' </atomGroups>'
......
......@@ -200,7 +200,7 @@
ALLOCATE ( atoms%nlo(atoms%ntypd),atoms%llo(atoms%nlod,atoms%ntypd),enpara%skiplo(atoms%ntypd,dimension%jspd) )
ALLOCATE ( enpara%ello0(atoms%nlod,atoms%ntypd,dimension%jspd),enpara%llochg(atoms%nlod,atoms%ntypd,dimension%jspd) )
ALLOCATE ( atoms%lo1l(0:atoms%llod,atoms%ntypd),atoms%nlol(0:atoms%llod,atoms%ntypd),atoms%lapw_l(atoms%ntypd) )
ALLOCATE ( noco%alph(atoms%ntypd),noco%beta(atoms%ntypd),noco%l_relax(atoms%ntypd) )
ALLOCATE ( noco%alphInit(atoms%ntypd),noco%alph(atoms%ntypd),noco%beta(atoms%ntypd),noco%l_relax(atoms%ntypd) )
ALLOCATE ( jij%alph1(atoms%ntypd),jij%l_magn(atoms%ntypd),jij%M(atoms%ntypd) )
ALLOCATE ( jij%magtype(atoms%ntypd),jij%nmagtype(atoms%ntypd) )
ALLOCATE ( noco%b_con(2,atoms%ntypd),atoms%lda_u(atoms%ntypd),atoms%l_dulo(atoms%nlod,atoms%ntypd) )
......
......@@ -210,6 +210,7 @@ CONTAINS
CALL MPI_BCAST(atoms%nlol,n,MPI_INTEGER,0,mpi%mpi_comm,ierr)
n = dimension%jspd*atoms%ntypd
CALL MPI_BCAST(enpara%skiplo,n,MPI_INTEGER,0,mpi%mpi_comm,ierr)
CALL MPI_BCAST(noco%alphInit,atoms%ntypd,MPI_DOUBLE_PRECISION,0,mpi%mpi_comm,ierr)
CALL MPI_BCAST(noco%alph,atoms%ntypd,MPI_DOUBLE_PRECISION,0,mpi%mpi_comm,ierr)
CALL MPI_BCAST(noco%beta,atoms%ntypd,MPI_DOUBLE_PRECISION,0,mpi%mpi_comm,ierr)
CALL MPI_BCAST(noco%b_con,atoms%ntypd*2,MPI_DOUBLE_PRECISION,0,mpi%mpi_comm,ierr)
......
strho=F,film=F,dos=F,isec1= 99,ndir= 0,secvar=F
Fe fcc 2-atom uc
squ any ,invs=T,zrfs=T,invs2=T,jspins=2,l_noco=t,l_J=F
4.82246838
6.82000000 6.82000000 1.00000000
pbe non-relativi
igrd=1,lwb=F,ndvgrd=6,idsprs=0,chng=-0.100D-11
2
**********************************
Fe 26 5 8 565 2.350000 0.021000
1,force =T,nlo= 1,llo= 1
0.000000 0.000000 0.000000 4.000000
**********************************
Fe 26 5 8 565 2.350000 0.021000
1,force =T,nlo= 1,llo= 1
2.000000 2.000000 2.000000 4.000000
**********************************
10.200000 8.500000
vchk=F,cdinf=F,pot8=F,gw=0,gw_neigd= 0
lpr=0,form66=F,l_f=F,eonly=F,eig66=F,soc66=T
6 6
1 0
Window # 1
-0.80000 1.00000 28.00000
3.40000 =kmax
gauss=F 0.00100tria=F
0.000000 0.000000,l_soc=F,spav=F,off=F
frcor=F,slice=F,ctail=f,disp=F,kcrel=0,u2f=F,f2u=F,bmt=F
itmax= 4,maxiter= 99,imix= 7,alpha= 0.05,spinf= 2.00
swsp=F 2.20 2.20
lflip=F 1 1
vacdos=F,layers= 0,integ=F,star=F,nstars= 0 0.00 0.00 0.00 0.00,nstm=0,tworkf= 0.000000
iplot=F,score=F,plpot=F,band=F
0 0.000000 0.000000,nnne= 0,pallst=F
xa= 2.00000,thetad= 330.00000,epsdisp= 0.00001,epsforce= 0.00001
relax 111 111
emin_dos= -0.50000,emax_dos= 0.50000,sig_dos= 0.01500
nkpt= 5
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<fleurInput fleurInputVersion="0.27">
<comment>
Fe fcc 2-atom uc
</comment>
<calculationSetup>
<cutoffs Kmax="3.40000000" Gmax="10.20000000" GmaxXC="8.50000000" numbands="0"/>
<scfLoop itmax="4" maxIterBroyd="99" imix="Anderson" alpha=".05000000" spinf="2.00000000"/>
<coreElectrons ctail="F" frcor="F" kcrel="0"/>
<magnetism jspins="2" l_noco="F" l_J="F" swsp="F" lflip="F"/>
<soc theta=".00000000" phi=".00000000" l_soc="F" spav="F" off="F" soc66="T"/>
<nocoParams l_ss="F" l_mperp="F" l_constr="F" l_disp="F" sso_opt="FFF" mix_b="0.5" thetaJ="0.0" nsh="0">
<qss>0.0 0.0 0.0</qss>
</nocoParams>
<expertModes gw="0" pot8="F" eig66="F" lpr="0" isec1="99" secvar="F"/>
<geometryOptimization l_f="F" xa="2.00000000" thetad="330.00000000" epsdisp=".00001000" epsforce=".00001000"/>
<bzIntegration valenceElectrons="28.00000000" mode="hist" fermiSmearingEnergy=".00100000">
<kPointCount count="5" gamma="F"/>
</bzIntegration>
<energyParameterLimits ellow="-.80000000" elup="1.00000000"/>
</calculationSetup>
<cell>
<symmetryFile filename="sym.out"/>
<bulkLattice scale="1.000000000000" latnam="squ">
<a1>4.82246838</a1>
<c>6.82000000</c>
</bulkLattice>
</cell>
<xcFunctional name="pbe" relativisticCorrections="F"/>
<atomSpecies>
<species name="Fe-1" element="Fe" atomicNumber="26" coreStates="5" magMom="2.20000000" flipSpin="T">
<mtSphere radius="2.35000000" gridPoints="565" logIncrement=".02100000"/>
<atomicCutoffs lmax="8" lnonsphr="6"/>
<energyParameters s="4" p="4" d="3" f="4"/>
<lo type="SCLO" l="1" n="3" eDeriv="0"/>
</species>
</atomSpecies>
<atomGroups>
<atomGroup species="Fe-1">
<relPos>0.0 0.0 0.0</relPos>
<force calculate="T" relaxXYZ="TTT"/>
<nocoParams l_relax="F" l_magn="F" M="0.0" alpha="0.0" beta="0.0" b_cons_x="0.0" b_cons_y="0.0"/>
</atomGroup>
<atomGroup species="Fe-1">
<relPos>0.5 0.5 0.5</relPos>
<force calculate="T" relaxXYZ="TTT"/>
<nocoParams l_relax="F" l_magn="F" M="0.0" alpha="0.0" beta="3.1415926536" b_cons_x="0.0" b_cons_y="0.0"/>
</atomGroup>
</atomGroups>
<output dos="F" band="F" vacdos="F" slice="F">
<checks vchk="F" cdinf="F" disp="F"/>
<densityOfStates ndir="0" minEnergy="-.50000000" maxEnergy=".50000000" sigma=".01500000"/>
<vacuumDOS layers="0" integ="F" star="F" nstars="0" locx1=".00000000" locy1=".00000000" locx2=".00000000" locy2=".00000000" nstm="0" tworkf=".00000000"/>
<plotting iplot="F" score="F" plplot="F"/>
<chargeDensitySlicing numkpt="0" minEigenval=".00000000" maxEigenval=".00000000" nnne="0" pallst="F"/>
<specialOutput form66="F" eonly="F" bmt="F"/>
</output>
</fleurInput>
atom-type 1,l_relax=F
alpha = 0.0000000000,b_cons_x = 0.0000000000
beta = 0.0000000000,b_cons_y = 0.0000000000
atom-type 2,l_relax=F
alpha = 0.0000000000,b_cons_x = 0.0000000000
beta = 3.1415926536,b_cons_y = 0.0000000000
-- logical parameters --
l_ss=F,l_mperp=F,l_constr=F
mix_b= 0.500
qss=( 0.0000000000, 0.0000000000, 0.0000000000)
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