Skip to content

Gaia Operators

f28pml

The f28pml operator runs the forward operator on a 3D velocity model and returns a shot record. This operator adds an absorbing boundary condition in the form of a perfectly matched layer.

import gaia

shot_record = gaia.f28pml(model, shot, shotxyz, recxxyyz, deltas, pml)

Properties

  • Accuracy: 2 temporal, 8 spatial
  • Absorbing Boundary Conditions: PML

Inputs

  • model - 3D numpy array of type FP32 (velocity model).
    • Max size: 1024 x 1024 x 1024
    • Min size: 10 x 10 x 10
model = numpy.full((nx, ny, nz), c, dtype=numpy.float32)
  • shot - A 1D numpy array of type FP32 representing the time series of the shot being simulated. The time series should span the entire length of the simulation. See demo code for a function that creates this array using the ricker waveform.
shot = ricker(frequency, nt, dt)
  • shotxyz - 1D numpy array of 3 elements representing the location of the shot within the velocity model. Cannot lie outside the model. Type INT32

    Note: Ensure that the shot does not lie within the ghost cells

shotxyz = numpy.array([xs, ys, zs], dtype=numpy.int32)
  • recxxyyz - 1D numpy array of 5 elements. Type INT32. Assumes the receiver array is a surface on the xy plane.
    • 1st value: starting x position
    • 2nd value: ending x position
    • 3rd value: starting y position
    • 4th value: ending y position
    • 5th value: z position
recxxyyz = numpy.array([xt1, xt2, yt1, yt2, zt], dtype=numpy.int32)
  • deltas - 1D numpy array of type FP32 with 4 values.
    • 1st value: dx
    • 2nd value: dy
    • 3rd value: dz
    • 4th value: dt
deltas = numpy.array([dx, dy, dz, dt], dtype=numpy.float32)
  • pml - 1D numpy array of type INT32 with 2 values.
    • 1st value: Width of the PML layer in grid points. Ghost points excluded.
    • 2nd value: Magnitude of the PML layer at the edge. Uses a sine wave ramp from 0 to max magnitude across the width of the layer.
pml = numpy.array([pmlw, pmla], dtype=numpy.int32)

Output

  • shot_record - A 3D numpy array of type FP32.
    • dim 1: time
    • dim 2: x position
    • dim 3: y position
# Plots shot record time series of the x plane at y = 0
plot_results(shot_record[:, :, 0])