Class RoeGeometricMappingDynamics

Inheritance Relationships

Base Type

Class Documentation

class RoeGeometricMappingDynamics : public lupnt::AnalyticalDynamics

Geometric-mapping propagation of quasi-nonsingular relative orbital elements (ROE).

Maps a fixed quasi-nonsingular ROE vector K_ to a relative Cartesian state at time t via the geometric ROE-to-RTN transition matrix, parameterized by the chief’s argument of latitude u = f + w. Intended for formation-flying analysis expressed in ROE coordinates.

Note

Propagate() currently throws std::runtime_error("Not implemented"); only ComputeMat is functional.

Public Functions

RoeGeometricMappingDynamics(const ClassicalOE coe_c, const QuasiNonsingROE &roe, Real GM)

Construct from the chief’s classical orbital elements, the deputy’s quasi-nonsingular ROE, and the central-body gravitational parameter.

Parameters:
  • coe_c – Chief’s classical orbital elements at the reference epoch.

  • roe – Deputy’s quasi-nonsingular relative orbital elements (ROE), stored as the fixed integration-constant vector K_.

  • GM – Gravitational parameter of the central body [m^3/s^2 or consistent unit system].

MatX ComputeMat(Real t)

Compute the ROE-to-relative-Cartesian geometric mapping matrix at elapsed time t.

Evaluates the chief’s true anomaly f at t via MeanToTrueAnomaly, forms the argument of latitude u = f + w_, and returns Phi = A(u) * B(u) mapping the fixed ROE vector K_ to the relative Cartesian state.

Parameters:

t – Elapsed time since t0_ [s].

Returns:

6x6 ROE geometric mapping matrix.

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

Propagate the relative Cartesian state using the ROE geometric mapping.

Note

Currently unimplemented (throws std::runtime_error) for dt != 0.

Parameters:
  • state – Initial relative Cartesian state at time t0.

  • t0 – Initial epoch [s].

  • tf – Final epoch [s].

  • u – Unused (no control input).

  • stm – Output: state transition matrix d(xf)/d(x0); left unmodified if nullptr.

Returns:

Propagated relative Cartesian state at time tf.

inline virtual StateType GetStateType() const override

Return QuasiNonsingROE::TYPE, the relative-orbital-element state type propagated by this model.

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).