Skip to content

Geodynamics Displacements

Plate Tectonics

Geodynamics Earth Crustal Displacement: Plate Tectonics submodule.

Accounting for Plate Tectonics movement using drift velocities or ITRF2014 model.

Classes

WrongTectonicPlateReferenceError

Bases: ValueError

Wrong Tectonic Plate reference value, not listed in ITRF2014-PMM

ITRF2014PlatesRotationPoles

Bases: Enum

Absolute plate rotation poles (or angular velocities) in [milliarcsec/yr], ITRF2014-PMM

Attributes

ANTA class-attribute instance-attribute
Python
ANTA = [-0.248, -0.324, 0.675]
ARAB class-attribute instance-attribute
Python
ARAB = [1.154, -0.136, 1.444]
AUST class-attribute instance-attribute
Python
AUST = [1.51, 1.182, 1.215]
EURA class-attribute instance-attribute
Python
EURA = [-0.085, -0.531, 0.77]
INDI class-attribute instance-attribute
Python
INDI = [1.154, -0.005, 1.454]
NAZC class-attribute instance-attribute
Python
NAZC = [-0.333, -1.544, 1.623]
NOAM class-attribute instance-attribute
Python
NOAM = [0.024, -0.694, -0.063]
NUBI class-attribute instance-attribute
Python
NUBI = [0.099, -0.614, 0.733]
PCFC class-attribute instance-attribute
Python
PCFC = [-0.409, 1.047, -2.169]
SOAM class-attribute instance-attribute
Python
SOAM = [-0.27, -0.301, -0.14]
SOMA class-attribute instance-attribute
Python
SOMA = [-0.121, -0.794, 0.884]

Functions:

compute_displacement

Python
compute_displacement(xyz_coords: ndarray, time_delta: float, plate_ref: str | ITRF2014PlatesRotationPoles | None = None, drift_vel: ndarray = None) -> np.ndarray

Compute point target coordinates displacement due to tectonic plate motion using ITRF2014 plate motion model.

Source (Plate tectonics) Zuheir Altamimi et al., "ITRF2014 plate motion model", Geophysical Journal International, 2017 'https://academic.oup.com/gji/article/209/3/1906/3095992'

Parameters:

Name Type Description Default
xyz_coords ndarray

xyz coordinates, in the form (3,) or (N, 3)

required
time_delta float

time difference between product/scene acquisition time and point target coordinates reference time in seconds

required
plate_ref str | ITRF2014PlatesRotationPoles | None

plate reference name id, by default None

None
drift_vel ndarray

drift velocities along x, y and z, same shape as xyz_coords, by default None

None

Returns:

Type Description
ndarray

[x, y, z] displacement in meters due to plate tectonics for each input point

Raises:

Type Description
WrongTectonicPlateReference

if plate reference name id is not listed in the ITRF2014-PMM

Earth Solid Tides

Geodynamics Earth Crustal Displacement: Solid Tides submodule.

Accounting for solid tides displacement using the IERS Conventions model.

Attributes

SECONDS_IN_MINUTES module-attribute

Python
SECONDS_IN_MINUTES = 60

SECONDS_IN_HOUR module-attribute

Python
SECONDS_IN_HOUR = 3600

MINUTES_IN_DAY module-attribute

Python
MINUTES_IN_DAY = 24 * 60

Classes

Functions:

compute_solid_earth_tides

Python
compute_solid_earth_tides(year: int, month: int, day_of_month: int, lat_deg: float, lon_deg: float) -> tuple[np.ndarray, np.ndarray]

Solid Earth Tides wrapper of original Fortran code. This function uses the numpy.f2py conversion of fortran code library to extract solid earth tides displacements.

Earth tides are estimated using an external tool (executable) called Solid, based on a fortran script.

Solid Earth Tide (SET) displacement estimator class based on Solid fortran executable by Dennis Milbert.

Program Solid is based on an edited version of the dehanttideinelMJD.f source code provided by Professor V. Dehant. This code is an implementation of the Solid Earth Tide computation found in section 7.1.2 of the IERS Conventions (2003) , IERS Technical Note No. 32

Program inputs: date (year, month of the year, day of the month), latitude (deg), longitude (deg). Program output: .txt file with solid earth tide (body tide) components [north, east, up] for each minute of the input date.

Solid is driven by a pair of routines that compute low-precision geocentric coordinates for the Moon and the Sun. These routines were coded from the equations in "Satellite Orbits: Models, Methods, Applications" by Montenbruck & Gill (2000), section 3.3.2, pp.70-73

Solid does not contain ocean loading, atmospheric loading, or deformation due to polar motion.

Ref: Dennis Milbert, Ph.D., Chief Geodesist, National Geodetic Survey, NOAA, (retired) http://geodesyworld.github.io/SOFTS/solid.htm

Parameters:

Name Type Description Default
year int

year of the date at which the displacement must be estimated, between 1901 and 2099

required
month int

month of the date at which the displacement must be estimated, between 1 and 12

required
day_of_month int

day of the month of the date at which the displacement must be estimated, between 1 and 31

required
lat_deg float

latitude where the displacement should be evaluated, in deg

required
lon_deg float

longitude where the displacement should be evaluated, in deg

required

Returns:

Type Description
ndarray

time axis corresponding to a whole day with 60 seconds steps

ndarray

displacement array, of shape (N, 3), with columns being north, east and up components

Raises:

Type Description
ValueError

if the input date is not valid

compute_displacement

Python
compute_displacement(target_xyz_coords: ndarray, acquisition_time: PreciseDateTime) -> np.ndarray

Estimate the input coordinates displacement due to earth tides based on acquisition time using the Fortran code wrapper.

Parameters:

Name Type Description Default
target_xyz_coords PreciseDateTime

the input coordinates on scene, xyz format, shape Nx3

required
acquisition_time PreciseDateTime

sensor acquisition time of the input coordinates on scene

required

Returns:

Type Description
ndarray

updated coordinates, same input coordinate but with displacement added