YarkovskyEffect#

class YarkovskyEffect(state_vector: StateArray, base_frame: Frame, param_name: str = 'A2_yark', r0: ArrayWUnits | None = None)#

Bases: DynamicModel

Semi-empirical along-track Yarkovsky acceleration model.

The Yarkovsky effect is a thermal radiation force that acts along the instantaneous velocity direction of a small body. The acceleration is modelled as an inverse-square law scaled by a fitted parameter \(A_2\):

\[\mathbf{a}_\text{Yark} = A_2 \left(\frac{r_0}{r}\right)^2 \hat{t}\]

where \(A_2\) is the Yarkovsky parameter (km/s² at \(r_0\)), \(r_0\) is a reference distance (default: 1 AU), \(r\) is the heliocentric distance, and \(\hat{t} = \mathbf{v}/|\mathbf{v}|\) is the unit velocity vector.

\(A_2\) is estimated as a static parameter in the state vector (one per Yarkovsky-active body). The model is fully state-driven — no SPICE calls are made during acceleration computation.

Parameters:
  • state_vector (StateArray) – State vector used to identify bodies carrying a Yarkovsky parameter.

  • base_frame (Frame) – Reference frame in which accelerations are returned.

  • param_name (str, optional) – Name of the Yarkovsky A2 parameter as stored in the state. Defaults to "A2_yark".

  • r0 (ArrayWUnits, optional) – Reference distance for the inverse-square scaling. Defaults to 1 AU (1.495978707e8 km).

Notes

The state vector must contain ("position", spice_id), ("velocity", spice_id), and ("A2_yark", spice_id) entries for each Yarkovsky-active body. State keys follow the _make_direct_representation() convention.

See also

scarabaeus.CannonballSRP

Solar radiation pressure model using a similar scale-factor pattern.

scarabaeus.nPlateSRP

Multi-plate SRP model.

scarabaeus.ForceModelTranslation

Aggregator that instantiates this model.

Raises:

ValueError – If any param_name entry in state_vector belongs to an owner without a spice_id attribute.

References

Farnocchia, D., Chesley, S. R., Vokrouhlický, D., Milani, A., Spoto, F., & Bottke, W. F. (2013). Near Earth Asteroids with measurable Yarkovsky effect. Icarus, 224(1), 1–13. https://doi.org/10.1016/j.icarus.2013.02.004

Attributes:
param_name

Name of the A2 Yarkovsky parameter as stored in the state (e.g.

ref_frame

Reference frame in which Yarkovsky accelerations are returned.

yarkovsky_bodies

Set of SPICE integer IDs for bodies with a Yarkovsky parameter in the state.

Methods

compute_acceleration(position, ...)

Compute Yarkovsky acceleration for body.

compute_acceleration(position: ndarray, current_state: dict, epoch: float, body: CelestialBody) ndarray#

Compute Yarkovsky acceleration for body.

Parameters:
  • position (np.ndarray) – Position vector [km] of the body (w.r.t. central body) from the integrator.

  • current_state (dict) – Direct representation of the full state, keyed by (name, spice_id).

  • epoch (float) – Current epoch [TDB seconds]. (Not used in this compact model.)

  • body (CelestialBody) – Target body.

Returns:

3-element Yarkovsky acceleration vector [km/s^2]. Zero if the body is not configured for Yarkovsky.

Return type:

np.ndarray

property param_name: str#

Name of the A2 Yarkovsky parameter as stored in the state (e.g. "A2_yark").

property ref_frame: Frame#

Reference frame in which Yarkovsky accelerations are returned.

property yarkovsky_bodies: set[int]#

Set of SPICE integer IDs for bodies with a Yarkovsky parameter in the state.