SpectraRust/tlusty/extracted/hctrecom.f
2026-03-19 14:05:33 +08:00

37 lines
1.1 KiB
Fortran

function HCTRecom(ion,nelem)
c ============================
c
c Code by Jim Kingdon, in collaboration with G.J. Ferland
c ion is stage of ionization, 2 for the ion going to the atom
c nelem is atomic number of element, 2 up to 30
c Example: O+ + H => O + H+ is HCTRecom(2,8)
c integer ion , nelem
INCLUDE 'IMPLIC.FOR'
common/CTRTEMP/ te
common/CTRecomb/ CTRecomb(6,4,30)
c
c local variables
* real tused
c integer ipIon
c
ipIon = ion - 1
c
if( ipIon.gt.4 ) then
c use statistical charge transfer for ion > 4
HCTRecom = 1.92e-9 * ipIon
return
endif
c
c Make sure te is between temp. boundaries; set constant outside of range
tused = max( te,CTRecomb(5,ipIon,nelem) )
tused = min( tused , CTRecomb(6,ipIon,nelem) )
tused = tused * 1e-4
c
c the interpolation equation
HCTRecom = CTRecomb(1,ipIon,nelem)* 1e-9 *
1 (tused**CTRecomb(2,ipIon,nelem)) *
2 (1. +
3 CTRecomb(3,ipIon,nelem) * exp(CTRecomb(4,ipIon,nelem)*tused) )
c
end