gemseo / problems / ode

Show inherited members

orbital_dynamics module

The 2-body astrodynamics problem.

Predict the motion and position of two massive objects viewed as point particles that only interact with one another using classical mechanics. This problem is treated here as a classical central force problem.

Consider the frame defined by one particle. The position \((x, y)\) and the velocity \((v_x, v_y)\) of the other particle as a function of time can be described by the following set of equations:

with \(r = \sqrt{x(t)^2 + y(t)^2}\).

We use the initial conditions:

where \(e\) is the eccentricity of the particle trajectory.

The Jacobian of the right-hand side of this ODE is:

class gemseo.problems.ode.orbital_dynamics.OrbitalDynamics(eccentricity=0.5, use_jacobian=True, state_vector=None)[source]

Bases: ODEProblem

Equations of motion of a massive point particle under the influence of a central force.

Parameters:
  • eccentricity (float) –

    The eccentricity of the particle trajectory.

    By default it is set to 0.5.

  • use_jacobian (bool) –

    Whether to use the analytical expression of the Jacobian.

    By default it is set to True.

  • state_vector (NDArray[float] | None) – The state vector \(s(t)=(x(t), y(t), \dot{x(t)}, \dot{y(t)})\) of the system.

func: Callable[[NDArray[float], NDArray[float]], NDArray[float]]

The right-hand side of the ODE.

initial_state: NDArray[float]

The initial conditions \((t_0,s_0)\) of the ODE.

integration_interval: tuple[float, float]

The interval of integration.

jac: Callable[[NDArray[float], NDArray[float]], NDArray[float]]

The Jacobian function of the right-hand side of the ODE.

result: ODEResult

The result of the ODE problem.

time_vector: NDArray[float]

The times at which the solution should be evaluated.