Commit Graph

131 Commits

Author SHA1 Message Date
ApsisRS contributors 1526928097 docs: bilingual comments for the ops tests 2026-10-02 02:00:32 +08:00
ApsisRS contributors ad05381d61 docs: bilingual comments for the network tests 2026-10-02 01:59:43 +08:00
ApsisRS contributors 55a1449a12 docs: finish the rf test comments 2026-10-02 01:58:31 +08:00
ApsisRS contributors 8193b3aade docs: finish the rf test comments 2026-10-02 01:57:45 +08:00
ApsisRS contributors 2fe3fad27a docs: bilingual comments for the rf tests 2026-10-02 01:57:31 +08:00
ApsisRS contributors 4f90474610 docs: bilingual comments for the orbit tests 2026-10-02 01:56:29 +08:00
ApsisRS contributors 1ffba97a14 docs: bilingual comments for the foundation and physics tests 2026-10-02 01:55:40 +08:00
ApsisRS contributors a4f5a30aa9 docs: bilingual comments for the benchmark examples 2026-10-02 01:54:29 +08:00
ApsisRS contributors 2190e1f81f docs: bilingual comments for the integration examples 2026-10-02 01:53:47 +08:00
ApsisRS contributors d911a4bb0a docs: bilingual comments for the dump examples 2026-10-02 01:52:26 +08:00
ApsisRS contributors 57316092eb docs: complete the bilingual module docs for the ops and sim layers 2026-10-02 01:51:22 +08:00
ApsisRS contributors b4f61085ce docs: bilingual module docs for the ops and sim layers 2026-10-02 01:49:32 +08:00
ApsisRS contributors 5e521a447b docs: bilingual module docs for the network layer 2026-10-02 01:49:08 +08:00
ApsisRS contributors 800a1b02f8 docs: bilingual module docs for the rf layer 2026-10-02 01:48:55 +08:00
ApsisRS contributors 7bb3138229 docs: bilingual module docs for the orbit layer 2026-10-02 01:47:49 +08:00
ApsisRS contributors c407739763 docs: bilingual module docs for the physics layer 2026-10-02 01:46:35 +08:00
ApsisRS contributors 4ac50e98d7 docs: bilingual module docs for the foundation layer 2026-10-02 01:45:27 +08:00
ApsisRS contributors 82a5a418a8 docs: bilingual comments for the validation tools
Also makes the table generators emit the bilingual module docs, so a
regenerated table matches the committed one.
2026-10-02 01:44:36 +08:00
ApsisRS contributors fd829e797f docs: bilingual comments for the CI workflow, manifests and scripts
Extends the checker to the module level `//!` docs, the tests, the
examples, and the non-Rust prose comments in the workflow, the manifests
and the shell and Python scripts.
2026-10-02 01:40:39 +08:00
ApsisRS contributors 26a21a23bd docs: bilingual comments for the IAU 2000 frames and Earth rotation
The Delaunay and planetary arguments, the precession, nutation, polar
motion and Earth rotation angles, and the TEME and terrestrial matrices.
This completes the bilingual sweep: every comment block in the workspace
now carries its Chinese counterpart.
2026-10-02 01:35:40 +08:00
ApsisRS contributors e9d4690858 docs: bilingual comments for the Delaunay arguments 2026-10-02 01:32:09 +08:00
ApsisRS contributors 5773399304 docs: bilingual comments for the antenna, doppler, interference and noise crates 2026-10-02 01:31:41 +08:00
ApsisRS contributors 3c432b9112 docs: bilingual comments for the link budget and antenna patterns 2026-10-02 01:29:47 +08:00
ApsisRS contributors cfe8d72bb2 docs: bilingual comments for the atmosphere attenuation models
The P.838 rain curves, the P.676 gaseous lines, the P.839 isotherm table
and the P.835 layered refraction.
2026-10-02 01:28:58 +08:00
ApsisRS contributors f3cf18df41 docs: bilingual comments for access, coverage, isl and routing
This completes the network layer.
2026-10-02 01:26:58 +08:00
ApsisRS contributors 295ba16d0d docs: bilingual comments for the access finder and pass summary 2026-10-02 01:25:53 +08:00
ApsisRS contributors 5857c44492 docs: bilingual comments for mesh and routing 2026-10-02 01:25:10 +08:00
ApsisRS contributors c442acc6e5 docs: bilingual comments for handover and topology 2026-10-02 01:24:45 +08:00
ApsisRS contributors 891fe0b37b docs: bilingual comments for the simulation layer
The event queue and identifiers, the output records and trace, the scenario
build and parse, and the run facade, including the plain comments inside
the functions.
2026-10-02 01:23:34 +08:00
ApsisRS contributors 30c9a348c3 docs: bilingual comments for the decibel and gain scales 2026-10-02 01:16:30 +08:00
ApsisRS contributors 99807cb5e6 docs: bilingual comments for the error types, links and mesh
The error modules across the remaining crates share a shape, so one table
covers them all. Also the inter-satellite link geometry and the mesh
connectivity analysis, including the Menger and Kosaraju notes.
2026-10-02 01:14:59 +08:00
ApsisRS contributors e41e2c77bb docs: extend the bilingual sweep into routing, topology, access and rf
A translation table for the sentences that recur across the error types
and the simple accessors let the same wording be applied everywhere at
once, which both keeps the Chinese consistent and covers a hundred and
twenty-nine sites in a single pass. Routing, topology, access and the radio
frequency crates are now part of the sweep.
2026-10-02 01:10:40 +08:00
ApsisRS contributors 7e71b6d6ca docs: bilingual comments for apsis-scheduler
The layer is complete at three hundred and sixty two blocks across the
resource, task, schedule, conflict and scheduler crates, including the
swept search and the improvement pass.
2026-10-02 01:06:17 +08:00
ApsisRS contributors bbd3cb0c3f docs: bilingual comments for apsis-conflict 2026-10-02 01:04:12 +08:00
ApsisRS contributors 175abb3f68 docs: bilingual comments for apsis-schedule 2026-10-02 01:03:18 +08:00
ApsisRS contributors 0a221e23b7 docs: bilingual comments for apsis-task 2026-10-02 01:01:36 +08:00
ApsisRS contributors f26a90bc96 docs: bilingual comments for apsis-resource
Seventy-five comment blocks across the error kinds, the resource model
and the window algebra. The English is unchanged and the Chinese follows
under a blank doc line, as the glossary sets out.
2026-10-02 01:00:22 +08:00
ApsisRS contributors 5c11b60069 docs: bilingual comments for the foundation, physics and orbit layers
Applies the glossary across apsis-math, apsis-time, apsis-leap,
apsis-coord, apsis-geodesy and the five orbit crates that were already
implemented, plus apsis-ephemeris, apsis-maneuver and apsis-orbit. Five
hundred and seven comment blocks now carry the English paragraph and the
Chinese one.

The checker learned to skip a comment that is only a formula, since a bare
symbol has no prose to translate and repeating it in Chinese would be noise.
The SGP4 cross-check still passes, so nothing in the numerical path moved.
2026-10-02 00:53:42 +08:00
ApsisRS contributors 64114251fa docs: bilingual comments for time, leap, coord and geodesy
Four of the five physics crates are done, 104 of 239 blocks in the layer.
The remaining one is apsis-frames, which holds the IAU 2000 Earth
orientation models and carries the largest number of formulas.
2026-10-02 00:37:03 +08:00
ApsisRS contributors f76bf654df docs: finish the foundation layer of the bilingual sweep
All 180 comment blocks across apsis-core, apsis-units and apsis-math now
carry both languages. The checker confirms no mangled bytes and no English
word left inside a Chinese sentence, two mistakes that occurred while
writing them and are now caught mechanically.
2026-10-02 00:33:19 +08:00
ApsisRS contributors d9a934128a docs: start the bilingual sweep with the foundation layer
apsis-units and apsis-core are done, 86 of 180 comment blocks in the
layer. The checker in scripts/check-bilingual.py reports which blocks still
lack Chinese, and also catches the two mistakes that are easy to make while
adding a language: a mangled byte sequence, and an English word left inside
a Chinese sentence, which is what happened once in quantity.rs and is now
caught mechanically.

Translations keep terms that have a standard Chinese name in Chinese and
leave proper nouns, abbreviations and method names in English, as the
glossary sets out. The English text is never reworded.
2026-10-02 00:28:22 +08:00
ApsisRS contributors fd847a9669 docs: describe the notation at the precision it uses
The comment said the inclination was rounded to one decimal place, but
the format prints it at full precision, so 53.25 degrees came out intact
where the comment promised 53.2. The notation is an identifier, so
truncating it would lose information for nothing.
2026-10-02 00:19:37 +08:00
ApsisRS contributors 072b5c90db docs: make the constellation comments bilingual
The first crate of the sweep, so the layout can be checked before the
remaining forty. English paragraph, empty doc line, then the Chinese, per
the glossary. Terms with a standard Chinese name use it directly, so
semi-major axis reads 半长轴 rather than carrying the English each time;
Walker, SGP4 and the frame abbreviations stay as they are.

Every comment block in the crate now has both languages, the Display
strings are untouched because translating them would change what a program
prints, and the three formulas the comments state were checked against the
code: the phase offset is 2 pi f / t, the plane spacing 2 pi / p, and the
anomaly spacing 2 pi / (t / p), all of which match.
2026-10-02 00:17:21 +08:00
ApsisRS contributors 4e69a0123a fix: reject an unordered sample sequence in the access search
The search binary searches the sample list to interpolate between the two
samples that straddle a crossing, and a binary search over an unordered
list returns a wrong index instead of failing. Only the first and last
times were checked, so a sequence whose ends were in order but whose
middle was not refined each crossing against the wrong pair of positions
and reported a pass that never happened. On a circular ground track,
shuffling two samples changed the result from three passes to two and
still returned Ok.

The whole sequence is now checked, with a new UnorderedSamples error kind
that says which pair is out of order. The test covers the middle-of-
sequence case that the end check missed.

Two comments also described something other than what the code does, and
two Option-returning accessors did not say what makes them None:

- GravityModel::x2o3 is the constant 2/3, used as an exponent in the
  mean motion and drag corrections, not 2 * xke^2 as its comment claimed;
  the sgp4 reference implementation uses the same constant the same way.
- WalkerPattern::plane_spacing and phase_offset returned None without
  saying so, which is the case a caller has to handle.

Both READMEs claimed twelve expect sites where there are thirteen, because
apsis-math/src/parallel.rs added one and the count was not carried over.
2026-10-02 00:03:22 +08:00
ApsisRS contributors 472a052cfb scheduler: read placed demands through the shared index
The confirmation that follows the sweep called the public feasibility
test, which scans the task list once to collect the boundaries and again,
per boundary, to sum the demand of every covering placement. That is
quadratic per task and dominated the search: removing the confirmation
alone cut the crowded case by eight, which located the cost.

The index built for the sweep is now passed into that test, so both the
boundary collection and the demand sum read a task by its identifier
instead of searching for it. The public entry point keeps its signature
and builds the index for a caller that has none.

Planning three thousand two hundred mutually contending tasks falls from
6.7 seconds to 0.48, and the plans are identical: the check compares the
start time and end of every placement, before and after, across two
resources with disjoint availability windows.
2026-09-30 18:57:18 +08:00
ApsisRS contributors 5da069e966 scheduler: find the earliest start from a swept busy profile
The search listed every time feasibility could change and tested each in
turn, which recomputed the load profile of every resource once per
candidate. The profile does not depend on the candidate, so it is now
swept once: the intervals where a resource has no room are cut from its
availability windows, and the earliest surviving start is read off the
front. The result is confirmed with the direct test and the enumeration is
kept as the fallback, so the sweep is an accelerator and never a second
definition of what is feasible.

The demand of a placed task is read through a vector indexed by task
identifier rather than by scanning the task list or by hashing, because the
identifier is a small dense integer and an array index beats both. Two
thousand random scenarios confirm the two forms agree exactly.

On the crowded case, where every task competes for one resource and the
capacity is the binding constraint, planning three thousand two hundred
tasks falls from 6.7 to 3.7 seconds.
2026-09-30 18:54:03 +08:00
ApsisRS contributors f0f6e54fbe docs: record the parallelism decision, interfaces, and measurements
The choice of which loops to thread follows the cost of one item and the
size of the batch, and the note records both ends: the propagation that
gains five fold over a month and barely gains over a day, and the
visibility sweep that is slower in parallel below a few hundred satellites
because a single test costs a few nanoseconds. The interfaces say the same
thing, so a caller knows when to reach for them.
2026-09-30 18:43:14 +08:00
ApsisRS contributors 11ca1956ae math, access: correct the parallel notes and a test's geometry
The parallelism note linked to a type the module does not import, which
rustdoc rejects, so it reads as plain text now. The access batch test
computed a propagated state it did not use; it now takes the shell radius
from it so the track sits at a realistic altitude.
2026-09-30 18:40:49 +08:00
ApsisRS contributors cf0070a5e5 isl: record where the threaded visibility sweep pays and where it does not
A single visibility test costs a few nanoseconds, so the thread start up is
only repaid by a large matrix. Measured on sixteen cores the parallel form
gains from a few hundred satellites and loses below that, so the note says
so and points a small shell at the sequential form.
2026-09-30 18:39:10 +08:00
ApsisRS contributors 7e792d4b5d isl: decide every link of a constellation across several threads
Building a topology asks the same geometry question for every pair of
satellites, which is a quadratic number of independent tests, and that loop
is the dominant cost of the construction. The parallel form returns the
same row major matrix in the same order as the sequential one.
2026-09-30 18:38:04 +08:00