module gdecon_mod { # gapped deconvolution. input=yy output=rr use icaf1 use cgstep_mod use solver_mod contains subroutine gdecon( na, yy, rr, niter, gap) { integer, intent( in) :: na, niter, gap real, dimension( :), pointer :: yy real, dimension( :), intent( out) :: rr real, dimension( na) :: aa # prediction-error filter logical, dimension( na) :: mm # filter mask real, dimension(:),allocatable :: dd # data allocate(dd(size(yy))) dd = 0. # initialize data aa = 0.; aa( 1) = 1. # initialize filter mm = .false.; mm( :gap) = .true. # initialize mask call icaf1_init( yy, 1) # initialize convolution call solver( icaf1_lop, cgstep, aa, dd, niter, x0= aa, res= rr, known= mm) call cgstep_close() deallocate(dd) } }