Source code for empyrean.orbits.nongrav
"""Non-gravitational acceleration parameters."""
import quivr as qv
[docs]
class NonGravParams(qv.Table):
"""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
"srp" -- Solar radiation pressure from AMRAT (a1 = AMRAT in m^2/kg)
For "marsden", the g(r) function is:
g(r) = alpha * (r/r0)^{-m} * (1 + (r/r0)^n)^{-k}
"""
a1 = qv.Float64Column() # radial (AU/day^2) or AMRAT (m^2/kg)
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
# SRP coefficient (used when model="srp")
cr = qv.Float64Column(nullable=True) # radiation pressure coefficient
# Time delay for g(r) evaluation (days)
dt = qv.Float64Column(nullable=True) # outgassing peak offset from perihelion