program OW_3dslant
! 3D-linear Radon transform

  use sep
  use OW_type
  use OW_sltpar
  use OW_3dslt
  use OW_3drot
  use solver_tiny_mod1
  use solver_prc_mod 
  use igrad1
  use cgstep_mod1

  implicit none

  real, allocatable, dimension (:)		:: in,out
  integer					:: stat,ix,ih,iz,ind

  call sep_init()
  call sep_begin_prog()
  call owsltpar()
  allocate(in(sog%z%n*sog%sh%n*sog%xm%n))
  allocate(out(sog%z%n*nah*nax*sog%xm%n))
 
!  open(unit=2,file="lixo")

  call sreed("in",in,4*sog%z%n*sog%sh%n*sog%xm%n)
!  call solver_tiny(m=out, d=in, Fop=ow3dslant, stepper=cgstep, niter=niter)
!  call solver_prc( m=out,d=in, Fop=ow3dslant, Sop=igrad1_lop, stepper=cgstep, nSop=size(out1), niter=niter,eps=eps,&
!                   verb=.true.)
  stat = ow3dslant(.true.,.false.,out,in)
  if (teste) then
     stat = ow3dslant(.false.,.false.,out,in)
     call srite("out",in,4*sog%z%n*sog%sh%n*sog%xm%n)
  else if (rot) then
     stat = ow3drot(.true.,.false.,in,out)
     call srite("out",in,4*sog%z%n*sog%sh%n*sog%xm%n)
  else
     call srite("out",out,4*sog%z%n*nah*nax*sog%xm%n)
  end if
  deallocate(in,out)

!  close(2)
  call sep_end_prog()
end program 
