!
!  real*8 interface -- fusion -- sigma*v(Eb)
!
!  collection of functions for evaluating fusion reaction rate coefficients
!  sigma*v from pretabulated data -- mono-energetic beam hitting a
!  stationary target; beam energy is Eb, KeV.
!
!  for all functions:  input Eb, KeV
!  receive sigma*v, m**3/sec
!
!  **note** usually it is better to use the beam-target, thermonuclear,
!  or beam-beam gyro averaged tables!
!
!  **warning**
!  the following have the same reactivity
!     DT  --  D beam, T cold target  50 KeV D beam
!     TD  --  T beam, D cold target  75 KeV T beam
!  the energy is must be measured in the rest frame of the target!
!  (similar issue for D3/3D and T3/3T).
!
subroutine fusn_coldtarget_DDp(Eb,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: Eb(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_coldtarget_sigmatimesv(Lfs_DDp, Eb, answer, n)
 
end subroutine fusn_coldtarget_DDp
!
subroutine fusn_coldtarget_DDn(Eb,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: Eb(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_coldtarget_sigmatimesv(Lfs_DDn, Eb, answer, n)
 
end subroutine fusn_coldtarget_DDn
!
subroutine fusn_coldtarget_DT(Eb,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: Eb(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_coldtarget_sigmatimesv(Lfs_DT, Eb, answer, n)
 
end subroutine fusn_coldtarget_DT
!
subroutine fusn_coldtarget_TD(Eb,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: Eb(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_coldtarget_sigmatimesv(Lfs_TD, Eb, answer, n)
 
end subroutine fusn_coldtarget_TD
!
subroutine fusn_coldtarget_TT(Eb,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: Eb(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_coldtarget_sigmatimesv(Lfs_TT, Eb, answer, n)
 
end subroutine fusn_coldtarget_TT
!
subroutine fusn_coldtarget_dpcTT(Eb,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: Eb(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_coldtarget_sigmatimesv(Lfs_dpcTT, Eb, answer, n)
 
end subroutine fusn_coldtarget_dpcTT
!
subroutine fusn_coldtarget_D3(Eb,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: Eb(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_coldtarget_sigmatimesv(Lfs_D3, Eb, answer, n)
 
end subroutine fusn_coldtarget_D3
!
subroutine fusn_coldtarget_3D(Eb,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: Eb(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_coldtarget_sigmatimesv(Lfs_3D, Eb, answer, n)
 
end subroutine fusn_coldtarget_3D
!
subroutine fusn_coldtarget_T3(Eb,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: Eb(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_coldtarget_sigmatimesv(Lfs_T3, Eb, answer, n)
 
end subroutine fusn_coldtarget_T3
!
subroutine fusn_coldtarget_3T(Eb,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: Eb(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_coldtarget_sigmatimesv(Lfs_3T, Eb, answer, n)
 
end subroutine fusn_coldtarget_3T
