Odisseo documentation#
Introduction and Installation#
odisseo differentiable direct Nbody written in JAX.
Written in JAX, Odisseo is fully differentiable - a simulation can be differentiated with respect to any input parameter - and just-in-time compiled for fast execution on CPU, GPU, or TPU.
Particular importance is put in the choice of the simulation units and what checks can be run to see if the simulation underwent numerical errors as a post-processing strategy.
Distribution strategies are easily implemented to take full advantage of multi-device machines.
Installation#
odisseo can be installed by cloning the repo and then via pip
git clone https://github.com/vepe99/Odisseo.git
cd Odisseo
pip install .
Note that if JAX is not yet installed, only the CPU version of JAX will be installed
as a dependency. For a GPU-compatible installation of JAX, please refer to the
JAX installation guide.
Notebooks for Getting Started#
Self gravitating system
External Potentials
Roadmap#
Implement simple
initial_conditions(two body, self gravitating Plummer sphere )Implement units conversion
Implement gradient through the
time_integrationImplement diffrax backend for integrators
Implement sphere sky projection
Implement key
external_potentialfor disrupted dwarf galaxies scenarios (Navarro-Frank-White halo, Miyamoto-Nagai disk)Multi gpu parallelization
Implement adaptive time stepping