Skip to content

Gaia Operators

ertm18abc

The ertm18abc operator takes in elastic background models and returns p-velocity and a s-velocity gradients.

import gaia

dvp, dvs = gaia.ertm18abc(vpb, vsb, rho, shot, vx, vy, vz, shotxyz, recxxyyz, deltas, abc)

Properties

  • Uses the first order velocity field formulation
  • Accuracy: 1 temporal, 8 spatial
  • Absorbing Boundary Conditions: Absorbing sponge

Inputs

  • vpb - 3D numpy array (p-velocity model).
    • Max size: 1024 x 1024 x 1024
    • Min size: 10 x 10 x 10
vp = numpy.full((nx, ny, nz), c1, dtype=numpy.float32)
  • vsb - 3D numpy array (s-velocity model).
    • Max size: 1024 x 1024 x 1024
    • Min size: 10 x 10 x 10
vp = numpy.full((nx, ny, nz), c2, dtype=numpy.float32)
  • rho - 3D numpy array (density model).
    • Max size: 1024 x 1024 x 1024
    • Min size: 10 x 10 x 10
rho = numpy.full((nx, ny, nz), density, 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)
  • vx - x-velocity values observed at the receiver locations. 3D numpy array of type FP32.

    • dim 1: time
    • dim 2: x position
    • dim 3: y posiiton
  • vy - y-velocity values observed at the receiver locations. 3D numpy array of type FP32.

    • dim 1: time
    • dim 2: x position
    • dim 3: y posiiton
  • vz - z-velocity values observed at the receiver locations. 3D numpy array of type FP32.

    • dim 1: time
    • dim 2: x position
    • dim 3: y posiiton
  • 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)
  • abc - 1D numpy array of type INT32 with 2 values.
    • 1st value: Width of the sponge in grid points. Excludes ghost points.
    • 2nd value: Magnitude of the sponge layer.
abc = np.array([abc_width, abc_amplitude], dtype=np.int32)

Output

  • dvp - p-velocity gradient. 3D numpy array of type FP32. Same size as velocity models.
  • dvs - s-velocity gradient. 3D numpy array of type FP32. Same size as velocity models.