Skip to main content

HITEN - Computational Toolkit for the Circular Restricted Three-Body Problem

Project description

HITEN

HITEN - Computational Toolkit for the Circular Restricted Three-Body Problem

PyPI version

Overview

HITEN is a research-oriented Python library that provides an extensible implementation of high-order analytical and numerical techniques for the circular restricted three-body problem (CR3BP).

Examples

  1. Parameterisation of periodic orbits and their invariant manifolds

    The toolkit constructs periodic solutions such as halo orbits and computes their stable and unstable manifolds.

    from hiten import System
    
    system = System.from_bodies("earth", "moon")
    l1 = system.get_libration_point(1)
    
    orbit = l1.create_orbit("halo", amplitude_z=0.2, zenith="southern")
    orbit.correct(max_attempts=25)
    orbit.propagate(steps=1000)
    
    manifold = orbit.manifold(stable=True, direction="positive")
    manifold.compute()
    manifold.plot()
    

    Halo orbit stable manifold

    Figure 1 - Stable manifold of an Earth-Moon (L_1) halo orbit.

    Knowing the dynamics of the center manifold, initial conditions for vertical orbits can be computed and associated manifolds created. These reveal natural transport channels that can be exploited for low-energy mission design.

    from hiten import System, VerticalOrbit
    
    system = System.from_bodies("earth", "moon")
    l1 = system.get_libration_point(1)
    
    cm = l1.get_center_manifold(degree=10)
    cm.compute()
    
    initial_state = cm.ic(poincare_point=[0.0, 0.0], energy=0.6, section_coord="q3")
    
    orbit = VerticalOrbit(l1, initial_state=initial_state)
    orbit.correct(max_attempts=100)
    orbit.propagate(steps=1000)
    
    manifold = orbit.manifold(stable=True, direction="positive")
    manifold.compute()
    manifold.plot()
    

    Vertical orbit stable manifold

    Figure 2 - Stable manifold of an Earth-Moon (L_1) vertical orbit.

  2. Generating families of periodic orbits

    The toolkit can generate families of periodic orbits by continuation.

    from hiten import System
    from hiten.algorithms import StateParameter
    
     system = System.from_bodies("earth", "moon")
     l1 = system.get_libration_point(1)
    
     seed = l1.create_orbit('lyapunov', amplitude_x= 1e-3)
     seed.correct(max_attempts=25)
    
     target_amp = 1e-2 # grow A_x from 0.001 to 0.01 (relative amplitude)
     current_amp = seed.amplitude
     num_orbits = 10
    
     # Step in amplitude space (predictor still tweaks X component)
     step = (target_amp - current_amp) / (num_orbits - 1)
    
     engine = StateParameter(
         initial_orbit=seed,
         state=(S.X),     # underlying coordinate that gets nudged
         amplitude=True,  # but the continuation parameter is A_x
         target=(current_amp, target_amp),
         step=step,
         corrector_kwargs=dict(max_attempts=50, tol=1e-13),
         max_orbits=num_orbits,
     )
     engine.run()
    
     family = OrbitFamily.from_engine(engine)
     family.propagate()
     family.plot()
    

    Lyapunov orbit family

    Figure 3 - Family of Earth-Moon (L_1) Lyapunov orbits.

  3. Generating Poincaré maps

    The toolkit can generate Poincaré maps for the centre manifold over various sections.

    from hiten import System
    
    system = System.from_bodies("earth", "moon")
    l1 = system.get_libration_point(1)
    
    cm = l1.get_center_manifold(degree=12)
    cm.compute()
    
    pm = cm.poincare_map(energy=0.7, section_coord="q2", n_seeds=50, n_iter=100, seed_strategy="axis_aligned")
    pm.compute()
    pm.plot()
    

    Poincaré map

    Figure 4 - Poincaré map of the centre manifold of the Earth-Moon (L_1) libration point using the (q_2=0) section.

  4. Generating invariant tori

    Hiten can generate invariant tori for periodic orbits.

    from hiten import System
    from hiten.algorithms import InvariantTori
    
     system = System.from_bodies("earth", "moon")
     l1 = system.get_libration_point(1)
    
     orbit = l1.create_orbit('halo', amplitude_z=0.3, zenith='southern')
     orbit.correct(max_attempts=25)
     orbit.propagate(steps=1000)
    
     torus = InvariantTori(orbit)
     torus.compute(scheme='linear', epsilon=1e-2, n_theta1=256, n_theta2=256)
     torus.plot()
    

    Invariant tori

    Figure 5 - Invariant torus of an Earth-Moon (L_1) quasi-halo orbit.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hiten-0.3.0.2.tar.gz (2.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hiten-0.3.0.2-py3-none-any.whl (314.5 kB view details)

Uploaded Python 3

File details

Details for the file hiten-0.3.0.2.tar.gz.

File metadata

  • Download URL: hiten-0.3.0.2.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for hiten-0.3.0.2.tar.gz
Algorithm Hash digest
SHA256 67885e00c733bb7f43ed650afa9edc25b681fb6f740702dc33f7f9134d5bf545
MD5 3d8fcf2bb0a03893d94b14bbf1991b2f
BLAKE2b-256 ec942097a53278038bd9a5d05b4cef9fa650ead8e3eae1492f5efae99c4683bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for hiten-0.3.0.2.tar.gz:

Publisher: python-publish.yml on iamgadmarconi/hiten

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hiten-0.3.0.2-py3-none-any.whl.

File metadata

  • Download URL: hiten-0.3.0.2-py3-none-any.whl
  • Upload date:
  • Size: 314.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for hiten-0.3.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2b0d6c4722ef2f5552bd826ce60cb74689ac17b5ab6b6d85b4ae08d35f5296ff
MD5 665f78b06e3c9436e546a576f4d85822
BLAKE2b-256 c80e8491069dd01f97d8b4a7f0139885bc8c6b6f5a4a029c885f9c84969bb969

See more details on using hashes here.

Provenance

The following attestation bundles were made for hiten-0.3.0.2-py3-none-any.whl:

Publisher: python-publish.yml on iamgadmarconi/hiten

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page