Synodic Map Example

This example demonstrates how to compute synodic maps in the Circular Restricted Three-Body Problem (CR3BP).

Computing synodic maps in the CR3BP
 1"""Example script: Generating a Poincare map for the synodic section of a vertical orbit manifold.
 2
 3Run with
 4    python examples/heteroclinic_connection.py
 5"""
 6
 7import os
 8import sys
 9
10sys.path.append(os.path.join(os.path.dirname(__file__), "..", "src"))
11
12from hiten.system import SynodicMap, System, VerticalOrbit
13
14
15def main() -> None:
16    system = System.from_bodies("earth", "moon")
17    l_point = system.get_libration_point(1)
18
19    cm = l_point.get_center_manifold(degree=6)
20    cm.compute()
21
22    ic_seed = cm.to_synodic([0.0, 0.0], 0.6, "q3") # Good initial guess from CM
23
24    orbit = VerticalOrbit(l_point, initial_state=ic_seed)
25    orbit.correct()
26    orbit.propagate(steps=1000)
27
28    manifold = orbit.manifold(stable=True, direction="positive")
29    manifold.compute(step=0.005)
30    manifold.plot()
31
32    synodic_map = SynodicMap(manifold)
33    synodic_map.compute(section_axis="y", section_offset=0.0, plane_coords=("x", "z"), direction=-1)
34    synodic_map.plot()
35
36
37if __name__ == "__main__":
38    main()