Template Class KeplerianDynamics¶
Defined in File analytical_orbit_dynamics.h
Inheritance Relationships¶
Base Type¶
public lupnt::AnalyticalDynamics(Class AnalyticalDynamics)
Class Documentation¶
-
template<typename T = ClassicalOE>
class KeplerianDynamics : public lupnt::AnalyticalDynamics¶ Keplerian (unperturbed two-body) propagation of an orbital-element state.
Advances the mean/true anomaly-like element (depending on
T) by the mean motionn = sqrt(GM_ / a^3) * dt, holding all other elements fixed. Used as a lightweight ground-truth or reference propagator forClassicalOE,QuasiNonsingularOE, orEquinoctialOEstates (e.g. in tests and analytic orbit examples) where high-fidelity perturbations are not needed.Public Functions
-
inline KeplerianDynamics(Real GM)¶
Construct with the gravitational parameter of the central body.
- Parameters:
GM – Gravitational parameter [m^3/s^2 or consistent unit system].
-
virtual State Propagate(const State &state, Real t0, Real tf, const State *u, MatXd *stm) override¶
Propagate the orbital-element state by Keplerian mean motion over
dt = tf - t0.Only the anomaly-like element (mean anomaly for
ClassicalOE, mean argument of latitude forQuasiNonsingularOE, mean longitude forEquinoctialOE) is advanced;stm(when requested) is the identity plus, forClassicalOE, the analytic d(M)/d(a) sensitivity term. STM computation is not implemented for theQuasiNonsingularOE/EquinoctialOEspecializations.- Parameters:
state – Initial orbital-element state at time
t0.t0 – Initial epoch [s].
tf – Final epoch [s].
u – Unused (no control input for Keplerian motion).
stm – Output: state transition matrix d(xf)/d(x0); left unmodified if nullptr.
- Returns:
Propagated orbital-element state at time
tf.
-
inline virtual StateType GetStateType() const override¶
Return the orbital-element
StateType(T::TYPE) propagated by this instantiation.
-
virtual State Propagate(const State &coe, Real t0, Real tf, const State *u, MatXd *stm)
Propagate the state from
t0totfand, if requested, compute the analytic state transition matrix d(xf)/d(x0).Implemented by each concrete analytical propagator (KeplerianDynamics, ClohessyWiltshireDynamics, YamanakaAnkersenDynamics, RoeGeometricMappingDynamics) using its closed-form STM.
- Parameters:
x0 – Initial state at time
t0.t0 – Initial epoch [s].
tf – Final epoch [s].
u – Optional control/forcing input; unused by analytic propagators.
stm – Output: analytic state transition matrix d(xf)/d(x0); left unmodified if nullptr.
- Returns:
Propagated state at time
tf.
-
virtual State Propagate(const State &qnsoe, Real t0, Real tf, const State *u_in, MatXd *stm)
Propagate the state from
t0totfand, if requested, compute the analytic state transition matrix d(xf)/d(x0).Implemented by each concrete analytical propagator (KeplerianDynamics, ClohessyWiltshireDynamics, YamanakaAnkersenDynamics, RoeGeometricMappingDynamics) using its closed-form STM.
- Parameters:
x0 – Initial state at time
t0.t0 – Initial epoch [s].
tf – Final epoch [s].
u – Optional control/forcing input; unused by analytic propagators.
stm – Output: analytic state transition matrix d(xf)/d(x0); left unmodified if nullptr.
- Returns:
Propagated state at time
tf.
-
virtual State Propagate(const State &eqoe, Real t0, Real tf, const State *u, MatXd *stm)
Propagate the state from
t0totfand, if requested, compute the analytic state transition matrix d(xf)/d(x0).Implemented by each concrete analytical propagator (KeplerianDynamics, ClohessyWiltshireDynamics, YamanakaAnkersenDynamics, RoeGeometricMappingDynamics) using its closed-form STM.
- Parameters:
x0 – Initial state at time
t0.t0 – Initial epoch [s].
tf – Final epoch [s].
u – Optional control/forcing input; unused by analytic propagators.
stm – Output: analytic state transition matrix d(xf)/d(x0); left unmodified if nullptr.
- Returns:
Propagated state at time
tf.
-
virtual State Propagate(const State &x0, Real t0, Real tf, const State *u = nullptr) override¶
Propagate the state from
t0totfwithout computing a state transition matrix.Forwards to
Propagate(x0, t0, tf, u, nullptr).- Parameters:
x0 – Initial state at time
t0.t0 – Initial epoch [s].
tf – Final epoch [s].
u – Optional control/forcing input; unused by analytic propagators.
- Returns:
Propagated state at time
tf.
-
virtual MatX Propagate(const State &x0, const VecX &tfs, const State *u = nullptr) override¶
Propagate the state to a sequence of output epochs, all relative to the initial epoch
tfs(0).Unlike the generic
Dynamics::Propagate(x0, tfs, u), each output row is computed directly asPropagate(x0, tfs(0), tfs(i), u)(parallelized with OpenMP), exploiting the fact that analytic propagators can jump to anytfin one step without re-using the previous step’s result.- Parameters:
x0 – Initial state at
tfs(0).tfs – Vector of output epochs [s], including the initial epoch as
tfs(0).u – Optional control/forcing input; unused by analytic propagators.
- Returns:
Matrix whose i-th row is the propagated state at
tfs(i).
-
inline KeplerianDynamics(Real GM)¶