Source code for empyrean.orbits.nongrav

"""Non-gravitational acceleration parameters."""

import quivr as qv


[docs] class NonGravParams(qv.Table): """Marsden-Sekanina non-gravitational acceleration parameters. Model types: "marsden_water" -- Marsden-Sekanina with standard H2O sublimation g(r) "inverse_square" -- Marsden-Sekanina with g(r) = 1/r^2 (Yarkovsky) "marsden" -- Marsden-Sekanina with custom g(r) exponents For "marsden", the g(r) function is: g(r) = alpha * (r/r0)^{-m} * (1 + (r/r0)^n)^{-k} Solar radiation pressure is a separate, additive force slot — see :class:`~empyrean.orbits.srp.SRPParams` (``orbits.srp``). It is NOT a NonGravParams model; ``a1``/``a2``/``a3`` here are always radial / transverse / normal Marsden accelerations (AU/day^2). """ a1 = qv.Float64Column() # radial (AU/day^2) a2 = qv.Float64Column() # transverse (AU/day^2) a3 = qv.Float64Column() # normal (AU/day^2) model = qv.LargeStringColumn() # Marsden g(r) exponents (used when model="marsden") alpha = qv.Float64Column(nullable=True) # normalizing constant r0 = qv.Float64Column(nullable=True) # reference distance (AU) m = qv.Float64Column(nullable=True) # power-law exponent n = qv.Float64Column(nullable=True) # inner power-law exponent k = qv.Float64Column(nullable=True) # outer damping exponent # Time delay for g(r) evaluation (days) dt = qv.Float64Column(nullable=True) # outgassing peak offset from perihelion # Prior variance on DT (days^2); set to open + prior the DT column in a # StateAndNonGravAndDT refine. Null / <=0 = no prior (DT column stays closed). dt_variance = qv.Float64Column(nullable=True) # Fitted non-grav 3x3 covariance for (A1, A2, A3), row-major flattened # (9 values). Populated by orbit determination (StateAndNonGrav fits) so a # fitted orbit re-feeds into a StateAndNonGrav refine without losing its # non-grav prior. Null for SBDB / hand-built / gravity-only. covariance = qv.LargeListColumn(qv.Float64Column(), nullable=True)