Dynamics Models¶
Purpose¶
This specification defines the mathematical contract for LuPNT orbit dynamics,
with emphasis on the numerical Cartesian dynamics used by
NBodyDynamics. The goal is to make the state, epoch, unit, frame, and
force-model conventions explicit enough that propagation and filtering tests
can compare against the same equations.
State, Epoch, Frame, and Unit Contract¶
The propagated Cartesian orbit state is
All components of \(r\), \(v\), and \(\dot{x}\) are expressed in
the configured integration frame frame_ and configured coherent
UnitSystem:
For NBodyDynamics, the integration variable \(t\) is a simulation time
offset. The ephemeris epoch used internally is
where \(t_\mathrm{LuPNT,0}\) is GetLupntEpoch(). Ephemeris and frame
queries are therefore evaluated at TDB seconds from the LuPNT epoch origin.
The model computes
Unit Conversion¶
Historical LuPNT constants are SI-valued. When a model uses a non-SI
UnitSystem, dimensional values are converted through
where \(p\), \(q\), and \(s\) are the length, time, and mass powers of the quantity.
For example,
Planetary ephemerides are evaluated in the internal TDB-compatible coordinate scale and then converted to the requested unit system at the dynamics boundary.
Point-Mass Gravity¶
For a perturbing body with gravitational parameter \(\mu_i\) and position \(s_i\) in the integration frame, LuPNT uses the relative point-mass acceleration
The second term removes the acceleration of the integration-frame origin when the frame origin is not the perturbing body. If \(s_i = 0\), only the central two-body term remains:
Gravity-Field Acceleration¶
For a body with a configured spherical-harmonic gravity field, the spacecraft position is first rotated into the body-fixed frame:
The gravity field acceleration is computed in that fixed frame from unnormalized coefficients \(C_{nm}\) and \(S_{nm}\) up to configured degree and order:
The result is rotated back to the integration frame:
This path uses only the rotation component of the frame transform for accelerations.
J2 Cartesian Dynamics¶
The Cartesian J2 model augments two-body gravity with a zonal term evaluated about the body’s fixed spin axis, not about the integration-frame z-axis.
Let \(F\) be the integration frame and \(B\) be the body-fixed frame
configured on JToCartTwoBodyDynamics. These frames must share the same
origin. The spacecraft position is first rotated into the body-fixed frame:
The J2 acceleration is computed in the body-fixed frame:
where \([x,y,z]^T = r_B\) and \(r = \lVert r_B \rVert = \lVert r_F \rVert\).
The acceleration is then rotated back to the integration frame:
Setting the body-fixed frame equal to the integration frame recovers the older inertial-axis J2 convention and is useful for reference comparisons that were generated with that approximation.
Solar Radiation Pressure¶
Solar radiation pressure is enabled by SetUseSrp or by setting the SRP
ballistic coefficient
For a Sun vector \(r_\odot\) in the integration frame, the SRP acceleration is
The illumination factor \(\nu\) is the apparent-disk overlap shadow function:
with \(\nu = 0\) in umbra, \(\nu = 1\) in full sunlight, and partial values in penumbra.
Let
The spacecraft is fully illuminated when
It is in umbra when the occulting disk covers the solar disk:
Otherwise, \(\nu\) is one minus the overlap area of the two apparent disks divided by the solar disk area.
Atmospheric Drag¶
Earth atmospheric drag uses a Harris-Priester density model. The ballistic coefficient is
In the true-of-date frame,
and the drag acceleration is
The implementation converts the propagated state to SI for the drag model and then converts the resulting acceleration back to the configured unit system.
Relativistic Orbit Correction¶
When relativity is enabled, NBodyDynamics applies this correction for the
Sun and for the closest non-Sun, non-SSB configured body, interpreted as the
local central planet. For the central body, let
The first-order Schwarzschild post-Newtonian acceleration correction is
This is the gravito-electric correction. Frame-dragging and third-body post-Newtonian terms are not included in the current dynamics model.
The Sun term uses the same expression with
Total N-Body Acceleration¶
The total acceleration assembled by NBodyDynamics is
with optional terms omitted when their corresponding switches are disabled or when no applicable body is configured.
State Transition Matrix Convention¶
When STM propagation is requested, the integrator propagates the variational system for the same state ordering:
For a Cartesian state,
The finite-dimensional contract is that rows and columns follow the order
Current Model Boundaries¶
The following are intentional boundaries of the current implementation:
NBodyDynamicsexpects its configured bodies to use the sameUnitSystemas the dynamics model.SetUnitsmust be called before adding bodies.Relativity is evaluated from the closest configured planet-like body, not from every gravitating body.
SRP uses a cannonball coefficient and spherical occulting bodies.
Drag is currently Earth-specific.
Force-model accelerations are expressed in the integration frame and configured unit system before being returned by
ComputeRates.