next up previous print clean
Next: Operator definition for 3-D Up: Examples of operator-definition modules Previous: Examples of operator-definition modules

Operator definition for constant-velocity NMO

 
function mov3d_hyper_const (inv_map,inv_amp,inp_geom,out_geom, &
      first_samp, last_samp, map, amp, inp_cent_coord) result (stat)
logical                 :: inv_map,inv_amp
integer                 :: stat
type (seis3d_geom_type), intent(in) :: inp_geom
type (seis3d_geom_type), intent(in) :: out_geom
integer, dimension(:,:), intent(out) :: first_samp,last_samp
real,  dimension (:,:,:), intent(out)  :: map,amp
real, pointer,  optional,  dimension (:,:,:)  :: inp_cent_coord

...

if(.not. inv_map) then in_bound = .true. moveout= slow_sq*aoff_sq if(moveout < 0.) then first_samp(1,1) = & max(1,ceiling(((t_0_dat + sqrt(-moveout))-t_0_mod)*inv_d_t_mod)+1) else first_samp(1,1)=1 end if last_samp(1,1)=n_t_mod i_samp_mod = first_samp(1,1) do while ((i_samp_mod < n_t_mod ) .and. in_bound) t_mod=t_0_mod + (i_samp_mod-1)*d_t_mod t_dat=sqrt(t_mod*t_mod + moveout) map(i_samp_mod,1,1)=(t_dat-t_0_dat)*inv_d_t_dat + 1 if(inv_amp) then if(t_mod > 0.) then amp(i_samp_mod,1,1)=t_dat/t_mod else amp(i_samp_mod,1,1)=1. end if else if(t_dat > 0.) then amp(i_samp_mod,1,1)=t_mod/t_dat else amp(i_samp_mod,1,1)=1. end if end if if(map(i_samp_mod,1,1) > n_t_dat) then in_bound=.false. last_samp(1,1)=i_samp_mod-1 end if i_samp_mod=i_samp_mod + 1 end do else call seperr('mov3d_hyper_const: cannot implement inv_map with NMO') end if

 


next up previous print clean
Next: Operator definition for 3-D Up: Examples of operator-definition modules Previous: Examples of operator-definition modules
Stanford Exploration Project
7/5/1998