!------------------------------------------------------------------------------
!
real(fp) FUNCTION SGHEII(ZE)
!
!
!============
! idecl:  explicitize implicit INTEGER declarations:
  use iso_c_binding, only: fp => c_double
  IMPLICIT NONE
  INTEGER i
!============
! idecl:  explicitize implicit real(fp) declarations:
  real(fp) ze2,zemin,zemax,zeuse,zle,zls,zlss,zle2,za2,zans
!============
  real(fp) ZE
!
!  ZE IN EV
!  SGHEII IN CM**2
!
!  JANEV-LANGER-EVANS-POST,
!  ELEMENTARY PROCESSES IN HYDROGEN-HELIUM PLASMAS
!  FIT FOR REACTION 6.3.2,  HE++ + HE --> HE++ + HE+ + E-
!    IMPACT IONIZATION
!
!  FIT TABLE IN SS 8.1, P. 255
!
  real(fp) A632(9)
  DATA A632/ 1.41674080e+06_fp,-1.11900817e+06_fp,&
       3.85796505e+05_fp,&
       -7.58381353e+04_fp, 9.29745057e+03_fp,&
       -7.27967598e+02_fp,&
       3.55515426e+01_fp,-9.90175555e-01_fp,&
       1.20425183e-02_fp/
!
  LOGICAL EXTRAP
!
  EXTRAP=.FALSE.
!
  ZE2=ZE
!
  ZEMIN=4750.0_fp
  ZEMAX=100000.0_fp
  IF((ZE2.LT.ZEMIN).OR.(ZE2.GT.ZEMAX)) EXTRAP=.TRUE.
!
  ZEUSE=min(ZEMAX,max(ZEMIN,ZE2))
!
  ZLE=log(ZEUSE)
!
  ZLS=A632(9)
  IF(EXTRAP) ZLSS=8.0_fp*A632(9)
!
  DO I=8,1,-1
     ZLS=ZLS*ZLE+A632(I)
     IF(EXTRAP.AND.(I.GE.2)) ZLSS=ZLSS*ZLE+(I-1)*A632(I)
  enddo
!
  IF(EXTRAP) THEN
     ZLE2=log(ZE2)
     ZA2=0.8_fp
     IF(ZE2.LT.ZEMIN) ZLS=ZLS-ZLSS*(ZLE-ZLE2)
     IF(ZE2.GT.ZEMAX) ZLS=ZLS+(ZLE2-ZLE)*(ZLSS-ZA2*(ZLE2-ZLE))
  ENDIF
!
  ZANS = EXP(min(50.0_fp,ZLS))
!
  SGHEII=ZANS
!
  RETURN
END FUNCTION SGHEII
!
!------------------------------------------------------------------------------
 
 
 
 
! 30Jun2000 fgtok -s r8_precision.sub "r8con.csh conversion"
! 02Aug2000 fgtok -s r8_precision.sub "r8con.csh conversion"
! 02Aug2000 fgtok
