Code |
c
c###################################################################
c
subroutine jeexc5(pe, pcf, kncf, pfit, kermsg)
c
c this is a subroutine to calculate a cross section
c in cm[2] as function of electron energy in ev.
c for details see doc=h-he-plasma , used for reactions
c 2.3.14, 2.3.15, 2.3.16, 2.3.17a, 2.3.17b
c (see doc=h-he-plasma.)
c
c pcf is the coefficient data array, where
c
c pcf(1) = ttype , type of expression
c if ttype = 1 expression contains ln (u + 16)
c if ttype = 2 expression contains 1 instead of ln term
c
c pcf(2) = normalisation coefficient a
c
c pcf(3) = coefficient c
c
c pcf(4) = coefficient phi
c
c pcf(5) = principal quantum number of the initial state
c
c pcf(6) = principal quantum number of the final 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, see doc=h-he-plasma for meaning,
c
c pcf(7) = threshold energy for the transition
c
c pe = electron energy (ev)
c
c kermsg = blank if no errors
c
c pfit = cross section in cm[2]
c
c written by j. j. smith , iaea atomic and molecular data unit
c
c------------------------------------------------------------------------
c
double precision pe, pcf, pfit
integer n, m, ttype
dimension pcf(7)
character*(*) kermsg
data ry/13.58/
ttype=pcf(1)
a=pcf(2)
c=pcf(3)
phi=pcf(4)
n=pcf(5)
m=pcf(6)
an = n
am = m
c
c first call to jeexc5 determine energy independent
c parameters and place in pcf for further use
c
if (kncf .eq. 6) then
eth = 4.0 *ry * ( 1.0/(an*an) - 1.0/(am*am))
pcf(7) = eth
kncf = 7
else if (kncf .eq. 7) then
eth = pcf(7)
else
kermsg = ' incorrect number of coefficients passed to eexchd'
return
endif
c
if (pe .lt. eth) then
pfit = 0.0
return
endif
c
u = (pe - eth) / eth
c1= a * (c/(am**3)) * ((ry/eth)**2)
pfit = c1 * sqrt(u/(u+1.0))
if (ttype .eq. 1) then
pfit = pfit * log ( (u + 16.0))/ (u + phi)
else if (ttype .eq. 2) then
pfit = pfit / (u + phi)
else
pfit=0.0
kermsg = 'invalid first coefficient must be 1 or 2 '
endif
c
return
c
end |