subroutine zstop_sigv(izneut,izimp,eova,n,sigv)
 
  use hatom_mod
  implicit NONE
 
  !  neutral stopping rate coefficient (cx + ii) for neutral atom
  !  (Z=izneut) striking an impurity population with relative energy
  !  per amu EovA (KeV/nucleon) -- or mp*vrel**2/2 expressed in KeV
  !  via table lookup
  !
  !  tables provided for H,He,Li
  !         interacting with C and O
  !         other Zimp => interpolation or scaling by Z of C and/or O
  !         rate coefficients
 
  integer, intent(in) :: izneut   ! Z of neutral atom (1, 2 or 3)
  integer, intent(in) :: izimp    ! Z of (fully stripped light) impurity ion
  integer, intent(in) :: n        ! vector size
  real*8, intent(in) :: EovA(n)   ! rel. energy / nucleon, KeV/AMU
 
  real*8, intent(out) :: sigv(n)  ! <sigma*v> value(s) returned  m**3/sec
 
  real*8, parameter :: out_of_range=0.0  ! sigv to use when out of range

  !
  !  if iZneut is out of range, sigv(:)=out_of_range is returned...
  !
  !-----------------------
  ! local
 
  real*8 zimp
 
  !-----------------------
 
  if(hatom_flag.eq.0) call hatom_init
 
  if(izimp.eq.6) then
 
     if(izneut.eq.1) then
 
        call sv_coldtarget_sigmatimesv(Lst_H0_C6,eova,sigv,n)
 
     else if(izneut.eq.2) then
 
        call sv_coldtarget_sigmatimesv(Lst_He0_C6,eova,sigv,n)
 
     else if(izneut.eq.3) then
 
        call sv_coldtarget_sigmatimesv(Lst_Li0_C6,eova,sigv,n)
 
     else
        sigv = out_of_range
     endif
 
  else if(izimp.eq.8) then
 
     if(izneut.eq.1) then
 
        call sv_coldtarget_sigmatimesv(Lst_H0_O8,eova,sigv,n)
 
     else if(izneut.eq.2) then
 
        call sv_coldtarget_sigmatimesv(Lst_He0_O8,eova,sigv,n)
 
     else if(izneut.eq.3) then
 
        call sv_coldtarget_sigmatimesv(Lst_Li0_O8,eova,sigv,n)
 
     else
        sigv = out_of_range
     endif
 
  else
     zimp = izimp
     call zstop_sigvz(izneut,zimp,eova,n,sigv)
  endif
 
end subroutine zstop_sigv
