module invint { # invint -- INVerse INTerpolation in 1-D. use lint1 use tcai1 use cgstep_mod use reg_solver contains subroutine invint1( niter, coord, dd, o1, d1, aa, mm, eps) { integer, intent (in) :: niter # iterations real, intent (in) :: o1, d1, eps # axis, scale real, dimension (:), pointer :: coord, aa # aa is filter real, dimension (:), intent (in) :: dd # data real, dimension (:), intent (out) :: mm # model integer :: nreg # size of A m nreg = size( aa) + size( mm) # transient call lint1_init( o1, d1, coord ) # interpolation call tcai1_init( aa, size( mm)) # filtering call solver_reg( lint1_lop, cgstep, tcai1_lop, nreg, mm, dd, niter, eps) call cgstep_close( ) } }