Orrery
A GPU-accelerated N-body gravitational simulator
Loading...
Searching...
No Matches
adr Directory Reference

Detailed Description

Architecture decision records

Short numbered documents recording the decisions behind Orrery's design, each with its context, the alternatives that were rejected, and what follows from the choice.

An ADR is written when a decision has a credible alternative that a reviewer might reasonably have expected instead. It is never edited after it is merged; a decision that changes is recorded in a new ADR that supersedes the old one.

To add one, copy 0000-template.md, take the next free number, and link it from the table below and from the pull request that introduces it.

Number Title Status
0001 Record architecture decisions Accepted
0002 Pin dependencies to exact commits fetched at configure time Accepted
0003 Carry build settings on interface targets rather than global flags Accepted
0004 Store particles as one array per component Accepted
0005 Allocate particle arrays on cache-line boundaries Accepted
0006 Select the scalar precision when the project is configured Accepted
0007 Work in units where the gravitational constant is one Accepted
0008 Share one softening definition between the solver and the diagnostics Accepted
0009 Generate the random distributions in the project rather than with the standard library Accepted
0010 Give initial conditions their own layer Accepted
0011 Prefer a symplectic second-order integrator to a non-symplectic fourth-order one Accepted
0012 Give the integrators an abstract acceleration field of their own Accepted
0013 Carry the acceleration between steps as an interface invariant Accepted
0014 Give the force solvers an interface of their own above the acceleration field Accepted
0015 Compute every pair from both ends rather than applying Newton's third law Accepted
0016 Balance the threads dynamically by stealing ranges Accepted
0017 Thread the solver through an executor it does not own Accepted
0018 Compile the vector kernel apart and choose it at run time Accepted
0019 Report the median with its dispersion, and measure the throttling Accepted
0020 Keep the arithmetic IEEE and measure what vectorising changed Accepted
0021 Sort a copy of the configuration rather than the caller's particles Accepted
0022 Rebuild the tree on every force evaluation Accepted
0023 Open a cell on the distance to its centre of mass, corrected for where that is Accepted
0024 Make quadrupole moments an option that is off by default Accepted
0025 Write the GPU backend in SYCL Accepted
0026 Put the GPU behind the solver interface, not behind the executor Accepted
0027 Stage particle data into the solver's own shared allocations Accepted
0028 Build the tree on the host and walk it on the device Accepted
0029 Mask the accepted cells rather than descending together Accepted
0030 Send the node array to the device narrowed rather than transposed Accepted
0031 Define a configuration format rather than adopting one Accepted
0032 Store the whole state in a checkpoint, accelerations included Accepted
0033 Keep the trajectory and the checkpoint apart Accepted
0034 Draw with OpenGL 3.3 through GLFW Accepted
0035 Resolve the OpenGL entry points by hand Accepted
0036 Tone map exported frames on the host Accepted
0037 Write frames as PPM and leave the encoding to an external tool Accepted
0038 Sample the galaxy as a scenario rather than as an equilibrium model Accepted
0039 Bind to Python with pybind11 Accepted
0040 Expose the component arrays rather than arrays of triples Accepted
0041 Give a running simulation's state a read-only type of its own Accepted
0042 Package the whole project from the repository root Accepted
0043 Generate the site with the tool that generates the reference Accepted
0044 Write the validation report rather than generating it Accepted
0045 Keep the browser client in this repository Accepted
0046 Put the renderer's device behind one interface Accepted
0047 Decode trajectories off the main thread Accepted
0048 Read the diagnostics the run wrote Accepted
0049 Put the run and the moment in the address Accepted