sfkirmod is a program for modeling seismic reflection data using the Kirchhoff method. According to this method, the reflection response is computed by integrating over the reflector surface. For a theoretical derivation, see, for example,

Haddon, R. A. W., and P. W. Buchen, 1981, Use of Kirchhoff's formula for body wave calculations in the earth: Geophys. J. Roy. Astr. Soc., 67, 587-598.

At the moment, sfkirmod can handle only asymptotic Green's functions, analytically computed in three kinds of velocity models:

- Constant velocity
- Constant gradient of velocity
- Constant gradient of velocity squared

The type is specified with

**type=** parameter, and the velocity model is specified with

**vel=**,

**refx=**,

**refz=**,

**gradx=**, and

**gradz=**.

The following example from

rsf/scons/rsf shows shot gathers modeled by

**sfkirmod** in a medium with horizontal reflectors and a constant vertical gradient of velocity

It is also possible to model a converted (PS or SP) wave by supplying

**vel2=**,

**gradx2=**, and

**gradz2=** to specify the converted velocity.

The standard input file for

**sfkirmod** contains the shape of one or more reflectors. Several other input files can be optionally provided:

**dip=** specifies the slope of the reflector(s),

**refl=** specifies normal-incidence reflectivity (AVA intercept),

**rgrad=** specifies AVA gradient.

The sampling of the time axis in the output is controlled by

**nt=**,

**t0=**, and

**dt=** parameters. A Ricker wavelet is used with the peak frequency specified by

**freq=**. Factors such as the geometrical spreading and the obliquity factor are taken into account. The geometrical spreading correction is different for 2-D (cylindrical waves) or 2.5-D (spherical waves). The default behavior is 2.5_D. To switch to 2-D, use

**twod=y**.

By default,

**sfkirmod** outputs shot gathers. It is also possible to compute CMP gathers directly by using

**cmp=y**. The following example from

jsg/crs/dome2 shows CMP gathers computed over a hyperbolic-shape reflector.

Since Kirchhoff modeling is fundamentally a linear operations, it is easy to run

**sfkirmod** in a data-parallel fashion, for example by using

pscons with

**split=[1,n1]** and

**reduce='add'**.

The 3-D version of

**sfkirmod** is

sfkirmod3.

### 10 previous programs of the month:

sfbandpass implements bandpass filtering using the Butterworth algorithm. The desired bandwidth is specified by low and high frequencies (in Hertz) flo= and fhi=. A continuous low-pass Butterworth filter is given by The actual filtering is imp

Weblog:Madagascar development blogTracked:Nov 18, 13:45sfhalfint implements half-order integration or differentiation, a filtering operation common in 2-D imaging operators such as as slant stacking or Kirchhoff migration. By default, sfhalfint performs half-order integration. To apply half-order different

Weblog:Madagascar development blogTracked:Jan 06, 16:58sfricker1 implements 1-D convolution with the Ricker wavelet. The following example from rsf/rsf/wedge shows convolution modeling with a wedge model using sfricker1. The convolution is implemented in the frequency domain, where the Ricker wavele

Weblog:Madagascar development blogTracked:Jan 18, 12:48sfricker1 implements 1-D convolution with the Ricker wavelet. The following example from rsf/rsf/wedge shows convolution modeling with a wedge model using sfricker1. The convolution is implemented in the frequency domain, where the Ricker wavele

Weblog:Madagascar development blogTracked:Jan 19, 12:00sfpwd implements plane-wave destruction, a filter that attenuates locally plane-wave events, as described in the paper Applications of plane-wave destruction filters. The following example from jsg/diffr/gom shows a seismic section before and after an

Weblog:Madagascar development blogTracked:Feb 09, 16:19sfpow multiplies the input data by a gain function of the form Gx1x2…,xn=x1p1x2p2⋯xnpn The powers p1,p2,…,pn are given by pow1=, pow2=, etc. parameters. For backward compatibility, sftpow tpow= is an alias for sfpow pow1=. The following examp

Weblog:Madagascar development blogTracked:Mar 11, 09:02sfnmo implements normal moveout (NMO) correction, one of the most fundamental operations in seismic reflection data processing. The following example from jsg/avo/avo shows synthetic data before and after NMO correction. NMO transforms presta

Weblog:Madagascar development blogTracked:Apr 08, 06:02sfvscan implements seismic velocity analysis by scanning stacking velocities. This transformation is also known as the velocity transform or the hyperbolic Radon transform. The following example from bei/vela/vscan shows an example for transforming a C

Weblog:Madagascar development blogTracked:May 11, 12:25sfwiggle plots data using the traditional seismic method of wiggly traces. The following example from rsf/rsf/rsftour shows a typical output: Similarly to other plotting programs, there are multiple parameters that control the output. For examp

Weblog:Madagascar development blogTracked:Jun 12, 10:51sfwiggle plots data using the traditional seismic method of wiggly traces. The following example from rsf/rsf/rsftour shows a typical output: Similarly to other plotting programs, there are multiple parameters that control the output. For examp

Weblog:Madagascar development blogTracked:Jun 12, 10:59sftime2depth converts the input from vertical time to depth coordinates. The following example from rsf/su/rsflab9 shows a seismic image converted from time to depth by this transformation: The example is borrowed from John Stockwell's lecture not

Weblog:Madagascar development blogTracked:Jul 01, 22:28sftime2depth converts the input from vertical time to depth coordinates. The following example from rsf/su/rsflab9 shows a seismic image converted from time to depth by this transformation: The example is borrowed from John Stockwell's lecture not

Weblog:Madagascar development blogTracked:Jul 01, 22:29sfai2refl converts acoustic impedance to normal-incidence PP reflectivity using the simple equation R(t)=I(t+Δt)-I(t)I(t+Δt)+I(t) The program is useful for convolution modeling. The following example from rsf/rsf/wedge shows a classic e

Weblog:Madagascar development blogTracked:Aug 02, 15:22