p_cx_3 Function

public function p_cx_3(Erel, m_max) result(sigma)

Calculates an array of cross sections for proton-Hydrogen charge exchange interactions from the state to m = 1..m_max states at energy Erel

Equation

References

Arguments

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

Relative collision energy [keV/amu]

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 index refers to the m'th state []


Calls

proc~~p_cx_3~~CallsGraph proc~p_cx_3 p_cx_3 proc~p_cx_janev p_cx_janev proc~p_cx_3->proc~p_cx_janev proc~m_spread m_spread proc~p_cx_3->proc~m_spread proc~p_cx_3_5_adas p_cx_3_5_adas proc~p_cx_3->proc~p_cx_3_5_adas proc~p_cx_3_2_adas p_cx_3_2_adas proc~p_cx_3->proc~p_cx_3_2_adas proc~p_cx_3_3_adas p_cx_3_3_adas proc~p_cx_3->proc~p_cx_3_3_adas proc~p_cx_3_6inf_adas p_cx_3_6inf_adas proc~p_cx_3->proc~p_cx_3_6inf_adas proc~p_cx_3_4_adas p_cx_3_4_adas proc~p_cx_3->proc~p_cx_3_4_adas proc~p_cx_1 p_cx_1 proc~p_cx_3->proc~p_cx_1 proc~p_cx_1_3_adas p_cx_1_3_adas proc~p_cx_3->proc~p_cx_1_3_adas proc~p_cx_1_janev p_cx_1_janev proc~p_cx_janev->proc~p_cx_1_janev proc~p_cx_2_janev p_cx_2_janev proc~p_cx_janev->proc~p_cx_2_janev proc~p_cx_n_janev p_cx_n_janev proc~p_cx_janev->proc~p_cx_n_janev proc~p_cx_3_janev p_cx_3_janev proc~p_cx_janev->proc~p_cx_3_janev proc~p_cx_1->proc~p_cx_janev proc~p_cx_1->proc~p_cx_1_3_adas proc~p_cx_1_1_adas p_cx_1_1_adas proc~p_cx_1->proc~p_cx_1_1_adas proc~p_cx_1_2_adas p_cx_1_2_adas proc~p_cx_1->proc~p_cx_1_2_adas proc~p_cx_1_2_janev p_cx_1_2_janev proc~p_cx_1->proc~p_cx_1_2_janev proc~p_cx_1_4_adas p_cx_1_4_adas proc~p_cx_1->proc~p_cx_1_4_adas proc~aljan1 aljan1 proc~p_cx_1_2_janev->proc~aljan1

Called by

proc~~p_cx_3~~CalledByGraph proc~p_cx_3 p_cx_3 proc~p_cx_n p_cx_n proc~p_cx_n->proc~p_cx_3 proc~p_cx p_cx proc~p_cx->proc~p_cx_n proc~p_cx_n_m p_cx_n_m proc~p_cx_n_m->proc~p_cx_n proc~write_bb_h_h write_bb_H_H proc~write_bb_h_h->proc~p_cx program~generate_tables generate_tables program~generate_tables->proc~write_bb_h_h

Contents

Source Code


Source Code

function p_cx_3(Erel,m_max) result(sigma)
    !+Calculates an array of cross sections for proton-Hydrogen charge exchange interactions
    !+from the \(n=3\) state to m = 1..`m_max` states at energy `Erel`
    !+
    !+@note
    !+Cross sections are normalized to the total cross sections calculated by
    !+[[p_cx_janev(proc)]].
    !+
    !+@note
    !+Cross sections for the \(n=3 \rightarrow m=1\) states are calculated via
    !+equivalence principle using [[p_cx_1_3_adas(proc)]].
    !+
    !+@note
    !+Cross Sections for \(m \geq 6\) are calculated by "spreading" their
    !+expected total cross sections among the \( m \geq 6\) states.
    !+
    !+###Equation
    !+ $$H^+ + H(3) \rightarrow H(m=1..m_{max}) + H^+$$
    !+###References
    !+* Ref. 4 [[atomic_tables(module)]]
    real(Float64), intent(in)       :: Erel
        !+ Relative collision energy [keV/amu]
    integer, intent(in)             :: m_max
        !+ Number of `m` states to calculate
    real(Float64), dimension(m_max) :: sigma
        !+ Array of cross sections where the index refers to the `m`'th state [\(cm^2\)]

    real(Float64), parameter :: n2 = 9.d0
    real(Float64) :: eb, En, Em, sigma_m6, norm_fac
    real(Float64), dimension(m_max) :: sigma1

    sigma = 0.d0
    sigma1 = 0.d0
    sigma1 = p_cx_1(Erel*n2,m_max)
    sigma(1) = p_cx_1_3_adas(Erel*n2)/n2

    sigma(2) = p_cx_3_2_adas(Erel)
    sigma(3) = p_cx_3_3_adas(Erel)
    sigma(4) = p_cx_3_4_adas(Erel)

    if(m_max.ge.5) then
        sigma(5) = p_cx_3_5_adas(Erel)
    endif

    if(m_max.ge.6) then
        sigma_m6 = p_cx_3_6inf_adas(Erel)
        call m_spread(3, m_max, sigma_m6, sigma)
    endif

    norm_fac = p_cx_janev(Erel, 3)/sum(sigma)
    sigma = sigma*norm_fac

end function p_cx_3