Deep Space Strategy · solmaps · Computation status · How solmaps works
Contribute computing
solmaps splits every computation into work units. You can compute an open unit, or recompute a finished one so that two independent runs back each published number.
Opening with data release v0.1. The commands below and the public contributions dataset on Hugging Face go live together with the first data release. This page already describes how it will work.
What you need
Docker, Git and about 6 GB of free disk space. To submit results you also need a free Hugging Face account and an access token with write permission. Everything else runs in the solmaps container, so your results come from the same libraries as everyone else's.
Five steps
git clone https://github.com/bhanneke/solmaps.git && cd solmaps make image # 1. build the container (once) docker run --rm -v "$PWD":/work -w /work solmaps-env:3 python -m contrib setup # 2. fetch the exact inputs docker run --rm -v "$PWD":/work -w /work solmaps-env:3 python -m contrib run screening # 3. compute an open unit docker run --rm -v "$PWD":/work -w /work solmaps-env:3 python -m contrib verify flyby-earth # 4. or verify a finished one docker run --rm -v "$PWD":/work -w /work -e HF_TOKEN=hf_… solmaps-env:3 python -m contrib submit # 5. send results and receipts
python -m contrib list shows every job with its units and how many of them already have one or two runs. Without a unit name, run picks an open unit and verify picks a finished unit with the fewest runs; both choose at random among the candidates, so two contributors rarely pick the same unit. To choose yourself, add the unit name, for example run flyby-other pluto-ceres-2031.
How verification works
Every run writes a receipt: a checksum of the result, a short summary, the code version and the versions of the numerical libraries. submit sends the receipts, and the results of first runs, as a pull request to the contributions dataset; the maintainers merge them after the checks below.
- Most jobs give the same numbers on every run.
verifyrecomputes the unit and compares it with the published result. Different processors and maths libraries round differently, so the comparison allows a small tolerance (10−6 km/s for the transfer data, 0.001 km/s for the screening); results outside it count as a disagreement and the maintainers look into them. - The flyby search uses an optimiser with random starts, so a second run never repeats the first exactly. It confirms a result when it finds an equally cheap or cheaper route for every sequence and window (within 0.05 km/s). A cheaper route improves the dataset.
- A unit counts as verified once two independent runs agree. The status page shows the count per job.
The jobs
Daily transfer options
One unit is every route from one of the 30 bodies: 29 routes, each for 27,089 departure days with flights up to 100 years. A unit takes a few hours on 8 processor cores. Unit names are the body names used by solmaps (earth, mars, 2 for Pallas, 617 for Patroclus and so on).
python -m contrib run transfers pluto
Catalogue screening
One unit is 2,000 objects of the JPL Small-Body Database, each against Earth, Mars and Ceres in both directions for every departure day to 2100. A unit takes about five hours on one core. Units 0000 to 0790; near-Earth objects come first.
python -m contrib run screening
Flyby search: returns to Earth and Mars
One unit is one pair and one two-year launch window, for example vesta-earth-2041. A unit takes about half an hour on 6 cores.
Flyby search from Earth
Units like earth-saturn-2033; about half an hour each.
Flyby search from Mars
Units like mars-ceres-2029; about half an hour each.
Flyby search from Saturn
Units like saturn-earth-2045; about half an hour each.
Flyby search for every other pair
The 841 pairs of the 30 bodies that no queue covers, each in 36 windows: 30,276 units, for example pluto-ceres-2031. This job runs only with contributors.
python -m contrib run flyby-other
Earth–Mars cyclers
One unit: the whole scan from 2027 to 2097.
Low-thrust atlas
One unit: an electric ship on every pair of the 12 sites and every two-year window.
Code under the MIT licence, data under CC BY 4.0. Questions go to the issue tracker.