YarkovskyEffect#
- class YarkovskyEffect(state_vector: StateArray, base_frame: Frame, param_name: str = 'A2_yark', r0: ArrayWUnits | None = None)#
Bases:
DynamicModelSemi-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.495978707e8km).
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.CannonballSRPSolar radiation pressure model using a similar scale-factor pattern.
scarabaeus.nPlateSRPMulti-plate SRP model.
scarabaeus.ForceModelTranslationAggregator that instantiates this model.
- Raises:
ValueError – If any
param_nameentry in state_vector belongs to an owner without aspice_idattribute.
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_nameName of the A2 Yarkovsky parameter as stored in the state (e.g.
ref_frameReference frame in which Yarkovsky accelerations are returned.
yarkovsky_bodiesSet 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