# Time domain 15 degree (t',x',tau') migration of zero-offset section # #Usage: Headout #% # the retarded coordinate transform: # t' = t + tau # x' = x # tau' = tau ( tau = 2*z/v -- psudo-depth ) # #n1=nt,n2=nx trace length, number of traces #d1=dt,d2=dx sampling intervals #vc= constant velocity(v=vc); must specify either vc or vel #vel= headfile specifying velocity profile(s) of length nt # when v is v(t) or v(t,x) #trick=.14 1/6. trick in more accurate finite difference approximation # of second x derivative; trick<0 when dipfilter needed #taper=yes taper side traces to reduce boundary reflections #stepdown=1 increment of downward step # # author: Zhiming Li, 8/17/84 # # Modified: # stew --- transfered to convex and took out ap code # li 12/6/85 --- transpose data and velocity array # stew 4/18/86 -- vectorized rewrite based on SEP-38 article # stew 4/25/86 -- convert interval vels to tau step internally # stew 5/6/86 -- hand roll rhs and triply outer loops for speed # stew 5/26/86 -- somewhat faster recoding # marta 6/17/86---changed rite to npad+1 instead of npad # stew&marta 9/30/86---fixed alp(ntau,nx) alloc and declaration # ---changed min0(ittop,(it-1)/(stepdown-1)) # to min0(ittop,(it-1)/(stepdown-1)-1) # marta 10/1/86--- fixed bug that left beta undefined # stew 7/27/89 --- For CM2 Fortran 8x # stew 8/6/89 --- Pull tridiagonal code inline so I can use # CMF$LAYOUT directives. # stew 8/11/89 --- Riemann sheeted input/output section # to greatly reduce communication cost. # stew 9/19/89 --- added modpar() and reinitialization # stew 9/20/89 --- added frame buffer display of migration # # ---------- # Keyword: 15-degree time-domain migration # ---------- integer nt,nx,stepdown,npad integer nxpow2,nxlog2,ntaupow2 real eps,dt,dx,beta,vc,clip character *10 taper from either: integer n1:nt, n2:nx, stepdown=1 from either: real d1:dt, d2:dx from par: real beta=.14, vc=0.0, eps=.0001, clip=5.0 from par: character taper='no' from par: integer npad=1 npad=1 nx=nx+npad*2 ntau=(nt-1)/stepdown nxpow2=1 nxlog2=0 while(nxpow2< nx) { nxlog2=nxlog2+1 nxpow2=nxpow2*2 } ntaupow2=1 while(ntaupow2