HITEN - Computational Toolkit for the Circular Restricted Three-Body Problem
Project description
HITEN - Computational Toolkit for the Circular Restricted Three-Body Problem
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
-
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()
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(max_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()
Figure 2 - Stable manifold of an Earth-Moon (L_1) vertical orbit.
-
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()
Figure 3 - Family of Earth-Moon (L_1) Lyapunov orbits.
-
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(max_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()
Figure 4 - Poincaré map of the centre manifold of the Earth-Moon (L_1) libration point using the (q_2=0) section.
-
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()
Figure 5 - Invariant torus of an Earth-Moon (L_1) quasi-halo orbit.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hiten-0.2.8.1.tar.gz.
File metadata
- Download URL: hiten-0.2.8.1.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2523c1d0fe4f98d4aeb0cff868feefba3a4fe2210392f4410be9d2db79fa1e5c
|
|
| MD5 |
1ffdd9e589630225618c35d555fd7fa5
|
|
| BLAKE2b-256 |
46f134512d027a3238eadf807a3dc0bb7b4e567682a68bb6caf8299a5075a054
|
Provenance
The following attestation bundles were made for hiten-0.2.8.1.tar.gz:
Publisher:
python-publish.yml on iamgadmarconi/hiten
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hiten-0.2.8.1.tar.gz -
Subject digest:
2523c1d0fe4f98d4aeb0cff868feefba3a4fe2210392f4410be9d2db79fa1e5c - Sigstore transparency entry: 281369099
- Sigstore integration time:
-
Permalink:
iamgadmarconi/hiten@dbd44c6995080c65ebfebb97aa6ed5a7547695f9 -
Branch / Tag:
refs/tags/v0.2.8.1 - Owner: https://github.com/iamgadmarconi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@dbd44c6995080c65ebfebb97aa6ed5a7547695f9 -
Trigger Event:
release
-
Statement type:
File details
Details for the file hiten-0.2.8.1-py3-none-any.whl.
File metadata
- Download URL: hiten-0.2.8.1-py3-none-any.whl
- Upload date:
- Size: 300.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c6d94a6c07771467f0b126b6a91637c1b4bb7eb0b882507d10d3410b4d21ed8
|
|
| MD5 |
8a05a439f5438d6c0ac31f1440213d63
|
|
| BLAKE2b-256 |
d28da70755ca815e7e972d610147772b477c1b4e97dc0738276653deebf572b1
|
Provenance
The following attestation bundles were made for hiten-0.2.8.1-py3-none-any.whl:
Publisher:
python-publish.yml on iamgadmarconi/hiten
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hiten-0.2.8.1-py3-none-any.whl -
Subject digest:
3c6d94a6c07771467f0b126b6a91637c1b4bb7eb0b882507d10d3410b4d21ed8 - Sigstore transparency entry: 281369124
- Sigstore integration time:
-
Permalink:
iamgadmarconi/hiten@dbd44c6995080c65ebfebb97aa6ed5a7547695f9 -
Branch / Tag:
refs/tags/v0.2.8.1 - Owner: https://github.com/iamgadmarconi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@dbd44c6995080c65ebfebb97aa6ed5a7547695f9 -
Trigger Event:
release
-
Statement type: