Commit 6d1970a5 authored by Gregor Michalicek's avatar Gregor Michalicek

First try to make core spectrum inp.xml input functional

...hope, it works.
parent 549f89f9
......@@ -2,7 +2,7 @@ MODULE m_cdnval
use m_juDFT
CONTAINS
SUBROUTINE cdnval(eig_id, mpi,kpts,jspin,sliceplot,noco, input,banddos,cell,atoms,enpara,stars,&
vacuum,dimension, sphhar, sym,obsolete, igq_fft,vr, vz, oneD, n_mmp,results, qpw,rhtxy,&
vacuum,dimension,sphhar,sym,obsolete,igq_fft,vr,vz,oneD,coreSpecInput,n_mmp,results, qpw,rhtxy,&
rho,rht,cdom,cdomvz,cdomvxy,qvac,qvlay,qa21, chmom,clmom)
!
! ***********************************************************
......@@ -110,6 +110,8 @@ CONTAINS
TYPE(t_kpts),INTENT(IN) :: kpts
TYPE(t_sphhar),INTENT(IN) :: sphhar
TYPE(t_atoms),INTENT(IN) :: atoms
TYPE(t_coreSpecInput),INTENT(IN) :: coreSpecInput
! .. Scalar Arguments ..
INTEGER, INTENT (IN) :: eig_id,jspin
......@@ -328,7 +330,7 @@ CONTAINS
ENDIF
! calculation of core spectra (EELS) initializations -start-
CALL corespec_init(atoms)
CALL corespec_init(input,atoms,coreSpecInput)
IF(l_cs.AND.(mpi%isize.NE.1)) CALL juDFT_error('EELS + MPI not implemented', calledby = 'cdnval')
IF(l_cs.AND.jspin.EQ.1) CALL corespec_gaunt()
! calculation of core spectra (EELS) initializations -end-
......
......@@ -20,11 +20,13 @@ MODULE m_corespec_io
!
!-------------------------------------------------------------------------------
!
SUBROUTINE corespec_init(atoms)
SUBROUTINE corespec_init(input,atoms,coreSpecInput)
IMPLICIT NONE
TYPE(t_atoms),INTENT(IN) :: atoms
TYPE(t_input),INTENT(IN) :: input
TYPE(t_atoms),INTENT(IN) :: atoms
TYPE(t_coreSpecInput),INTENT(IN) :: coreSpecInput
INTEGER :: ui,i
LOGICAL :: lexist
......@@ -53,6 +55,8 @@ MODULE m_corespec_io
open(ui,file="corespec_inp",status='old')
read(ui,nml=csinp)
close(ui)
else if(input%l_coreSpec) THEN
csi = coreSpecInput
else
return
endif
......
......@@ -85,6 +85,7 @@ CONTAINS
TYPE(t_kpts) :: kpts_temp
TYPE(t_hybrid) :: hybrid_temp
TYPE(t_oneD) :: oneD_temp
TYPE(t_coreSpecInput) :: coreSpecInput_temp
TYPE(t_wann) :: wann_temp
LOGICAL :: l_kpts_temp
INTEGER :: numSpecies
......@@ -234,7 +235,7 @@ CONTAINS
ALLOCATE(xmlCoreOccs(1,1,1))
CALL r_inpXML(atoms_temp,obsolete_temp,vacuum_temp,input_temp,stars_temp,sliceplot_temp,&
banddos_temp,dimension_temp,cell_temp,sym_temp,xcpot_temp,noco_temp,Jij_temp,&
oneD_temp,hybrid_temp,kpts_temp,enpara_temp,wann_temp,noel_temp,&
oneD_temp,hybrid_temp,kpts_temp,enpara_temp,coreSpecInput_temp,wann_temp,noel_temp,&
namex_temp,relcor_temp,a1_temp,a2_temp,a3_temp,scale_temp,dtild_temp,xmlElectronStates,&
xmlPrintCoreStates,xmlCoreOccs,atomTypeSpecies,speciesRepAtomType,l_kpts_temp)
numSpecies = SIZE(speciesRepAtomType)
......
......@@ -15,7 +15,7 @@ MODULE m_rinpXML
CONTAINS
SUBROUTINE r_inpXML(&
atoms,obsolete,vacuum,input,stars,sliceplot,banddos,dimension,&
cell,sym,xcpot,noco,jij,oneD,hybrid,kpts,enpara,wann,&
cell,sym,xcpot,noco,jij,oneD,hybrid,kpts,enpara,coreSpecInput,wann,&
noel,namex,relcor,a1,a2,a3,scale,dtild,xmlElectronStates,&
xmlPrintCoreStates,xmlCoreOccs,atomTypeSpecies,speciesRepAtomType,&
l_kpts)
......@@ -55,6 +55,7 @@ SUBROUTINE r_inpXML(&
TYPE(t_noco),INTENT(INOUT) :: noco
TYPE(t_dimension),INTENT(OUT) :: dimension
TYPE(t_enpara) ,INTENT(OUT) :: enpara
TYPE(t_coreSpecInput),INTENT(OUT) :: coreSpecInput
TYPE(t_wann) ,INTENT(INOUT) :: wann
LOGICAL, INTENT(OUT) :: l_kpts
INTEGER, ALLOCATABLE, INTENT(INOUT) :: xmlElectronStates(:,:)
......@@ -111,7 +112,7 @@ SUBROUTINE r_inpXML(&
INTEGER :: atomicNumber, coreStates, gridPoints, lmax, lnonsphr, lmaxAPW
INTEGER :: latticeDef, symmetryDef, nop48, firstAtomOfType, errorStatus
INTEGER :: loEDeriv, ntp1, ios, ntst, jrc, minNeigd, providedCoreStates, providedStates
INTEGER :: nv, nv2, kq1, kq2, kq3, nprncTemp, kappaTemp
INTEGER :: nv, nv2, kq1, kq2, kq3, nprncTemp, kappaTemp, tempInt
INTEGER :: ldau_l(4), numVac, numU
INTEGER :: speciesEParams(0:3)
INTEGER :: mrotTemp(3,3,48)
......@@ -1653,6 +1654,8 @@ SUBROUTINE r_inpXML(&
banddos%band = .FALSE.
banddos%vacdos = .FALSE.
sliceplot%slice = .FALSE.
input%l_coreSpec = .FALSE.
input%l_wann = .FALSE.
input%vchk = .FALSE.
input%cdinf = .FALSE.
......@@ -1791,7 +1794,16 @@ SUBROUTINE r_inpXML(&
END IF
IF (numberNodes.EQ.1) THEN
CALL juDFT_error("Reading in eels input not yet implemented!", calledby = "r_inpXML")
coreSpecInput%verb = evaluateFirstBoolOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@verbose'))
coreSpecInput%ek0 = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@eKin'))
coreSpecInput%atomType = evaluateFirstIntOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@atomType'))
coreSpecInput%lx = evaluateFirstIntOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@lmax'))
coreSpecInput%edge = TRIM(ADJUSTL(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@edgeType')))
coreSpecInput%edgeidx = evaluateFirstIntOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@edgeIndex'))
coreSpecInput%emn = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@eMin'))
coreSpecInput%emx = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@eMax'))
tempInt = evaluateFirstIntOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@numPoints'))
coreSpecInput%ein = (coreSpecInput%emx - coreSpecInput%emn) / (tempInt - 1.0)
END IF
! Read in optional Wannier functions parameters
......
......@@ -6,9 +6,9 @@
MODULE m_cdngen
use m_juDFT
CONTAINS
SUBROUTINE cdngen(eig_id, mpi,input, banddos,sliceplot,vacuum,&
dimension,kpts, atoms,sphhar,stars,sym,obsolete,&
enpara, cell, noco,jij, results, oneD)
SUBROUTINE cdngen(eig_id,mpi,input,banddos,sliceplot,vacuum,&
dimension,kpts,atoms,sphhar,stars,sym,obsolete,&
enpara,cell,noco,jij,results,oneD,coreSpecInput)
!
! *****************************************************
! Charge density generator
......@@ -55,6 +55,7 @@
TYPE(t_kpts),INTENT(IN) :: kpts
TYPE(t_sphhar),INTENT(IN) :: sphhar
TYPE(t_atoms),INTENT(IN) :: atoms
TYPE(t_coreSpecInput),INTENT(IN) :: coreSpecInput
! .. Scalar Arguments ..
INTEGER, INTENT (IN) :: eig_id
......@@ -181,7 +182,7 @@
CALL timestart("cdngen: cdnval")
CALL cdnval(eig_id,&
mpi,kpts,jspin,sliceplot,noco, input,banddos,cell,atoms,enpara,stars, vacuum,dimension,&
sphhar, sym,obsolete, igq_fft, vr,vz(:,:,jspin), oneD,&
sphhar,sym,obsolete,igq_fft,vr,vz(:,:,jspin),oneD,coreSpecInput,&
n_mmp(-3:,-3:,:,jspin),results, qpw,rhtxy,rho,rht,cdom,cdomvz,cdomvxy,qvac,qvlay,qa21, chmom,clmom)
CALL timestop("cdngen: cdnval")
!-fo
......
......@@ -97,6 +97,7 @@ CONTAINS
TYPE(t_hybrid) :: hybrid
TYPE(t_oneD) :: oneD
TYPE(t_mpi) :: mpi
TYPE(t_coreSpecInput) :: coreSpecInput
TYPE(t_wann) :: wann
TYPE(t_potden) :: v,vx
......@@ -120,8 +121,8 @@ CONTAINS
CALL timestart("Initialization")
CALL fleur_init(mpi,input,DIMENSION,atoms,sphhar,cell,stars,sym,noco,vacuum,&
sliceplot,banddos,obsolete,enpara,xcpot,results,jij,kpts,hybrid,&
oneD,wann,l_opti)
sliceplot,banddos,obsolete,enpara,xcpot,results,jij,kpts,hybrid,&
oneD,coreSpecInput,wann,l_opti)
CALL timestop("Initialization")
......@@ -130,11 +131,11 @@ CONTAINS
IF (sliceplot%iplot .AND. (mpi%irank==0) ) THEN
IF (noco%l_noco) THEN
CALL pldngen(sym,stars,atoms,sphhar,vacuum,&
cell,input,noco,oneD,sliceplot)
cell,input,noco,oneD,sliceplot)
ENDIF
ENDIF
CALL OPTIONAL(mpi,atoms,sphhar,vacuum,DIMENSION,&
stars,input,sym,cell,sliceplot,obsolete,xcpot,noco,oneD)
stars,input,sym,cell,sliceplot,obsolete,xcpot,noco,oneD)
ENDIF
!
IF (sliceplot%iplot) CALL juDFT_end("density plot o.k.",mpi%irank)
......@@ -197,7 +198,7 @@ CONTAINS
IF (noco%l_noco) THEN
CALL timestart("gen. spin-up and -down density")
CALL rhodirgen(DIMENSION,sym,stars,atoms,sphhar,&
vacuum,22,cell,input,oneD)
vacuum,22,cell,input,oneD)
CALL timestop("gen. spin-up and -down density")
ENDIF
!---> pk non-collinear
......@@ -243,7 +244,7 @@ CONTAINS
!HF
IF (hybrid%l_hybrid) CALL calc_hybrid(hybrid,kpts,atoms,input,DIMENSION,mpi,noco,&
cell,vacuum,oneD,banddos,results,sym,xcpot,v,it )
cell,vacuum,oneD,banddos,results,sym,xcpot,v,it)
!#endif
DO pc = 1, wann%nparampts
......@@ -532,8 +533,8 @@ CONTAINS
CALL timestart("generation of new charge density (total)")
IF (mpi%irank==0) WRITE(*,"(a)",advance="no") "* New Charge "
CALL cdngen(eig_id,mpi,input,banddos,sliceplot,vacuum,&
DIMENSION,kpts,atoms,sphhar,stars,sym,obsolete,&
enpara,cell,noco,jij,results,oneD)
DIMENSION,kpts,atoms,sphhar,stars,sym,obsolete,&
enpara,cell,noco,jij,results,oneD,coreSpecInput)
IF ( noco%l_soc .AND. (.NOT. noco%l_noco) ) dimension%neigd=dimension%neigd/2
!+t3e
......
......@@ -9,7 +9,7 @@
SUBROUTINE fleur_init(mpi,&
input,DIMENSION,atoms,sphhar,cell,stars,sym,noco,vacuum,&
sliceplot,banddos,obsolete,enpara,xcpot,results,jij,kpts,hybrid,&
oneD,wann,l_opti)
oneD,coreSpecInput,wann,l_opti)
USE m_judft
USE m_juDFT_init
USE m_types
......@@ -60,6 +60,7 @@
TYPE(t_kpts) ,INTENT(OUT):: kpts
TYPE(t_hybrid) ,INTENT(OUT):: hybrid
TYPE(t_oneD) ,INTENT(OUT):: oneD
TYPE(t_coreSpecInput),INTENT(OUT) :: coreSpecInput
TYPE(t_wann) ,INTENT(OUT):: wann
LOGICAL, INTENT(OUT):: l_opti
......@@ -160,7 +161,7 @@
scale = 1.0
CALL r_inpXML(&
atoms,obsolete,vacuum,input,stars,sliceplot,banddos,DIMENSION,&
cell,sym,xcpot,noco,Jij,oneD,hybrid,kpts,enpara,wann,&
cell,sym,xcpot,noco,Jij,oneD,hybrid,kpts,enpara,coreSpecInput,wann,&
noel,namex,relcor,a1,a2,a3,scale,dtild,xmlElectronStates,&
xmlPrintCoreStates,xmlCoreOccs,atomTypeSpecies,speciesRepAtomType,&
l_kpts)
......@@ -286,6 +287,7 @@
kpts%specificationType = 0
atoms%numStatesProvided(:) = 0
input%l_coreSpec = .FALSE.
jij%M(:) = 0.0
jij%l_magn(:) =.FALSE.
......
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