p_cx_2_3_adas Function

public function p_cx_2_3_adas(Erel) result(sigma)

Calculates cross section for a proton-Hydrogen charge exchange interaction from the state to the state at energy Erel

Equation

References

Arguments

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

Relative collision energy [keV/amu]

Return Value real(kind=Float64)

Cross Section []


Called by

proc~~p_cx_2_3_adas~~CalledByGraph proc~p_cx_2_3_adas p_cx_2_3_adas proc~p_cx_2 p_cx_2 proc~p_cx_2->proc~p_cx_2_3_adas proc~p_cx_n p_cx_n proc~p_cx_n->proc~p_cx_2 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_2_3_adas(Erel) result(sigma)
    !+Calculates cross section for a proton-Hydrogen charge exchange interaction
    !+from the \(n=2\) state to the \(m=3\) state at energy `Erel`
    !+
    !+###Equation
    !+ $$H^+ + H(2) \rightarrow H(3) + H^+$$
    !+###References
    !+* Ref. 4 [[atomic_tables(module)]]
    real(Float64), intent(in) :: Erel
        !+ Relative collision energy [keV/amu]
    real(Float64)             :: sigma
        !+ Cross Section [\(cm^2\)]

    real(Float64), dimension(11), parameter :: a2s = [-3.513030327d5, 9.281116596d5, &
                                                      -1.086843398d6, 7.437325055d5, &
                                                      -3.296609685d5, 9.897503768d4, &
                                                      -2.039707143d4, 2.850670244d3, &
                                                      -2.587092857d2, 1.377382945d1, &
                                                      -3.268306303d-1 ]

    real(Float64), dimension(11), parameter :: a2p = [-1.901264631d5, 5.124716103d5, &
                                                      -6.101921504d5, 4.234717934d5, &
                                                      -1.899866398d5, 5.764464326d4, &
                                                      -1.199087959d4, 1.689900512d3, &
                                                      -1.545334374d2, 8.285001228d0, &
                                                      -1.978656474d-1 ]

    real(Float64), parameter :: n = 2.d0

    real(Float64) :: ee, l, sigma2s, sigma2p

    ee = min(max(Erel * 1.d3 * n**2.d0, 1.d3), 4.d6)

    l = log10(ee)

    sigma2s = a2s(1) + a2s(2)*l + a2s(3)*l**2.0 + a2s(4)*l**3.0 + &
              a2s(5)*l**4.0     + a2s(6)*l**5.0 + a2s(7)*l**6.0 + &
              a2s(8)*l**7.0     + a2s(9)*l**8.0 + a2s(10)*l**9.0 + a2s(11)*l**10.0
    sigma2s = 10.d0**(sigma2s)

    sigma2p = a2p(1) + a2p(2)*l + a2p(3)*l**2.0 + a2p(4)*l**3.0 + &
              a2p(5)*l**4.0     + a2p(6)*l**5.0 + a2p(7)*l**6.0 + &
              a2p(8)*l**7.0     + a2p(9)*l**8.0 + a2p(10)*l**9.0 + a2p(11)*l**10.0
    sigma2p = 10.d0**(sigma2p)

    sigma = (0.25*sigma2s + 0.75*sigma2p)

end function p_cx_2_3_adas