Class ostk::astrodynamics::Dynamics

class Dynamics

Define a dynamical system subject to equations of motion.

Subclassed by ostk::astrodynamics::dynamics::AtmosphericDrag, ostk::astrodynamics::dynamics::CentralBodyGravity, ostk::astrodynamics::dynamics::PositionDerivative, ostk::astrodynamics::dynamics::Tabulated, ostk::astrodynamics::dynamics::ThirdBodyGravity, ostk::astrodynamics::dynamics::Thruster

Public Functions

Dynamics(const String &aName = String::Empty())

Constructor.

Parameters:

aName -- A name

virtual ~Dynamics()

Destructor.

String getName() const

Get name.

Returns:

Name of Dynamics

virtual void print(std::ostream &anOutputStream, bool displayDecorator = true) const

Print dynamics.

Parameters:
  • anOutputStream -- An output stream

  • (optional) -- displayDecorators If true, display decorators

virtual bool isDefined() const = 0

Check if dynamics is defined (pure virtual)

Returns:

True if dynamics is defined

virtual Array<Shared<const CoordinateSubset>> getReadCoordinateSubsets() const = 0

Return the coordinate subsets that the instance reads from.

Returns:

The coordinate subsets that the instance reads from

virtual Array<Shared<const CoordinateSubset>> getWriteCoordinateSubsets() const = 0

Return the coordinate subsets that the instance writes to.

Returns:

The coordinate subsets that the instance writes to

virtual VectorXd computeContribution(const Instant &anInstant, const VectorXd &x, const Shared<const Frame> &aFrameSPtr) const = 0

Compute the contribution to the state derivative.

Parameters:
  • anInstant -- An instant

  • x -- The reduced state vector (this vector will follow the structure determined by the 'read' coordinate subsets)

  • aFrameSPtr -- The frame in which the state vector is expressed

Returns:

The reduced derivative state vector (this vector must follow the structure determined by the 'write' coordinate subsets) expressed in the given frame

Public Static Functions

static NumericalSolver::SystemOfEquationsWrapper GetSystemOfEquations(const Array<Context> &aContextArray, const Instant &anInstant, const Shared<const Frame> &aFrameSPtr)

Get system of equations wrapper.

Parameters:
  • aContextArray -- An array of Dynamics Information

  • anInstant -- An instant

  • aFrameSPtr -- The reference frame in which dynamic equations are resolved

Returns:

std::function<void(const std::vector<double>&, std::vector<double>&, const double)>

static Array<Shared<Dynamics>> FromEnvironment(const Environment &anEnvironment)

Get a list of dynamics from the envrionment.

Parameters:

anEnvironment -- An environment

Returns:

A list of dynamics

Friends

friend std::ostream &operator<<(std::ostream &anOutputStream, const Dynamics &aDynamics)

Output stream operator.

std::cout << Dynamics(...);
Parameters:
  • anOutputStream -- An output stream

  • aDynamics -- A Dynamics

Returns:

A reference to output stream

struct Context

Public Functions

Context(const Shared<Dynamics> &aDynamicsSPtr, const Array<Pair<Index, Size>> &aReadIndexes, const Array<Pair<Index, Size>> &aWriteIndexes)

Public Members

Shared<Dynamics> dynamics
Array<Pair<Index, Size>> readIndexes
Array<Pair<Index, Size>> writeIndexes
Size readStateSize