Calculates an array of cross section 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
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_1(Erel,m_max) result(sigma)
!+Calculates an array of cross section for proton-Hydrogen charge exchange interactions
!+from the \(n=1\) 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)]]
!+###Equation
!+ $$H^+ + H(1) \rightarrow H(m=1..m_{max}) + H^+$$
!+###References
!+* Ref. 2 [[atomic_tables(module)]]
!+* Ref. 4 [[atomic_tables(module)]]
!+* Ref. 8 [[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\)]
integer :: i
real(Float64) :: norm_fac
sigma = 0.d0
do i=1,m_max
select case (i)
case (1)
if(Erel.le.2.0) then
sigma(1) = p_cx_janev(Erel, 1)
else
sigma(1) = p_cx_1_1_adas(Erel)
endif
case (2)
if(Erel.le.2.0) then
sigma(2) = p_cx_1_2_janev(Erel)
else
sigma(2) = p_cx_1_2_adas(Erel)
endif
case (3)
sigma(3) = p_cx_1_3_adas(Erel)
case (4)
sigma(4) = p_cx_1_4_adas(Erel)
case DEFAULT
sigma(i) = 0.d0
end select
enddo
!Normalize to Janev to be consistent with other n levels (p_cx_2/3/...)
norm_fac = p_cx_janev(Erel, 1)/sum(sigma)
sigma = norm_fac*sigma
end function p_cx_1