Libration Points Module
The libration module provides abstract helpers to model Libration points of the Circular Restricted Three-Body Problem (CR3BP).
Base Classes
The base module provides the core libration point framework.
LibrationPoint()
Abstract base class for Libration points of the CR3BP.
- class hiten.system.libration.base.LibrationPoint[source]
Bases:
_HitenBase
,ABC
Abstract base class for Libration points of the CR3BP.
- Parameters:
system (
System
) – Parent CR3BP model providing the mass ratio mu and utility functions.
- position
Cartesian coordinates in the synodic rotating frame (nondimensional units). Evaluated on first access and cached thereafter.
- Type:
numpy.ndarray, shape (3,)
- is_stable
True if all eigenvalues returned by
is_stable()
lie inside the unit circle (discrete case) or have non-positive real part (continuous case).- Type:
- eigenvalues
Arrays of stable, unstable and centre eigenvalues.
- Type:
- eigenvectors
Bases of the corresponding invariant subspaces.
- Type:
- linear_data
Record with canonical invariants and symplectic basis returned by the normal-form computation.
- Type:
LinearData
Notes
The class is abstract. Concrete subclasses must implement:
_calculate_position()
_get_linear_data()
Heavy algebraic objects produced by the centre-manifold normal-form procedure are cached inside a dedicated
CenterManifold
instance to avoid memory bloat.Examples
>>> from hiten.system.base import System >>> sys = System(mu=0.0121505856) # Earth-Moon system >>> L1 = sys.libration_points['L1'] >>> L1.position array([...])
- property dynsys
Underlying vector field instance.
- Returns:
The underlying vector field instance.
- Return type:
- property var_dynsys
Underlying variational equations system.
- Returns:
The underlying variational equations system.
- Return type:
- property jacobian_dynsys
Underlying Jacobian evaluation system.
- Returns:
The underlying Jacobian evaluation system.
- Return type:
- abstract property idx: int
Get the libration point index.
- Returns:
The libration point index (1-5 for L1-L5).
- Return type:
- property energy: float
Get the energy of the Libration point.
- Returns:
The mechanical energy in nondimensional units.
- Return type:
- property jacobi: float
Get the Jacobi constant of the Libration point.
- Returns:
The Jacobi constant in nondimensional units.
- Return type:
- property is_stable: bool
Check if the Libration point is linearly stable.
A libration point is considered stable if its linear analysis yields no unstable eigenvalues. The check is performed on the continuous-time system by default.
- Returns:
True if the libration point is linearly stable.
- Return type:
- property eigenvalues: Tuple[ndarray, ndarray, ndarray]
Get the eigenvalues of the linearized system at the Libration point.
- Returns:
(stable_eigenvalues, unstable_eigenvalues, center_eigenvalues) Each array contains eigenvalues in nondimensional units.
- Return type:
- property eigenvectors: Tuple[ndarray, ndarray, ndarray]
Get the eigenvectors of the linearized system at the Libration point.
- Returns:
(stable_eigenvectors, unstable_eigenvectors, center_eigenvectors) Each array contains eigenvectors as column vectors.
- Return type:
- create_orbit(family, /, **kwargs)[source]
- Parameters:
family (str | type[PeriodicOrbit])
- Return type:
- get_center_manifold(degree)[source]
Return (and lazily construct) a CenterManifold of given degree.
Heavy polynomial data (Hamiltonians in multiple coordinate systems, Lie generators, etc.) are cached inside the returned CenterManifold, not in the LibrationPoint itself.
- Parameters:
degree (int) – The maximum degree of the center manifold expansion.
- Returns:
The center manifold instance.
- Return type:
- hamiltonian(max_deg, form='physical')[source]
Return a Hamiltonian object from the associated CenterManifold.
- Parameters:
- Returns:
The Hamiltonian object with the specified form and degree.
- Return type:
- hamiltonians(max_deg)[source]
Return all Hamiltonian representations from the associated CenterManifold.
- Parameters:
max_deg (int) – The maximum degree of the Hamiltonian expansion.
- Returns:
Dictionary with keys: ‘physical’, ‘real_normal’, ‘complex_normal’, ‘normalized’, ‘center_manifold_complex’, ‘center_manifold_real’. Each value is a Hamiltonian object.
- Return type:
- hamiltonian_system(form, max_deg)[source]
Return the Hamiltonian system for the given form.
- Parameters:
- Returns:
The Hamiltonian system instance.
- Return type:
- generating_functions(max_deg)[source]
Return the Lie-series generating functions from CenterManifold.
- Parameters:
max_deg (int) – The maximum degree of the generating function expansion.
- Returns:
List of LieGeneratingFunction objects.
- Return type:
- property position: ndarray
Get the position of the Libration point in the rotating frame.
- Returns:
3D vector [x, y, z] representing the position in nondimensional units.
- Return type:
numpy.ndarray, shape (3,)
- property linear_data
Get the linear data for the Libration point.
- Returns:
The linear data containing eigenvalues and eigenvectors.
- Return type:
_LinearData
- property normal_form_transform: Tuple[ndarray, ndarray]
Get the normal form transform for the Libration point.
- Returns:
(C, Cinv) where C is the symplectic transformation matrix and Cinv is its inverse.
- Return type:
Collinear Points
The collinear module provides collinear libration point classes.
CollinearPoint()
Base class for collinear Libration points (L1, L2, L3).
- class hiten.system.libration.collinear.CollinearPoint[source]
Bases:
LibrationPoint
Base class for collinear Libration points (L1, L2, L3).
The collinear points lie on the x-axis connecting the two primary bodies. They are characterized by having unstable dynamics with saddle-center stability (one unstable direction, two center directions).
- Parameters:
system (
System
) – The CR3BP system containing the mass parameter mu.
- property linear_modes
Get the linear modes for the Libration point.
- Returns:
(lambda1, omega1, omega2) values in nondimensional units.
- Return type:
- property normal_form_transform: Tuple[ndarray, ndarray]
Get the normal form transform for the Libration point.
- Returns:
(C, Cinv) where C is the symplectic transformation matrix and Cinv is its inverse.
- Return type:
- property linear_data
Get the linear data for the Libration point.
- Returns:
The linear data containing eigenvalues and eigenvectors.
- Return type:
_LinearData
L1Point()
L1 Libration point, located between the two primary bodies.
- class hiten.system.libration.collinear.L1Point[source]
Bases:
CollinearPoint
L1 Libration point, located between the two primary bodies.
The L1 point is situated between the two primary bodies on the line connecting them. It is characterized by saddle-center stability with one unstable direction and two center directions.
- Parameters:
system (
System
) – The CR3BP system containing the mass parameter mu.
L2Point()
L2 Libration point, located beyond the smaller primary body.
- class hiten.system.libration.collinear.L2Point[source]
Bases:
CollinearPoint
L2 Libration point, located beyond the smaller primary body.
The L2 point is situated beyond the smaller primary body on the line connecting the primaries. It is characterized by saddle-center stability with one unstable direction and two center directions.
- Parameters:
system (
System
) – The CR3BP system containing the mass parameter mu.
L3Point()
L3 Libration point, located beyond the larger primary body.
- class hiten.system.libration.collinear.L3Point[source]
Bases:
CollinearPoint
L3 Libration point, located beyond the larger primary body.
The L3 point is situated beyond the larger primary body on the line connecting the primaries. It is characterized by saddle-center stability with one unstable direction and two center directions.
- Parameters:
system (
System
) – The CR3BP system containing the mass parameter mu.
Triangular Points
The triangular module provides triangular libration point classes.
TriangularPoint()
Abstract helper for the triangular Libration points.
- class hiten.system.libration.triangular.TriangularPoint[source]
Bases:
LibrationPoint
Abstract helper for the triangular Libration points.
The triangular points form equilateral triangles with the two primary bodies. They behave as centre-type equilibria when the mass ratio mu is below Routh’s critical value.
- Parameters:
system (
System
) – CR3BP model supplying the mass parameter mu.
Notes
A warning is logged if mu > mu_R.
- ROUTH_CRITICAL_MU = np.float64(0.009346618537341811)
- property normal_form_transform
Build the 6x6 symplectic matrix C that sends H2 to normal form.
- Returns:
(C, Cinv) where C is the symplectic transformation matrix and Cinv is its inverse.
- Return type:
- property linear_modes
Get the linear modes for the Libration point.
- Returns:
(omega_1, omega_2, omega_z) where: - omega_1 > 0 with omega_1^2 < 1/2 (small positive planar frequency) - omega_2 < 0 (negative planar frequency) - omega_z = 1.0 (vertical frequency) For triangular points all eigenvalues are purely imaginary so no hyperbolic mode is present.
- Return type:
- property linear_data
Get the linear data for the Libration point.
- Returns:
The linear data containing eigenvalues and eigenvectors.
- Return type:
_LinearData
L4Point()
L4 Libration point, forming an equilateral triangle with the two primary bodies, located above the x-axis (positive y).
- class hiten.system.libration.triangular.L4Point[source]
Bases:
TriangularPoint
L4 Libration point, forming an equilateral triangle with the two primary bodies, located above the x-axis (positive y).
The L4 point is situated above the x-axis, forming an equilateral triangle with the two primary bodies. It is characterized by center-type stability when the mass ratio is below Routh’s critical value.
- Parameters:
system (
System
) – The CR3BP system containing the mass parameter mu.
L5Point()
L5 Libration point, forming an equilateral triangle with the two primary bodies, located below the x-axis (negative y).
- class hiten.system.libration.triangular.L5Point[source]
Bases:
TriangularPoint
L5 Libration point, forming an equilateral triangle with the two primary bodies, located below the x-axis (negative y).
The L5 point is situated below the x-axis, forming an equilateral triangle with the two primary bodies. It is characterized by center-type stability when the mass ratio is below Routh’s critical value.
- Parameters:
system (
System
) – The CR3BP system containing the mass parameter mu.