Calculates an array of cross sections for a electron-Hydrogen impact excitation transition from
the n
state to the state at energy eb
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in) | :: | eb | Collision energy [keV] |
||
integer, | intent(in) | :: | n | Initial atomic energy level/state |
||
integer, | intent(in) | :: | m_max | Number of m states to calculate |
Array of cross sections where the m'th index refers to
an excitation from the n
m
state []
function e_excit_n(eb, n, m_max) result(sigma)
!+Calculates an array of cross sections for a electron-Hydrogen impact excitation transition from
!+the `n` state to the \(m=1..m_{max}\) state at energy `eb`
!+
!+###Equation
!+$$ e + H(n) \rightarrow e + H(m=1..m_{max}), m \gt n $$
!+
!+###References
!+* Eq. 5 and Table 2 in Ref. 2 [[atomic_tables(module)]]
!+* Eqs. 6-7 in Ref. 2 [[atomic_tables(module)]]
!+* Section 2.1.1 B in Ref. 2 [[atomic_tables(module)]]
!+
real(Float64), intent(in) :: eb
!+ Collision energy [keV]
integer, intent(in) :: n
!+ Initial atomic energy level/state
integer, intent(in) :: m_max
!+ Number of m states to calculate
real(Float64), dimension(m_max) :: sigma
!+ Array of cross sections where the m'th index refers to
!+an excitation from the `n`\(\rightarrow\)`m` state [\(cm^2\)]
integer :: m
real(Float64) :: nf, mf
real(Float64) :: x, y, A, B, bn, r, deltaE
nf = real(n)
if(n.eq.1) then
sigma = e_excit_1_janev(eb, m_max)
else
m_loop: do m=1,m_max
mf = real(m)
if(n.ge.m) then
sigma(m) = 0.d0
cycle m_loop
endif
if((n.eq.2).and.(m.eq.3)) then
sigma(m) = e_excit_2_3_janev(eb)
else
deltaE=13.6*(1.0/nf**2 - 1.0/mf**2)
x = (eb*1.d3)/deltaE
y = 1.0 - (nf/mf)**2
r = 1.94/nf**1.57
A = 2.0 * nf**2 * e_excit_f(n,m)/y
bn = 1.0/nf*(4.0 - 18.63/nf + 36.24/nf**2 - 28.09/nf**3)
B = 4.0 * nf**4/(mf**3*y**2)*(1.0 + 4.0/(3.0*y) + bn/y**2.0)
sigma(m) = 1.76e-16*nf**2/(y*x)*(1.0 - exp(-r*y*x))* &
(A*(log(x) + 1.0/(2.0*x)) + (B - A*log(2.0*n**2.0/y))* &
(1.0 - 1.0/x))
if(x.le.1.0) sigma(m) = 0.d0
endif
enddo m_loop
endif
end function e_excit_n