Template Class KeplerianDynamics

Inheritance Relationships

Base Type

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 motion n = sqrt(GM_ / a^3) * dt, holding all other elements fixed. Used as a lightweight ground-truth or reference propagator for ClassicalOE, QuasiNonsingularOE, or EquinoctialOE states (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 for QuasiNonsingularOE, mean longitude for EquinoctialOE) is advanced; stm (when requested) is the identity plus, for ClassicalOE, the analytic d(M)/d(a) sensitivity term. STM computation is not implemented for the QuasiNonsingularOE/EquinoctialOE specializations.

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 t0 to tf and, 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 t0 to tf and, 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 t0 to tf and, 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 t0 to tf without 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 as Propagate(x0, tfs(0), tfs(i), u) (parallelized with OpenMP), exploiting the fact that analytic propagators can jump to any tf in 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).