Class YamanakaAnkersenDynamics

Inheritance Relationships

Base Type

Class Documentation

class YamanakaAnkersenDynamics : public lupnt::AnalyticalDynamics

Yamanaka-Ankersen propagation of relative motion about an eccentric reference orbit.

Extends Clohessy-Wiltshire to eccentric chief orbits using the Yamanaka-Ankersen state transition matrix, parameterized by the true anomaly f of the chief. Intended for formation-flying relative-motion propagation when the chief orbit is non-circular.

Note

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

Public Functions

YamanakaAnkersenDynamics(const ClassicalOE &coe_c, const Cart6 &rv_rtn, Real GM_)

Construct from the chief’s classical orbital elements and the deputy’s initial RTN relative state.

Parameters:
  • coe_c – Chief’s classical orbital elements (provides semi-major axis, eccentricity, mean anomaly).

  • rv_rtn – Deputy’s initial relative position/velocity in the chief’s RTN frame.

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

MatX ComputeMat(Real t)

Compute the Yamanaka-Ankersen state transition matrix at elapsed time t.

Evaluates the true anomaly f at t via MeanToTrueAnomaly, then forms Phi = A(f) * B(f) mapping the (as-yet-unsolved) integration-constant vector to the relative state.

Parameters:

t – Elapsed time since t0_ [s].

Returns:

6x6 Yamanaka-Ankersen state transition matrix.

MatX ComputeInverseMat(Real t)

Compute the inverse of the Yamanaka-Ankersen state transition matrix at elapsed time t.

Used to map a relative state at time t back to the integration-constant vector (Phi^{-1} * x), e.g. for initializing K_ from rv_rtn_.

Parameters:

t – Elapsed time since t0_ [s].

Returns:

6x6 inverse Yamanaka-Ankersen state transition matrix.

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

Propagate the relative Cartesian state using the Yamanaka-Ankersen solution.

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 ClassicalOE::TYPE, the state type associated with 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).