Line data Source code
1 : !--------------------------------------------------------------------------------
2 : ! Copyright (c) 2017 Peter Grünberg Institut, Forschungszentrum Jülich, Germany
3 : ! This file is part of FLEUR and available as free software under the conditions
4 : ! of the MIT license as expressed in the LICENSE file in more detail.
5 : !--------------------------------------------------------------------------------
6 :
7 : module m_corespec
8 :
9 : USE m_types_setup, ONLY: t_coreSpecInput
10 :
11 : implicit none
12 :
13 : ! PARAMETERS
14 :
15 : complex, parameter :: cone = cmplx(1.0,0.0)
16 : complex, parameter :: cimu = cmplx(0.0,1.0)
17 : real, parameter :: alpha = 7.29735257e-3
18 : real, parameter :: mec2 = 0.51099891e6
19 : real, parameter :: ecoredeep = 0.5
20 :
21 : integer, parameter :: edgel(11) = (/0,1,1,2,2,3,3,4,4,5,5/)
22 : integer, parameter :: edgej(11) = (/1,1,3,3,5,5,7,7,9,9,11/)
23 : integer, parameter :: sign(4) = (/1,-1,0,0/)
24 :
25 : character(len=2), parameter :: ssep="> "
26 : character(len=3), parameter :: fsos1="t55"
27 : character(len=3), parameter :: fsos2="t90"
28 : character(len=15), parameter :: fsb="(a,('"//ssep//"'),a,"//fsos1
29 : character(len=9), parameter :: fse=fsos2//",2x,a)"
30 : character(len=11), parameter :: csmsgerr=" ... STOP !"
31 : character(len=14), parameter :: csmsgwar=" ... WARNING !"
32 : character(len=32), parameter :: csmsgs = fsb//")"
33 : character(len=64), parameter :: csmsgsss = fsb//",a,a5,"//fse
34 : character(len=64), parameter :: csmsgsis = fsb//",a,i5,"//fse
35 : character(len=64), parameter :: csmsgsisis = fsb//",a,i5,a,i5,"//fse
36 : character(len=64), parameter :: csmsgsfs = fsb//",a,f8.3,"//fse
37 : character(len=64), parameter :: csmsgses = fsb//",a,es12.3,"//fse
38 :
39 : ! VARIABLES
40 :
41 : logical :: l_cs
42 :
43 : integer :: l1,l2,la1,la2,li
44 : integer :: m1,m2,mu1,mu2,mi
45 : integer :: lx,ln,lax,lan,lix,lin
46 :
47 : character(len=32) :: smeno
48 :
49 : type (t_coreSpecInput) :: csi
50 :
51 : type csvtype
52 : sequence
53 : integer :: nc ! main quantum no. of the core level of atomic type
54 : integer :: nljc ! number of l-j edge lines
55 : integer, allocatable :: lc(:) ! edge angular quantum nos.; nljc elements
56 : real, allocatable :: eedge(:) ! lc-dep. edge energy; nljc elements
57 : real, allocatable :: occ(:) ! lc-dep. occupation; nljc elements
58 : integer :: nex ! no. of energy sampling points
59 : real, allocatable :: egrid(:) ! energy grid; 0:nex elements
60 : real, allocatable :: eos(:) ! energy grid / sigma
61 : real, allocatable :: eloss(:,:) ! efermi-eedge+egrid
62 : integer :: nen ! minimum index for which egrid >=0
63 : integer :: nqv ! no. of q vectors
64 : integer :: nqphi ! no. of angle-sectors for integral over q vectors
65 : integer :: nqr ! no. of radial-sectors for integral over q vectors
66 : real :: alpha_ex ! maximal angle of incoming electrons
67 : real :: beta_ex ! maximal (measured) angle of outcoming electrons
68 : real :: I0 ! incoming intensity
69 : real :: qv0 ! |q| of incoming electrons
70 : real, allocatable :: qv1(:,:,:) ! |q| of outgoing electrons
71 : real, allocatable :: qv(:,:,:,:) ! delta q vectors
72 : real :: gamma ! gamma = 1+ek0/mc2
73 : real :: beta ! beta = v/c = 1/sqrt(1-1/gamma^2)
74 : real, allocatable :: gaunt(:,:,:,:,:,:) ! gaunt coefficients
75 : real, allocatable :: fc(:,:,:,:) ! core radial function
76 : real, allocatable :: fv(:,:,:,:) ! valence radial function
77 : real, allocatable :: fb(:,:,:,:,:) ! bessel function
78 : real, allocatable :: rmeA(:,:,:,:,:,:,:) ! matrix elements
79 : real, allocatable :: rmeB(:,:,:,:,:,:,:) ! matrix elements
80 : real, allocatable :: rmeC(:,:,:,:,:,:,:) ! matrix elements
81 : real, allocatable :: dose(:,:,:,:,:) ! dos (bands)
82 : real, allocatable :: dosb(:,:,:,:,:) ! dos (bands)
83 : complex, allocatable :: ddscs(:,:,:,:,:) ! dos (bands)
84 :
85 : end type csvtype
86 :
87 : type (csvtype) :: csv
88 :
89 0 : end module m_corespec
|