Aq_excit_n_janev Function

public function Aq_excit_n_janev(eb, q, n, m_max) result(sigma)

Calculates an array of the generic excitation cross sections for a neutral Hydrogen atom transitioning from the n state to the m=1..m_max states due to a collision an ion with charge q at energy eb

Equation

References

Arguments

Type IntentOptional AttributesName
real(kind=Float64), intent(in) :: eb

Collision energy [keV]

integer, intent(in) :: q

Ion charge

integer, intent(in) :: n

Initial atomic energy level/state

integer, intent(in) :: m_max

Number of m states to calculate

Return Value real(kind=Float64), dimension(m_max)

Array of cross sections where the m'th index refers to an excitation from the n state to the m'th state []


Called by

proc~~aq_excit_n_janev~~CalledByGraph proc~aq_excit_n_janev Aq_excit_n_janev proc~aq_excit_n Aq_excit_n proc~aq_excit_n->proc~aq_excit_n_janev proc~aq_excit Aq_excit proc~aq_excit->proc~aq_excit_n proc~aq_excit_n_m Aq_excit_n_m proc~aq_excit_n_m->proc~aq_excit_n proc~write_bb_h_aq write_bb_H_Aq proc~write_bb_h_aq->proc~aq_excit program~generate_tables generate_tables program~generate_tables->proc~write_bb_h_aq

Contents

Source Code


Source Code

function Aq_excit_n_janev(eb, q, n, m_max) result(sigma)
    !+Calculates an array of the generic excitation cross sections for a neutral Hydrogen atom transitioning from
    !+the `n` state to the m=1..`m_max` states due to a collision an ion with charge `q` at energy `eb`
    !+
    !+###Equation
    !+$$ A^{q+} + H(n) \rightarrow A^{q+} + H(m=1..m_{max}), q \gt 3, m \gt n, n \gt 3 $$
    !+
    !+###References
    !+* Page 146 in Ref. 5 [[atomic_tables(module)]]
    !+
    real(Float64), intent(in)       :: eb
        !+ Collision energy [keV]
    integer, intent(in)             :: q
        !+ Ion charge
    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` state to the m'th state [\(cm^2\)]

    integer :: m
    real(Float64) :: nf, mf, qf, etil, hi, s
    real(Float64) :: D, A, G, L, F, H, y, zpl, zmi, C2pl, C2mi

    nf = real(n)
    qf = real(q)
    sigma = 0.d0
    m_loop: do m=1,m_max
        mf = real(m)
        if(n.ge.m) then
            sigma(m) = 0.d0
            cycle m_loop
        endif
        etil = eb/(25.0*qf)
        hi = 2.0**(0.322*(1.0 - sqrt(2.0/qf)))
        s = (mf - nf)

        D = exp(-1.0/(nf*mf*etil**2))
        A = 8.0/(3.0*s) * (mf/(s*nf))**3 * (0.184 - 0.04/s**(2.0/3.0)) * &
           (1.0 - 0.2*s/(nf*mf))**(1.0 + 2.0*s)
        G = 0.5*(etil*nf**2.0 / (mf - 1.0/mf))**3.0
        L = log(1.0 + 0.53*etil**2.0 * nf*(mf - 2.0/mf )/(1.0 + 0.4*etil))
        F = (1.0 - 0.3*s*D/(nf*mf))**(1.0 + 2.0*s)

        y = 1.0/(1.0 - D*log(18*s)/(4.0*s))
        zpl = 2.0/(etil*nf**2*(sqrt(2.0 - nf**2/mf**2) + 1.0))
        zmi = 2.0/(etil*nf**2*(sqrt(2.0 - nf**2/mf**2) - 1.0))
        C2pl = zpl**2*log(1.0 + 2.0*zpl/3.0)/(2.0*y + 3.0*zpl/2.0)
        C2mi = zmi**2*log(1.0 + 2.0*zmi/3.0)/(2.0*y + 3.0*zmi/2.0)
        H = C2mi - C2pl

        sigma(m) = q*hi*8.86e-17*nf**4/etil*(A*D*L+F*G*H)
    enddo m_loop

end function Aq_excit_n_janev