Agent skill
astropropagators-jl
Develop and maintain AstroPropagators.jl, a Julia library for high-fidelity orbit propagation with multiple formulations. Use when working on AstroPropagators.jl, implementing new propagators, or integrating orbit propagation with AstroForceModels.jl.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/astropropagators-jl
SKILL.md
AstroPropagators.jl
Julia library for high-fidelity astrodynamics orbit propagation. Repo: HAMMERHEAD-Space/AstroPropagators.jl
Architecture
Type Hierarchy
AbstractPropType (singleton base)
├── CowellPropagator # Cartesian state
├── GaussVEPropagator # Gauss Variational Equations
├── EDromoPropagator # Regularized EDromo elements
├── KustaanheimoStiefelPropagator # KS transform
├── MilankovichPropagator # Milankovich elements
├── StiefelScheifelePropagator # Stiefel-Scheifele
├── USM7Propagator # Unified State Model (7-element)
├── USM6Propagator # Unified State Model (6-element)
└── USMEMPropagator # Unified State Model (exponential map)
Source Layout
src/
AstroPropagators.jl # Module entry point
api.jl # propagate() public API
auxiliary/util.jl # skew_sym, quaternions2DCM, RTN_frame
propagators/ # One file per propagator (EOM + EOM!)
events/impulsive_maneuvers.jl # Impulsive burn callbacks
Key Patterns
Dual-Form EOM Pattern
Every propagator must implement both forms:
# Out-of-place (returns SVector, zero-allocation)
function Cowell_EOM(u, p, t, model_list)
# ... compute accelerations ...
return SVector{6}(du1, du2, du3, du4, du5, du6)
end
# In-place (calls out-of-place, assigns with .=)
function Cowell_EOM!(du, u, p, t, model_list)
du .= Cowell_EOM(u, p, t, model_list)
return nothing
end
Primary API - propagate()
sol = propagate(
u0, p, models, tspan;
prop_type=CowellPropagator(),
config=nothing, # RegularizedCoordinateConfig for EDromo/KS/SS
ODE_solver=VCABM(),
abstol=1E-13, reltol=1E-13,
)
Lower-Level Usage
EOM!(du, u, p, t) = Cowell_EOM!(du, u, p, t, model_list)
prob = ODEProblem(EOM!, u0, tspan, p)
sol = solve(prob, VCABM(); abstol=1e-13, reltol=1e-13)
Force Model Setup (from AstroForceModels)
grav = GravityHarmonicsAstroModel(; gravity_model=..., eop_data=..., order=36, degree=36)
sun = ThirdBodyModel(; body=SunBody(), eop_data=eop_data)
moon = ThirdBodyModel(; body=MoonBody(), eop_data=eop_data)
model_list = CentralBodyDynamicsModel(grav, (sun, moon, srp, drag))
Regularized Coordinate Config
EDromo, KS, and Stiefel-Scheifele propagators require a RegularizedCoordinateConfig specifying the time element type: PhysicalTime, ConstantTime, or LinearTime.
Event Callbacks (Regularized)
end_EDromo_integration(stop_time, config) # ContinuousCallback for termination
EDromo_burn(burn_time, ΔV, config) # ContinuousCallback for impulsive burn
Adding a New Propagator
- Create
src/propagators/NewName.jlwithNewName_EOMandNewName_EOM! - Add
NewNamePropagator <: AbstractPropTypesingleton struct - Add dispatch in
api.jlforpropagate()with the new type - Add coordinate conversions in AstroCoords.jl if needed
- Add tests:
test/propagators/test_newname.jl(Keplerian + high-fidelity) - Add AD tests:
test/differentiability/test_newname.jl(all 5 backends) - Add allocation test in
test/test_performance.jl
Dependencies
AstroCoords0.3,AstroForceModels0.3,ComponentArrays0.15OrdinaryDiffEqAdamsBashforthMoulton1.1,OrdinaryDiffEqCore1.6SciMLBase2.58,StaticArraysCore1- SatelliteToolbox ecosystem (atmospheric, gravity, transformations, space indices)
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?