# Kirchhoff migration and diffraction. (greased lightning) # subroutine kirchfast( conj, add, velhalf, t0,dt,dx, modl,nt,nx, data) integer ix,iz,it,ih, conj, add, nt,nx, xstart, xend real amp,t,z,h, velhalf, t0,dt,dx, modl(nt,nx),data(nt,nx) call conjnull( conj, add, modl,nt*nx, data,nt*nx) do ih= -nx, nx { h = dx * ih # h = offset do iz= 2, nt { z = t0 + dt * (iz-1) # z = travel-time depth t = sqrt( z**2 + (h/velhalf)**2 ) it = 1.5 + (t - t0) / dt if( it > nt ) break amp = (z / t) * sqrt( nt*dt / t ) xstart = 1-ih; xstart = max0( 1, xstart) xend = nx-ih; xend = min0( nx, xend) if( conj == 0 ) do ix= xstart, xend data(it,ix+ih)=data(it,ix+ih)+modl(iz,ix )*amp else do ix= xstart, xend modl(iz,ix )=modl(iz,ix )+data(it,ix+ih)*amp } } return; end