Calculates an array of cross sections for proton-Hydrogen charge exchange interactions
from the state to m = 1..m_max
states at energy Erel
Cross sections are normalized to the total cross sections calculated by p_cx_janev.
Cross sections for the states are calculated via equivalence principle using p_cx_1_3_adas.
Cross Sections for are calculated by "spreading" their expected total cross sections among the states.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in) | :: | Erel | Relative collision energy [keV/amu] |
||
integer, | intent(in) | :: | m_max | Number of |
Array of cross sections where the index refers to the m
'th state []
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