Commit dc8b472e authored by Andrea Hanke's avatar Andrea Hanke

Implementation of the EELS double differential cross section integration.

parent f72baf97
...@@ -61,6 +61,11 @@ module m_corespec ...@@ -61,6 +61,11 @@ module m_corespec
real, allocatable :: eloss(:,:) ! efermi-eedge+egrid real, allocatable :: eloss(:,:) ! efermi-eedge+egrid
integer :: nen ! minimum index for which egrid >=0 integer :: nen ! minimum index for which egrid >=0
integer :: nqv ! no. of q vectors integer :: nqv ! no. of q vectors
integer :: nqphi ! no. of angle-sectors for integral over q vectors
integer :: nqr ! no. of radial-sectors for integral over q vectors
real :: alpha_ex ! maximal angle of incoming electrons
real :: beta_ex ! maximal (measured) angle of outcoming electrons
real :: I0 ! incoming intensity
real :: qv0 ! |q| of incoming electrons real :: qv0 ! |q| of incoming electrons
real, allocatable :: qv1(:,:,:) ! |q| of outgoing electrons real, allocatable :: qv1(:,:,:) ! |q| of outgoing electrons
real, allocatable :: qv(:,:,:,:) ! delta q vectors real, allocatable :: qv(:,:,:,:) ! delta q vectors
......
This diff is collapsed.
...@@ -47,6 +47,12 @@ MODULE m_corespec_io ...@@ -47,6 +47,12 @@ MODULE m_corespec_io
csi%emx = 20.d0 csi%emx = 20.d0
csi%ein = 0.1d0 csi%ein = 0.1d0
csi%nqphi = 12
csi%nqr = 20
csi%alpha_ex=0.1
csi%beta_ex=0.08
csi%I0 = 10
! reading of input parameters from 'corespec_inp' file ! reading of input parameters from 'corespec_inp' file
call iounit(ui) call iounit(ui)
...@@ -76,6 +82,48 @@ MODULE m_corespec_io ...@@ -76,6 +82,48 @@ MODULE m_corespec_io
! unit conversion if necessary ! unit conversion if necessary
! if csi%verb = 1, detailed information is written to stdout ! if csi%verb = 1, detailed information is written to stdout
! csv%nqphi
if(csi%nqphi.lt.0) then
write(*,csmsgs) trim(smeno),"found csi%nqphi < 0 !"//csmsgerr ; stop
endif
csv%nqphi = csi%nqphi
if(csi%verb.eq.1) write(*,csmsgsis) trim(smeno),&
&"Mesh number of angles: ","csi%nqphi = ",csv%nqphi,"will be used"
! csi%nqr
if(csi%nqr.lt.0) then
write(*,csmsgs) trim(smeno),"found csi%nqr < 0 !"//csmsgerr ; stop
endif
csv%nqr = csi%nqr
if(csi%verb.eq.1) write(*,csmsgsis) trim(smeno),&
&"Mesh number of radii: ","csi%nqr = ",csv%nqr,"will be used"
! csi%alpha_ex
if(csi%alpha_ex.lt.0) then
write(*,csmsgs) trim(smeno),"found csi%alpha_ex < 0 !"//csmsgerr ; stop
endif
csv%alpha_ex = csi%alpha_ex
if(csi%verb.eq.1) write(*,csmsgsfs) trim(smeno),&
&"Experimental convergence angle of incoming e-: ","csi%alpha_ex = ",csv%alpha_ex,"will be used"
! csi%beta_ex
if(csi%beta_ex.lt.0) then
write(*,csmsgs) trim(smeno),"found csi%beta_ex < 0 !"//csmsgerr ; stop
endif
csv%beta_ex = csi%beta_ex
if(csi%verb.eq.1) write(*,csmsgsfs) trim(smeno),&
&"Experimental convergence angle of outgoing e-: ","csi%beta_ex = ",csv%beta_ex,"will be used"
! csi%I0
if(csi%I0.le.0) then
write(*,csmsgs) trim(smeno),"found csi%I0 <= 0 !"//csmsgerr ; stop
endif
csv%I0 = csi%I0
if(csi%verb.eq.1) write(*,csmsgsfs) trim(smeno),&
&"Intensity of incoming electrons: ","csi%I0 = ",csv%I0,"will be used"
! csi%atomType ! csi%atomType
if(csi%atomType.le.0) then if(csi%atomType.le.0) then
write(*,csmsgs) trim(smeno),"found csi%atomType <= 0 !"//csmsgerr ; stop write(*,csmsgs) trim(smeno),"found csi%atomType <= 0 !"//csmsgerr ; stop
...@@ -233,4 +281,6 @@ MODULE m_corespec_io ...@@ -233,4 +281,6 @@ MODULE m_corespec_io
! !
!=============================================================================== !===============================================================================
end module m_corespec_io end module m_corespec_io
...@@ -1952,6 +1952,11 @@ input%preconditioning_param = evaluateFirstOnly(xmlGetAttributeValue('/fleurInpu ...@@ -1952,6 +1952,11 @@ input%preconditioning_param = evaluateFirstOnly(xmlGetAttributeValue('/fleurInpu
coreSpecInput%emx = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@eMax')) coreSpecInput%emx = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@eMax'))
tempInt = evaluateFirstIntOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@numPoints')) tempInt = evaluateFirstIntOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@numPoints'))
coreSpecInput%ein = (coreSpecInput%emx - coreSpecInput%emn) / (tempInt - 1.0) coreSpecInput%ein = (coreSpecInput%emx - coreSpecInput%emn) / (tempInt - 1.0)
coreSpecInput%nqphi = evaluateFirstIntOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@nqphi'))
coreSpecInput%nqr = evaluateFirstIntOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@nqr'))
coreSpecInput%alpha_ex = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@alpha_Ex'))
coreSpecInput%beta_ex = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@beta_Ex'))
coreSpecInput%I0 = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@I_initial'))
xPathB = TRIM(ADJUSTL(xPathA))//'/edgeIndices' xPathB = TRIM(ADJUSTL(xPathA))//'/edgeIndices'
xPathB = TRIM(ADJUSTL(xPathB))//'/text()' xPathB = TRIM(ADJUSTL(xPathB))//'/text()'
valueString = xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))) valueString = xmlGetAttributeValue(TRIM(ADJUSTL(xPathB)))
......
...@@ -703,6 +703,11 @@ ...@@ -703,6 +703,11 @@
<xsd:attribute name="eMax" type="xsd:double" use="required"/> <xsd:attribute name="eMax" type="xsd:double" use="required"/>
<xsd:attribute name="numPoints" type="xsd:positiveInteger" use="required"/> <xsd:attribute name="numPoints" type="xsd:positiveInteger" use="required"/>
<xsd:attribute default="F" name="verbose" type="FleurBool" use="optional"/> <xsd:attribute default="F" name="verbose" type="FleurBool" use="optional"/>
<xsd:attribute default="10" name="nqphi" type="xsd:positiveInteger" use="optional"/>
<xsd:attribute default="10" name="nqr" type="xsd:positiveInteger" use="optional"/>
<xsd:attribute default="0.024" name="alpha_Ex" type="xsd:double" use="optional"/>
<xsd:attribute default="0.05" name="beta_Ex" type="xsd:double" use="optional"/>
<xsd:attribute default="155" name="I_initial" type="xsd:double" use="optional"/>
</xsd:complexType> </xsd:complexType>
<xsd:complexType name="MagneticCircularDichroismType"> <xsd:complexType name="MagneticCircularDichroismType">
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -545,6 +545,11 @@ MODULE m_types_setup ...@@ -545,6 +545,11 @@ MODULE m_types_setup
real :: emn ! energy spectrum lower bound real :: emn ! energy spectrum lower bound
real :: emx ! energy spectrum upper bound real :: emx ! energy spectrum upper bound
real :: ein ! energy spectrum increment real :: ein ! energy spectrum increment
integer :: nqphi ! no. of angle-sectors for integral over q vectors
integer :: nqr ! no. of radial-sectors for integral over q vectors
real :: alpha_ex ! maximal angle of incoming electrons
real :: beta_ex ! maximal (measured) angle of outcoming electrons
real :: I0 ! incoming intensity
END TYPE t_coreSpecInput END TYPE t_coreSpecInput
......
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