Class AnalyticalDynamics

Inheritance Relationships

Base Type

Derived Types

Class Documentation

class AnalyticalDynamics : public lupnt::Dynamics

Base class for closed-form (non-integrated) orbit propagation models.

AnalyticalDynamics subclasses advance an orbital-element or relative-motion state from t0 to tf using an analytic state-transition matrix evaluated at dt = tf - t0, rather than numerically integrating an ODE (contrast with NumericalDynamics). Used wherever a fast/closed-form propagator is sufficient, e.g. Keplerian two-body propagation, Clohessy-Wiltshire relative motion, or formation-flying geometric mappings.

Subclassed by lupnt::ClohessyWiltshireDynamics, lupnt::KeplerianDynamics< T >, lupnt::RoeGeometricMappingDynamics, lupnt::YamanakaAnkersenDynamics

Public Functions

virtual ~AnalyticalDynamics() = default
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).

virtual State Propagate(const State &x0, Real t0, Real tf, const State *u, MatXd *stm) override = 0

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.