module deburst1 { use copy use icai1 use solver_mod use cgstep_mod contains subroutine deburst ( niter, weight, eps, dd, hh) { interface { integer function weight( res, w) { real, dimension (:) :: res, w } } integer, intent (in) :: niter real, intent (in) :: eps real, intent (in) :: dd(:) real, intent (out) :: hh(:) real, pointer :: aa(:) allocate (aa (3)) aa = (/-1., 2., -1. /) # Laplacian filter call icai1_init (aa, 1) # initialize convolution # solver, regularized, weighting function call solver_reg( copy_lop, cgstep, x= hh, dat= dd, niter= niter, wght= weight, nfreq= 1, nmem= 0, reg= icai1_lop, nreg= size (dd), eps=eps) call cgstep_close () deallocate (aa) } }