Fit Function: BELI

Fit Function \[\begin{align*} \sigma = \frac{10^{-13}}{ion\ \ pe}\Bigg[a \; \ln\left(\frac{pe}{ion}\right) + \sum_{i=istart}^{iend} pcf(i) \left(1- \frac{ion}{pe}\right)^{i- istart +1}\Bigg] \\ \begin{cases} ion = pcf(9);\; a = pcf (10); \; istart =11;\; iend =kncf & \text{if } kncf \gt 7 \; \text{and}\; pe \gt pcf(8) \\ ion = pcf(1); \; a = pcf (2); \; istart =3;\ iend =7& \text{if } kncf \gt 7 \; \text{and}\; pe \lt pcf(8) \\ ion = pcf(1); \; a = pcf (2); \; istart =3;\ iend =kncf& \text{if } kncf \le 7 \\ \end{cases} \end{align*}\]
Comments

Fortran

Arguments
namedescriptionunitstype(s)
pe requested energy eV real, dimension(:)
pcf coefficient data array real, dimension(15)
kncf number of coefficients in the data array integer
pfit cross section cm2 real, dimension(:)
kermsg error message character
Return values
namedescriptionunitstype(s)
pfit cross section cm2 real, dimension(:)
Code
c
c###################################################################
c
      subroutine albeli(pe, pcf, kncf, pxs, kermsg)
c
c     electron impact ionization cross section fits
c
c     reference: k. l. bell et al, j. phys. chem. ref. data 12, 891
c                (1983)
c
c     this is an iaea subroutine to calculate cross sections for
c     projectile energy (ev).
c
c     pe =  electron energy (ev)
c
c     the number of fitting parameters varies depending on the
c     number of terms taken in the numerical fitting and on the
c     allowance for excitation autoionization in the cross section
c     to fit cross sections with excitation autoionization two seperate
c     fits are defined. one from the ionization threshold and a second
c     fit for energies above the autoionization threshold.
c     the number of parameters in any entry is given by kncf
c
c     pcf(1) = ionization potential (ev)
c     pcf(2-7) = fitting parameters ( can be less than 6 parameters)
c
c     if cross section has excitation autoionization structure then
c     for the second fit
c
c     pcf(8) = autoionization threshold (ev)
c     pcf(9) = ionization potential (ev)
c     pcf(10-15) = fitting parameters for this fit (can be less than
c                  6 parameters)
c
c     kncf = number of parameters supplied in pcf (must be 8)
c     pxs = ionization cross section (cm[2])
c     kermsg = error message, ' ' is ok
c
c     written by j. j. smith , iaea atomic and molecular data unit
c
c======================================================================
c
      double precision pe, pcf, pxs
      double precision ion, power, power1, xs, a, x, x2
      dimension pcf(15)
      character*(*) kermsg
c
      kermsg = ' '
      if(pe .lt. pcf(1)) then
        pxs = 0.0d0
        return
      else
        kermsg = ' '
      endif
c
c---  determine parameters to be used
c
      if (kncf .gt. 7 .and. pe .gt. pcf(8) ) then
c
c---      autoionization included and energy > autoionization threshold
c
        ion = pcf(9)
        a=pcf(10)
        istart=11
        iend=kncf
      else
        ion = pcf(1)
        a=pcf(2)
        istart=3
        if (kncf .gt. 7) then
          iend=7
        else
          iend = kncf
        endif
      endif
c
c---  generate cross section
c
      x=ion/pe
      x2= 1.0d0/x
c
c---  contribution from bethe term
c
      xs = a*dlog(x2)
      if ( kncf .ge. istart) then
c
c---  contribution from least squares fit terms
c
        power1 = 1.0d0 - x
        power = power1
        do 10 i=istart,iend
          xs = xs + pcf(i)*power
          power = power*power1
  10    continue
      endif
c
c---  scale results to cm[2]
c
      pxs= 1.0d-13*xs /(pe*ion)
c
      return
      end

Python

Arguments
namedescriptionunitstype(s)
pe requested energy eV float, np.ndarray
pcf coefficient data array float, np.ndarray
kncf number of coefficients in the data array int
pfit cross section cm2 float, np.ndarray
kermsg error message str
Return values
namedescriptionunitstype(s)
pfit cross section cm2 float, np.ndarray
Code