Next: Parallelization Up: Sava and Clapp: WEI Previous: Introduction

# Operator overview

In migration by downward-continuation, the wavefield at depth is obtained by phase-shift from the wavefield at depth z Claerbout (1985)
 (1)
where the depth wavenumber kz depends linearly through a Taylor series expansion on its value in the reference medium (kzo) and the slowness difference in the depth interval from z to , :
 (2)
where, by definition, , and denotes spatial position at depth z. The expression for can take many different forms, summarized in Sava (2000).

From Equations (1) and (2), we can write that
 (3) (4)

Equation (3) represents a general form of the main mixed-domain downward-continuation operator. This operator can be broken up into a group of functional operators as follows:

• Wavefield continuation using mixed-domain phase-shift:  (5)
• Imaging condition which transforms the wavefield into an image at any given depth level:  (6)
and are the wavefields at depths and z respectively, is the depth step, so is the constant reference slowness in the slab from z to , is the variable slowness in the same depth slab, and represents the depth wavenumber expressed using the double-square root equation, and which is a function of the reference slowness (so).

For Equations (5) and (6), we can distinguish 5 functional operators. Each operator is initialized with a call to a function (XXin) and executed with a call to another function (XXop). In a typical example, the functional operators perform the following tasks:

1.
Wavefield continuation operator (WCin & WCop)

Continues the wavefield between two depth levels, using one or more reference slownesses.

Interface: integer function WCop(wfld,iws,izs,ith,FKop,FXop) result(st)

• complex, dimension(:,:,:,:,:), pointer :: wfld (wavefield slice)
• integer :: iws (index of the frequency slice)
• integer :: izs (index of the depth slice)
• integer :: ith (thread number)
• FKop :: f-k operator
• FXop :: f-x operator

Implemented examples:

• weimwc1 (mixed-domain wavefield continuation operator for 1 reference slowness)
• weimwcN mixed-domain wavefield continuation operator for N reference slownesses)

2.
Slowness operator (SLin & SLop)

Selects the number and values of the reference slownesses (so), and sets-up the interpolation map between the wavefields continued using the various reference slownesses.

Interface: integer function SLop() result(st)

Implemented examples:

• weislo1 (slowness selector for 1 reference slowness)
• weisloN (slowness selector for N reference slownesses)

3.
f-k operator (FKin & FKop)

Performs phase-shift using the full 3-D DSR equation Claerbout (1985), the common-azimuth equation Biondi and Palacharla (1996), or the offset plane-waves equation Mosher and Foster (2000).

Interface: integer function FXop(iws,izs,ifk,ith,wfld) result(st)

• integer :: iws (index of the frequency slice)
• integer :: izs (index of the depth slice)
• integer :: ifk (index of the reference velocity)
• integer :: ith (thread number)
• complex, dimension(:,:,:,:,:), pointer :: wfld (wavefield slice)

Implemented examples:

• weiwem (3-D prestack or 3-D offset plane-waves phase-shift)
• weicam (3-D common-azimuth phase-shift)

4.
f-x operator (FXin & FXop)

Performs phase shift that accounts for lateral slowness variation. Examples of (f-x) operators include but are not limited to split-step Fourier Stoffa et al. (1990), local Born Fourier or local Rytov Fourier Huang et al. (1999), Fourier Finite-Difference Ristow and Ruhl (1994), generalized screen propagators Le Rousseau and de Hoop (1998), etc.

Interface: integer function FXop(iws,izs,ifk,ith,wfld) result(st)

• integer :: iws (index of the frequency slice)
• integer :: izs (index of the depth slice)
• integer :: ifk (index of the reference velocity)
• integer :: ith (thread number)
• complex, dimension(:,:,:,:,:), pointer :: wfld (wavefield slice)

Implemented example:

• weissf (Split-step correction)

5.
Imaging operator (IGin & IGop)

Performs imaging in the offset-domain or the offset ray-parameter domain. This operator can also incorporate amplitude-preserving corrections.

Interface: integer function IGop(wfld,iws,ith) result(st)

• complex, dimension(:,:,:,:,:), pointer :: wfld (wavefield slice)
• integer :: iws (index of the frequency slice)
• integer :: ith (thread number)

Implemented examples:

• weihcig (Offset-domain common image-gathers)
• weipcig (Offset ray-parameter ph common image-gathers)

Next: Parallelization Up: Sava and Clapp: WEI Previous: Introduction
Stanford Exploration Project
6/8/2002