Contribute computing

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.

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.