Code |
c
c###################################################################
c
subroutine jionhe(pe, pcf, kncf, pxs, kermsg)
c
c this is a subroutine to calculate cross sections (cm[2])
c versus energy (ev) for electron impact ionization.
c for details see doc=h-he-plasma , used for reactions
c 2.3.10, 2.3.11 (see doc=h-he-plasma.)
c
c pe = collision energy in ev
c
c the coefficient data array passed should contain
c
c pcf(1) = itrans, integer which defines the type of transition.
c for transitions defined only in terms of the initial
c and final principal quantum numbers (n,m), itrans=1.
c for tranitions between (nl,ml') states itrans=2
c
c pcf(2) = value of coefficient beta
c
c pcf(3) = n, principal quantum number of initial state
c
c if itrans = 2 the following coefficients are required
c
c pcf(4) = l, the orbital angular monentum of the inital state
c
c pcf(5) = mult, spin multiplicity (2s+1) of the inital state
c
c - warning- .
c
c the coefficient array pcf is updated by this routine to
c include energy independent constants. these coefficients can be
c used in subsequent calls for the same entry. the coefficeients
c added are:
c
c pcf(6) = eth, threshold ionization energy for the transition (ev)
c
c kermsg = blank if no errors
c
c pxs = cross section in cm[2]
c
c update d. humbert, 12 March 2007 ---- parameters passed to heionen changed
c------------------------------------------------------------------------
c
double precision pe, pcf, pxs
c
integer n, l, m, itrans
dimension pcf(6)
character*(*) kermsg
c
data ry /1.358e+01/
c
itrans = pcf(1)
beta = pcf(2)
n = pcf(3)
if (itrans .eq. 2) then
l = pcf(4)
m = pcf(5)
endif
c
if (kncf .lt. 6) then
c
c first call to jionhe determine energy independent
c parameters and place in pcf for further use
c
c determine ionization energy
c
if (itrans .eq. 1) then
call heionen(n, 0, 0, 1, eion, kermsg)
else if (itrans .eq. 2) then
call heionen(n, l, m, 0, eion, kermsg)
else
kermsg = 'invalid value of fisrt coefficientin jionhe'
return
endif
c
c place energy independent parameters in coefficient array and
c update kncf
c
pcf(6) = eion
kncf = 6
else if (kncf .eq. 6) then
eion = pcf(6)
c
else
kermsg = ' incorrect number of coefficients passed to jionhe'
return
endif
c
if(pe .lt. eion) then
pxs=0.0
return
endif
c
c determine the value of the cross section pxs
c
u = pe/eion
pxs = 3.52e-16 * (ry/eion)**2 * 0.66 * (u - 1.0) *
1 log(1.25 * beta * u) / (u * u)
c
return
end |