System

ARLAMX

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.

ModelStateIn this build
Free-molecular aerodynamicsSupportedPer-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 pressureSupportedOptical 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.
GravitySupportedGGM03S 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 bodyPartialPoint-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 controlSupportedWorld Magnetic Model or a tilted dipole. Magnetorquers, torque-rod allocation, and B-dot detumble. MRP and quaternion feedback both exist.
AtmospherePartialNRLMSIS 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 materialsNot yetThe 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/.

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.