!
!  real*8 interface -- beam target fusion
!
!  collection of functions for evaluating fusion reaction rate coefficients
!  <sigma*v> from pretabulated data
!
!  for all functions:  input beam energy, KeV, target temperature, KeV,
!  receive <sigma*v>, m**3/sec
!
subroutine fusn_btsigv_DDp(ebeam,ttarget,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: ebeam(n),ttarget(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_warmtarget_sigmatimesv(Lfs_DDp, ebeam, ttarget, answer, n)
 
end subroutine fusn_btsigv_DDp
!
subroutine fusn_btsigv_DDn(ebeam,ttarget,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: ebeam(n),ttarget(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_warmtarget_sigmatimesv(Lfs_DDn, ebeam, ttarget, answer, n)
 
end subroutine fusn_btsigv_DDn
!
subroutine fusn_btsigv_DT(ebeam,ttarget,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: ebeam(n),ttarget(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_warmtarget_sigmatimesv(Lfs_DT, ebeam, ttarget, answer, n)
 
end subroutine fusn_btsigv_DT
!
subroutine fusn_btsigv_TD(ebeam,ttarget,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: ebeam(n),ttarget(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_warmtarget_sigmatimesv(Lfs_TD, ebeam, ttarget, answer, n)
 
end subroutine fusn_btsigv_TD
!
subroutine fusn_btsigv_TT(ebeam,ttarget,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: ebeam(n),ttarget(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_warmtarget_sigmatimesv(Lfs_TT, ebeam, ttarget, answer, n)
 
end subroutine fusn_btsigv_TT

subroutine fusn_btsigv_dpcTT(ebeam,ttarget,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: ebeam(n),ttarget(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_warmtarget_sigmatimesv(Lfs_dpcTT, ebeam, ttarget, answer, n)
 
end subroutine fusn_btsigv_dpcTT
!
subroutine fusn_btsigv_D3(ebeam,ttarget,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: ebeam(n),ttarget(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_warmtarget_sigmatimesv(Lfs_D3, ebeam, ttarget, answer, n)
 
end subroutine fusn_btsigv_D3
!
subroutine fusn_btsigv_3D(ebeam,ttarget,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: ebeam(n),ttarget(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_warmtarget_sigmatimesv(Lfs_3D, ebeam, ttarget, answer, n)
 
end subroutine fusn_btsigv_3D
!
subroutine fusn_btsigv_T3(ebeam,ttarget,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: ebeam(n),ttarget(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_warmtarget_sigmatimesv(Lfs_T3, ebeam, ttarget, answer, n)
 
end subroutine fusn_btsigv_T3
!
subroutine fusn_btsigv_3T(ebeam,ttarget,answer,n)
 
  use hatom_mod
  implicit NONE
 
  integer, intent(in) :: n
  real*8, intent(in) :: ebeam(n),ttarget(n)
  real*8, intent(out) :: answer(n)
 
  !--------------------------------------------
  !  initialize module, if necessary
 
  if(hatom_flag.eq.0) call hatom_init
 
  !--------------------------------------------
 
  call fs_warmtarget_sigmatimesv(Lfs_3T, ebeam, ttarget, answer, n)
 
end subroutine fusn_btsigv_3T
