System
Three jobs, one plant.
The same C++ integrator serves decay studies, an onboard attitude loop, and deep reinforcement learning. Scripted advisors and a trained network call the same step.
Flow
Free-molecular force and torque
A mesh becomes flat plates. Sentman, or the Walker–CLL fit, sums drag, lift, and radiation pressure along an orbit. Shipped runs use the hex sail or the SolarCat plate model. The decay front door ispython main.py decay.
Control
Outer advisor, inner law
An advisor picks a target attitude every 300 seconds. An MRP or quaternion law tracks it at a 2 second step, through magnetorquers or torque rods. The advisor can be min-drag, a heuristic, sampling MPC, or a network.
Learning
A small attitude policy
PPO, SAC, or TD3 train that outer advisor. The default network is 4 layers by 16 units, sized for a later INT8 copy. Training stays FP32. Quantization is a separate command.
Plant
What the integrator carries.
Status is what the v2.7.5 source does today. Plates do not shadow each other, in flow or in sunlight. The plant does not link Basilisk.
| Model | State | In this build |
|---|
| Free-molecular aerodynamics | Supported | Per-panel Sentman with Moe and Moe accommodation. Optional Walker–CLL closed-form fit on a 7-species MSIS mixture. Force and torque enter every 2 s substep. Accommodation is one global value. |
| Radiation pressure | Supported | Optical plate law, 1/d², Earth infrared and albedo, cylindrical eclipse. Default optics preset al_mylar. One optical partition for the vehicle. No thermal re-emission and no penumbra. |
| Gravity | Supported | GGM03S fully normalised harmonics through degree 70. Training presets stay at degree 2, 4, and 8. Earth orientation is GMST only. Cite Basilisk when you reuse the evaluator. |
| Third body | Partial | Point-mass Sun and Moon. The analytic Meeus Moon is the fallback. CSPICE is not linked in this build, and no configuration calls load_spice. Lunisolar is on in the high preset only. |
| Magnetic control | Supported | World Magnetic Model or a tilted dipole. Magnetorquers, torque-rod allocation, and B-dot detumble. MRP and quaternion feedback both exist. |
| Atmosphere | Partial | NRLMSIS 2.1 from Python, once per advisor step, with linear interpolation across the step. Training randomises F10.7 and Ap. Observed index files are not replayed. |
| Panel materials | Not yet | The panel table has no material column. Gas accommodation and optical coefficients are global. The exact CLL kernel and per-panel materials are a plan, not shipped code. |
The full ledger, including effect sizes, is on thevalidation page. TheCLL and materials planis the unimplemented work.
Build
Python 3.12, then the plant.
The conda file pins a CPU PyTorch build. Do not pip-install an unpinned torch into that environment. ./build.sh refuses any interpreter other than 3.12.
Install
mamba env create -n arlamx -f environment.yml
mamba activate arlamx
./build.sh
python main.py test
Documents
The tree, as a manual.
These pages are the v2.7.5 user guide and physics reference. Development notes, module memos, and campaign writeups stay in the repository under docs/notes/.
User guideBuild, commands, free-molecular runs, the control loop, deep RL, STL simplification, libraries.→Commandspython main.py is the front door: decay, geometry, train, quantize, verify.→Physics referenceEquations, configuration switches, where each model lives, and what it does not do.→Step loopOne advisor step is 300 s: 150 substeps of 2 s, RK4 inside each substep.→Gymnasium environmentVariants, observation, action, reward, power, sensors, and the torque filter.→ Source
The same tree, two hosts.
v2.7.5 is the documented source. GitHub is the public remote. GitLab carries the same tree, including the plant, the trainer, and the notes that are not on this site.