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 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.
- check()¶
Ensure the parameters of the problem are consistent.
- Raises:
ValueError – If the state and time shapes are inconsistent.
- Return type:
None
- check_jacobian(state_vector, approximation_mode=ApproximationMode.FINITE_DIFFERENCES, step=1e-06, error_max=1e-08)¶
Check if the Jacobian function is correct.
At a given state, compare the value of the Jacobian computed by the function provided by ther user to an approximated value computed by finite-differences for example.
- Parameters:
state_vector (ArrayLike) – The state at which the Jacobian is checked.
approximation_mode (ApproximationMode) –
The approximation mode.
By default it is set to “finite_differences”.
step (float) –
The step used to approximate the gradients.
By default it is set to 1e-06.
error_max (float) –
The error threshold above which the Jacobian is deemed to be incorrect.
By default it is set to 1e-08.
- Raises:
ValueError – When the Jacobian function is wrong.
- Return type:
None
- adjoint_wrt_desvar: NumberArray¶
The adjoint of the problem relative to the design variables.
- adjoint_wrt_state: NumberArray¶
The adjoint of the problem relative to the state.
- initial_state: NumberArray¶
The initial conditions \((t_0,s_0)\) of the ODE.
- jac: Callable[[float, NumberArray], NumberArray] | NumberArray | None¶
The function to compute the Jacobian of \(f\).
If
Callable
, the Jacobian is assumed to be dependent on time and state. It will be called asjac(time, state)
as necessary. IfNumberArray
, the Jacobian is assumed to be constant. IfNone
, the Jacobian will be approximated by finite differences.
- jac_desvar: Callable[[float, NumberArray], NumberArray]¶
The function to compute the Jacobian of \(f\) relative to the design variables.
- property time_vector¶
The times at which the solution shall be evaluated.