Skip to content

Gaia Operators

batchf28pml

Runs the f28pml operator in batch mode. Returns multiple shot records and saves them in the specified folder in numpy format.

import gaia

gaia.batchf28pml(model, shotbox, sweep, shot, shotxyz, recxxyyz, deltas, pml, destination)

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)
  • shotbox - A 1D numpy array, three values. Type INT32.
    • 1st value: x length
    • 2nd value: y length
    • 3rd value: z length
shotbox = np.array([shotbox_nx, shotbox_ny, shotbox_nz], dtype=np.int32)
  • sweep - 1D numpy array of 6 elements representing the span of the shotbox sweep in INT32. Assumes the sweep is a surface on the xy plane.
    • 1st value: starting x position
    • 2nd value: ending x position
    • 3rd value: step value for x
    • 4rd value: starting y position
    • 5th value: ending y position
    • 6th value: step value for y
sweep = np.array([x_start, x_end, x_step, y_start, y_end, y_step], dtype=np.int32)
  • 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)

  • destination - folder to save the returning shot records.
destination = "results/"

Output

The operator returns a series of numpy files corresponding to each shot record executed during the sweep. File name corresponds to the location of the shot.