module pefest { # Estimate a PEF avoiding zeros and bursty noise on input. use quantile_mod use helicon use misinput use pef contains subroutine pefest1( niter, yy, aa) { integer, intent( in) :: niter real, dimension( :), pointer :: yy type( filter) :: aa real, dimension(:),allocatable :: rr real :: rbar integer :: stat allocate(rr(size(yy))) call helicon_init( aa) # starting guess stat = helicon_lop( .false., .false., yy, rr) rbar = quantile( size( yy)/3, abs( rr)) # rbar=(r safe below rbar) where( aa%mis) yy = 0. call find_mask(( yy /= 0. .and. abs( rr) < 5 * rbar), aa) call find_pef( yy, aa, niter) deallocate(rr) } }