Fit Function: EIONLT

Fit Function \[\begin{align*} \sigma = 10^{-14} \frac{xs1 \; \; xs2}{pe}; \\ xs1 = pcf(5) \; pcf(3)\; \ln \left( \frac{pe}{pcf(1)} \right) \; \frac{1- pcf(7)\exp\left(-pcf(9)\; \left(\frac{pe}{pcf(1)} -1 \right)\right)}{pcf(1)} \\ xs2 = pcf(6) \; pcf(4)\; \ln \left( \frac{pe}{pcf(2)} \right) \; \frac{1- pcf(8)\exp\left(-pcf(10)\; \left(\frac{pe}{pcf(2)} -1 \right)\right)}{pcf(2)} \\ \end{align*}\]
Comments

Fortran

Arguments
namedescriptionunitstype(s)
pe energy eV real, dimension(:)
pcf coefficient data array real, dimension(10)
kncf number of coefficients in the data array integer
pfit cross section cm2 real, dimensition(:)
kermsg error message character
Return values
namedescriptionunitstype(s)
pfit cross section cm2 real, dimension(:)
Code
c
c###################################################################
c
      subroutine eionlt(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
c     pe = collision energy in eV
c
c     this evaluation function requires the binding energies of the
c     target atomic subshells and constants to be passed in the coefficient 
c     data array, such that
c
c     pcf(1) = binding energy of the electron in first subshell
c     pcf(2) = binding energy of the electron in second subshell
c     pcf(3-4) = q1, q2
c     pcf(5-6) = a1, a2
c     pcf(7-8) = b1, b2
c     pcf(9-10) = c1, c2
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.
c
c     kermsg = blank if no errors
c
c     pxs = cross section in cm[2]
c
c------------------------------------------------------------------------
c
      double precision e, pe, pcf, pxs
      double precision eth1, eth2, xs1, xs2
      double precision a1, a2, b1, b2, c1, c2, q1, q2
c
      dimension pcf(10)
      character*(*) kermsg
c
      eth1 = pcf(1)
      if(pe .ge. eth1) then
        kermsg = ' '
      else
        pxs = 0.0
        return
      endif
c
c energy remains in eV
      e = pe
c
c     determine the value of the cross section  pxs
c
      if(kncf .eq. 10) then
        eth2 = pcf(2)
        q1 = pcf(3)
        q2 = pcf(4)
        a1 = pcf(5)
        a2 = pcf(6)
        b1 = pcf(7)
        b2 = pcf(8)
        c1 = pcf(9)
        c2 = pcf(10)
        xs1 = a1 * q1 * dlog(e/eth1) * 
     1    (1.d0-b1*dexp(-c1*(e/eth1 - 1.d0)))/eth1
        xs2 = a2 * q2 * dlog(e/eth2) * 
     1    (1.d0-b2*dexp(-c2*(e/eth2 - 1.d0)))/eth2
        pxs = 1.0e-14 * (xs1 + xs2)/e
      else
          kermsg = ' incorrect number of coefficients passed to eionlt'
          return
      endif
c
      return
      end

Python

Arguments
namedescriptionunitstype(s)
pe 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