Skip to content

Third-Body Perturbations

Third-body gravitational perturbation accelerations from the Sun, Moon, and planets.

Note

For conceptual explanations and examples, see Third-Body Perturbations in the Learn section.

Analytical Models

accel_third_body_sun builtin

accel_third_body_sun(epc: Epoch, r_object: ndarray) -> ndarray

Calculate the acceleration due to the Sun on an object using low-precision analytical ephemerides.

Accepts either a 3D position vector or a 6D state vector for r_object.

Parameters:

Name Type Description Default
epc Epoch

Epoch at which to calculate the Sun's position

required
r_object ndarray

Position (length 3) or state (length 6) of the object in the GCRF frame. Units: (m)

required

Returns:

Type Description
ndarray

np.ndarray: Acceleration due to the Sun. Units: (m/s²)

Example
import brahe as bh
import numpy as np

epc = bh.Epoch.from_date(2024, 2, 25, bh.TimeSystem.UTC)

# Using position vector
r_object = np.array([bh.R_EARTH + 500e3, 0.0, 0.0])
a = bh.accel_third_body_sun(epc, r_object)

# Or using state vector directly
x_object = np.array([bh.R_EARTH + 500e3, 0.0, 0.0, 0.0, 7500.0, 0.0])
a = bh.accel_third_body_sun(epc, x_object)

accel_third_body_sun_de builtin

accel_third_body_sun_de(epc: Epoch, r_object: ndarray, source: EphemerisSource) -> ndarray

Calculate the acceleration due to the Sun on an object using DE high-precision ephemerides.

Accepts either a 3D position vector or a 6D state vector for r_object.

Parameters:

Name Type Description Default
epc Epoch

Epoch at which to calculate the Sun's position

required
r_object ndarray

Position (length 3) or state (length 6) of the object in the GCRF frame. Units: (m)

required
source EphemerisSource

Ephemeris source to use (DE440s or DE440)

required

Returns:

Type Description
ndarray

np.ndarray: Acceleration due to the Sun. Units: (m/s²)

Example
1
2
3
4
5
6
7
import brahe as bh
import numpy as np

bh.initialize_ephemeris()
epc = bh.Epoch.from_date(2024, 2, 25, bh.TimeSystem.UTC)
r_object = np.array([bh.R_EARTH + 500e3, 0.0, 0.0])
a = bh.accel_third_body_sun_de(epc, r_object, bh.EphemerisSource.DE440s)

Moon Perturbations

accel_third_body_moon builtin

accel_third_body_moon(epc: Epoch, r_object: ndarray) -> ndarray

Calculate the acceleration due to the Moon on an object using low-precision analytical ephemerides.

Accepts either a 3D position vector or a 6D state vector for r_object.

Parameters:

Name Type Description Default
epc Epoch

Epoch at which to calculate the Moon's position

required
r_object ndarray

Position (length 3) or state (length 6) of the object in the GCRF frame. Units: (m)

required

Returns:

Type Description
ndarray

np.ndarray: Acceleration due to the Moon. Units: (m/s²)

Example
1
2
3
4
5
6
import brahe as bh
import numpy as np

epc = bh.Epoch.from_date(2024, 2, 25, bh.TimeSystem.UTC)
r_object = np.array([bh.R_EARTH + 500e3, 0.0, 0.0])
a = bh.accel_third_body_moon(epc, r_object)

accel_third_body_moon_de builtin

accel_third_body_moon_de(epc: Epoch, r_object: ndarray, source: EphemerisSource) -> ndarray

Calculate the acceleration due to the Moon on an object using DE high-precision ephemerides.

Accepts either a 3D position vector or a 6D state vector for r_object.

Parameters:

Name Type Description Default
epc Epoch

Epoch at which to calculate the Moon's position

required
r_object ndarray

Position (length 3) or state (length 6) of the object in the GCRF frame. Units: (m)

required
source EphemerisSource

Ephemeris source to use (DE440s or DE440)

required

Returns:

Type Description
ndarray

np.ndarray: Acceleration due to the Moon. Units: (m/s²)

Example
1
2
3
4
5
6
7
import brahe as bh
import numpy as np

bh.initialize_ephemeris()
epc = bh.Epoch.from_date(2024, 2, 25, bh.TimeSystem.UTC)
r_object = np.array([bh.R_EARTH + 500e3, 0.0, 0.0])
a = bh.accel_third_body_moon_de(epc, r_object, bh.EphemerisSource.DE440s)

accel_third_body_sun_de builtin

accel_third_body_sun_de(epc: Epoch, r_object: ndarray, source: EphemerisSource) -> ndarray

Calculate the acceleration due to the Sun on an object using DE high-precision ephemerides.

Accepts either a 3D position vector or a 6D state vector for r_object.

Parameters:

Name Type Description Default
epc Epoch

Epoch at which to calculate the Sun's position

required
r_object ndarray

Position (length 3) or state (length 6) of the object in the GCRF frame. Units: (m)

required
source EphemerisSource

Ephemeris source to use (DE440s or DE440)

required

Returns:

Type Description
ndarray

np.ndarray: Acceleration due to the Sun. Units: (m/s²)

Example
1
2
3
4
5
6
7
import brahe as bh
import numpy as np

bh.initialize_ephemeris()
epc = bh.Epoch.from_date(2024, 2, 25, bh.TimeSystem.UTC)
r_object = np.array([bh.R_EARTH + 500e3, 0.0, 0.0])
a = bh.accel_third_body_sun_de(epc, r_object, bh.EphemerisSource.DE440s)

accel_third_body_mercury_de builtin

accel_third_body_mercury_de(epc: Epoch, r_object: ndarray, source: EphemerisSource) -> ndarray

Calculate the acceleration due to Mercury on an object using DE ephemerides.

Accepts either a 3D position vector or a 6D state vector for r_object.

Parameters:

Name Type Description Default
epc Epoch

Epoch at which to calculate Mercury's position

required
r_object ndarray

Position (length 3) or state (length 6) of the object in the GCRF frame. Units: (m)

required
source EphemerisSource

Which ephemeris kernel to use (DE440s or DE440)

required

Returns:

Type Description
ndarray

np.ndarray: Acceleration due to Mercury. Units: (m/s²)

accel_third_body_venus_de builtin

accel_third_body_venus_de(epc: Epoch, r_object: ndarray, source: EphemerisSource) -> ndarray

Calculate the acceleration due to Venus on an object using DE ephemerides.

Accepts either a 3D position vector or a 6D state vector for r_object.

Parameters:

Name Type Description Default
epc Epoch

Epoch at which to calculate Venus's position

required
r_object ndarray

Position (length 3) or state (length 6) of the object in the GCRF frame. Units: (m)

required
source EphemerisSource

Which ephemeris kernel to use (DE440s or DE440)

required

Returns:

Type Description
ndarray

np.ndarray: Acceleration due to Venus. Units: (m/s²)

accel_third_body_mars_de builtin

accel_third_body_mars_de(epc: Epoch, r_object: ndarray, source: EphemerisSource) -> ndarray

Calculate the acceleration due to Mars on an object using DE ephemerides.

Accepts either a 3D position vector or a 6D state vector for r_object.

Parameters:

Name Type Description Default
epc Epoch

Epoch at which to calculate Mars's position

required
r_object ndarray

Position (length 3) or state (length 6) of the object in the GCRF frame. Units: (m)

required
source EphemerisSource

Which ephemeris kernel to use (DE440s or DE440)

required

Returns:

Type Description
ndarray

np.ndarray: Acceleration due to Mars. Units: (m/s²)

accel_third_body_jupiter_de builtin

accel_third_body_jupiter_de(epc: Epoch, r_object: ndarray, source: EphemerisSource) -> ndarray

Calculate the acceleration due to Jupiter on an object using DE ephemerides.

Accepts either a 3D position vector or a 6D state vector for r_object.

Parameters:

Name Type Description Default
epc Epoch

Epoch at which to calculate Jupiter's position

required
r_object ndarray

Position (length 3) or state (length 6) of the object in the GCRF frame. Units: (m)

required
source EphemerisSource

Which ephemeris kernel to use (DE440s or DE440)

required

Returns:

Type Description
ndarray

np.ndarray: Acceleration due to Jupiter. Units: (m/s²)

accel_third_body_saturn_de builtin

accel_third_body_saturn_de(epc: Epoch, r_object: ndarray, source: EphemerisSource) -> ndarray

Calculate the acceleration due to Saturn on an object using DE ephemerides.

Accepts either a 3D position vector or a 6D state vector for r_object.

Parameters:

Name Type Description Default
epc Epoch

Epoch at which to calculate Saturn's position

required
r_object ndarray

Position (length 3) or state (length 6) of the object in the GCRF frame. Units: (m)

required
source EphemerisSource

Which ephemeris kernel to use (DE440s or DE440)

required

Returns:

Type Description
ndarray

np.ndarray: Acceleration due to Saturn. Units: (m/s²)

accel_third_body_uranus_de builtin

accel_third_body_uranus_de(epc: Epoch, r_object: ndarray, source: EphemerisSource) -> ndarray

Calculate the acceleration due to Uranus on an object using DE ephemerides.

Accepts either a 3D position vector or a 6D state vector for r_object.

Parameters:

Name Type Description Default
epc Epoch

Epoch at which to calculate Uranus's position

required
r_object ndarray

Position (length 3) or state (length 6) of the object in the GCRF frame. Units: (m)

required
source EphemerisSource

Which ephemeris kernel to use (DE440s or DE440)

required

Returns:

Type Description
ndarray

np.ndarray: Acceleration due to Uranus. Units: (m/s²)

accel_third_body_neptune_de builtin

accel_third_body_neptune_de(epc: Epoch, r_object: ndarray, source: EphemerisSource) -> ndarray

Calculate the acceleration due to Neptune on an object using DE ephemerides.

Accepts either a 3D position vector or a 6D state vector for r_object.

Parameters:

Name Type Description Default
epc Epoch

Epoch at which to calculate Neptune's position

required
r_object ndarray

Position (length 3) or state (length 6) of the object in the GCRF frame. Units: (m)

required
source EphemerisSource

Which ephemeris kernel to use (DE440s or DE440)

required

Returns:

Type Description
ndarray

np.ndarray: Acceleration due to Neptune. Units: (m/s²)

See Also