Circular Restricted 3 Body Problem
- class otp.circularrestricted3body.CR3BPProblem
Bases:
otp.ProblemThe circular restricted three body problem, following the formulation presented in [Spr21].
The system represents the evolution of an object of negligent mass near two large-mass objects that orbit each other a constant distance apart. The ratio of the mass of the first object to the sum of the total mass of the system is represented by the non-dimensional constant \(\mu\). The reference frame of the system is fixed to the rotationg frame of the two objects, meaning that the objects have fixed constant positions of \([-\mu, 0, 0]^T\) for the first object, and \([1 - \mu, 0, 0]^T\) for the second object. The evolution of the third object of negligent mass is given by the following second-order non-dimensionalized differential equation:
\[\begin{split} x'' &= 2y' + \frac{\partial U}{\partial x},\\ y'' &= -2x' + \frac{\partial U}{\partial y},\\ z'' &= \frac{\partial U}{\partial z}, \end{split}\]where the energy and distances are defined as,
\[\begin{split} U &= \frac{1}{2} (x^2 + y^2) + \frac{1 - \mu}{d} + \frac{\mu}{r},\\ d &= \sqrt{(x + \mu)^2 + y^2 + z^2},\\ r &= \sqrt{(x - 1 + \mu)^2 + y^2 + z^2}, \end{split}\]and where the system is converted to a first order differential equation in six variables in the standard fashion as,
\[\begin{split} x' = v_x,\\ y' = v_y,\\ z' = v_z,\\ v_x' = x'',\\ v_y' = y'',\\ v_z' = z'', \end{split}\]where the new variables \(v_x\), \(v_y\), and \(v_z\) represent the velocity vector.
The distances \(d\) and \(r\) can cause numerical instability as they approach zero, thus a softening factor of \(s^2\) is typically added under both of the square-roots of the distances \(d\) and \(r\).
When the object under consideration is on an orbit that is co-planar to the orbit of the two other objects, then the system of equations can reduce by two dimensions, removing the \(z''\) and \(z'\) terms.
The system of equations is energy-preserving, meaning that the Jacobi constant of the system,
\[ J = 2U - v_x^2 - v_y^2 - v_z^2, \]is preserved throughout the evolution of the equations, though this is typically not true numerically. The Jacobi constant is provided as a function.
For state estimation purposes a radar measurement is also provided,
\[\begin{split} h(x, y, z, v_x, v_y, v_z) = \begin{bmatrix} \sqrt{(x - s_x)^2 + (y - s_y)^2 + (z - s_z)^2}\\ \frac{(x - s_x) \cdot v_x + (y - s_y) \cdot v_y + (z - s_z) \cdot v_z} {\sqrt{(x - s_x)^2 + (y - s_y)^2 + (z - s_z)^2}}\\ \tan^{-1} \frac{y}{x + \mu}\\ \tan^{-1} \frac{z}{\sqrt{(x - s_x)^2 + (y - s_y)^2 + (z - s_z)^2}} \end{bmatrix} \end{split}\]where \(s_x\), \(s_y\), and \(s_z\) are the locations of the radar sensor, the first term is the range to the object from the sensor, the second term is the rate of change of the range (range-rate), and the third and fourth terms are the two angles the radar must be pointing. In the planar case, the fourth term is absent.
Notes
Type
ODE
Number of Variables
4 for planar or 6 for non-planar
Stiff
no
Example
>>> problem = otp.circularrestricted3body.presets.HaloOrbit('OrbitType', 'L2', 'Index', 10); >>> sol = model.solve(); >>> problem.plotPhaseSpace(sol);
See also
- Constructor Summary
- CR3BPProblem(timeSpan, y0, parameters)
Create a CR3BP problem object.
- Parameters:
timeSpan (
numeric(1, 2)) – The start and final time.y0 (
numeric(n, 1)) – The initial conditions. Either n = 4 or n = 6.parameters (
otp.circularrestricted3body.CR3BPParameters) – The parameters.
Parameters
- class otp.circularrestricted3body.CR3BPParameters
Bases:
otp.ParametersParameters for the CR3BP problem.
- Constructor Summary
- CR3BPParameters(varargin)
Create a CR3BP parameters object.
- Parameters:
varargin – A variable number of name-value pairs. A name can be any property of this class, and the subsequent value initializes that property.
- Property Summary
- Mu
Relative mass of the system.
- SoftFactor
A factor to avoid singularity when computing distances.
Presets
- class otp.circularrestricted3body.presets.HaloOrbit
Bases:
otp.circularrestricted3body.CR3BPProblemThis preset builds a halo orbit around the Moon in the Earth-Moon system preset for the CR3BP based on a table of reference initial conditions and periods. There are four possible different orbits given by this preset, \(L_2\), \(P2HO_1\), \(P2HO_2\), \(P4HO_1\), and \(P4HO_2\). The tables contain \(20\) entries, and thus there are \(100\) different possible orbits given by this preset. The tables of \(L_2\) halo orbits are given as Table A.1–A.5 on pages 218–222 of [Spr21].
- Constructor Summary
- HaloOrbit(varargin)
Create the NRHO CR3BP problem object.
- Parameters:
OrbitType (
string) –- One of the following:
’L2’ for the L2 Orbit family (default)
’P2HO1’ for the period doubling halo orbit of type 1
’P2HO2’ for the period doubling halo orbit of type 2
’P4HO1’ for the period quadrupling halo orbit of type 1
’P4HO2’ for the period quadrupling halo orbit of type 2
Index (
numeric(1, 1)) – An integer index between 1 and 20.Corrected (
boolean) – True (default) uses a modified version to better work with the physical constants and matlab time integrators. False uses the original table from [Spr21].
- class otp.circularrestricted3body.presets.CircularEarthOrbit
Bases:
otp.circularrestricted3body.CR3BPProblemThis preset builds a circular earth orbit in CR3BP based on the equations derived in [She20].
- Constructor Summary
- CircularEarthOrbit(varargin)
Create the CircularEarthOrbit CR3BP problem object.
- Parameters:
OrbitalRadius (
numeric(1, 1)) – The radius of the orbit above Earth’s surface in km. The default radius is 340 km, which is approximately where the ISS is/was located.
- class otp.circularrestricted3body.presets.Canonical
Bases:
otp.circularrestricted3body.CR3BPProblemA trivial preset with a stable oscillating orbit around a lagrange point.
- Constructor Summary
- Canonical(varargin)
Create the Canonical CR3BP problem object.
- class otp.circularrestricted3body.presets.Arenstorf
Bases:
otp.circularrestricted3body.CR3BPProblemOne period of a satellite moving in an Earth-Moon system on a planar orbit. The original orbit was derived in [Are63] for the planar circular restricted three body problem, and the setting from which this preset is derived is taken form pages 129–130 of [HNW93].
- Constructor Summary
- Arenstorf(varargin)
Create the Arenstorf CR3BP problem object.