Class AnalyticalDynamics¶
Defined in File analytical_orbit_dynamics.h
Inheritance Relationships¶
Base Type¶
public lupnt::Dynamics(Class Dynamics)
Derived Types¶
public lupnt::ClohessyWiltshireDynamics(Class ClohessyWiltshireDynamics)public lupnt::KeplerianDynamics< T >(Template Class KeplerianDynamics)public lupnt::RoeGeometricMappingDynamics(Class RoeGeometricMappingDynamics)public lupnt::YamanakaAnkersenDynamics(Class YamanakaAnkersenDynamics)
Class Documentation¶
-
class AnalyticalDynamics : public lupnt::Dynamics¶
Base class for closed-form (non-integrated) orbit propagation models.
AnalyticalDynamicssubclasses advance an orbital-element or relative-motion state fromt0totfusing an analytic state-transition matrix evaluated atdt = 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
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).
-
virtual State Propagate(const State &x0, Real t0, Real tf, const State *u, MatXd *stm) override = 0¶
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 ~AnalyticalDynamics() = default¶