星历系统与动力学
e2m2e 提供基于 SPICE 的星历系统和 N 体动力学模型,用于高精度轨道设计。
SPICE 管理器
SPICEManager 封装 NASA SPICE 工具包,提供天体星历查询、时间转换和内核管理。
内核类型:
闰秒内核 (
.tls):UTC ↔ ET 时间转换,自动加载星历内核 (
.bsp):天体位置/速度数据,需手动加载
推荐星历内核:
文件名 |
说明 |
|---|---|
de440.bsp |
JPL DE440(推荐,覆盖 1550–2650 年) |
de440s.bsp |
JPL DE440 精简版(1849–2150 年) |
de435.bsp |
JPL DE435(1550–2650 年) |
内核文件从 NASA NAIF 下载。
from e2m2e.core.spice import SPICEManager
mgr = SPICEManager()
mgr.load_kernel("path/to/de440.bsp")
# 时间转换
et = mgr.utc_to_et("2024-01-01T00:00:00")
# 获取月球状态
state = mgr.get_body_state("MOON", et, "J2000", "EARTH")
mgr.unload_kernel("path/to/de440.bsp")
星历系统
EphemerisSystem 管理一组天体的星历查询,提供统一的数据访问层。
from e2m2e.core.spice import SPICEManager
from e2m2e.core.ephemeris_system import EphemerisSystem
mgr = SPICEManager()
mgr.load_kernel("path/to/de440.bsp")
system = EphemerisSystem(
bodies=["EARTH", "MOON", "SUN"],
spice=mgr,
origin="EARTH",
frame="J2000"
)
# 查询月球位置
moon_pos = system.get_body_position("MOON", et) # km
# 查询太阳状态(位置+速度)
sun_state = system.get_body_state("SUN", et) # [km, km/s]
# 获取引力参数
gm_moon = system.get_gm("MOON")
星历动力学
EphemerisDynamics 实现受限 N 体问题,利用 SPICE 星历数据计算多体引力加速度。
物理模型:
以 system.origin 为坐标原点(通常是地球),原点天体施加中心引力,其余天体施加第三体摄动:
\[\mathbf{a} = -\frac{\mu_0 \mathbf{r}}{|\mathbf{r}|^3}
- \sum_i \mu_i \left[
\frac{\mathbf{r} - \mathbf{r}_i}{|\mathbf{r} - \mathbf{r}_i|^3}
+ \frac{\mathbf{r}_i}{|\mathbf{r}_i|^3}
\right]\]
其中 \(\mathbf{r}_i\) 为第 i 个天体的位置,\(\mu_i\) 为其引力参数。
from e2m2e.core.ephemeris_dynamics import EphemerisDynamics
dynamics = EphemerisDynamics(system)
# 传播轨道
import numpy as np
state0 = np.array([r1, r2, r3, v1, v2, v3]) # km, km/s
t_span = (0, 86400) # 秒
result = dynamics.propagate(state0, t_span)
# 结果
print(result.states.shape) # (n_points, 6)
print(result.stm.shape) # (n_points, 6, 6)
积分器配置:
默认积分器:
DOP853(8 阶 Runge-Kutta)默认最大步长:60 秒
自适应步长:根据传播时长自动调整
与 CR3BP 动力学的区别
特性 |
CR3BP_Dynamics |
EphemerisDynamics |
|---|---|---|
坐标系 |
旋转坐标系(无量纲) |
惯性坐标系(J2000,有量纲) |
单位 |
无量纲(DU, TU) |
物理单位(km, s) |
天体数量 |
2 个主天体 |
N 个天体(可配置) |
精度 |
理想圆轨道 |
高精度星历数据 |
适用场景 |
概念设计、周期轨道 |
高精度任务设计 |