sypherically symmetric Lagrangian radiation-hydrodynamics solver written in C++
Currently, athelas
solves the 1D Lagrangian equation of non-relativistic hydrodynamics using a discontinuous Galerkin scheme. It includes planar geometry and spherical symmetry.
It will be extended to special relativistic hydrodynamics.
Future work will include two-moment radiation transport, a Saha ionization solver, and appropriate stellar equation of state.
We use Kokkos for shared memory parallelism.
Currently, most significant data structures use Kokkos::Views
and loops are parallelised with Kokkos
.
More work to port other parts of the code.
We use toml++ for parsing input files in the for parsing input files in the .toml
format.
athelas
uses submodules to include dependencies.
The best way to get the source is the following
git clone --recursive git@github.com:AstroBarker/athelas.git
athelas
is built using cmake
. From the root directory of athelas
, run the following:
mkdir build && cd build
cmake ..
cmake --build .
As a temporary fix for Ubuntu CI, we need to pass a MACHINE
flag.
On Mac we support -DMACHINE=MACOS
,
Ubuntu supports -DMACHINE=UBUNTU
(primarily because the CI fails to find lapacke.h
unless we hold its hand and this is how we do that, for now.)
This places the executable in the build
dir.
The build system may not be perfect yet. Your mileage may vary.
We use clang format
and ruff
for code cleanliness.
Rules are listed in .clang-format
.
The current version of clang-format
used is 19.1.0.
Simply call tools/bash/format.sh
to format the .hpp
and .cpp
files.
Python code linting and formatting is done with ruff
.
Rules are listed in ruff.toml
.
To check all python in the current directory, you may ruff ..
To format a given file according to ruff.toml
, run ruff format file.py
.
Checks for formatting are performed on each PR.
- LAPACKE
- HDF5
- Kokkos (avialable as a submodule)
- TOML++ (submodule)
Hopefully lapacke
won't be necessary forever, but at present it is needed for initializing the quadrature.
I find that, on Arch Linux systems, lapack
, lapacke
, and openblas
is sufficient for all lapacke
needs.
- Grey M1 radiation [WIP]
- implicit update
- overhaul microphysics
- Relativistic hydro
- Gravity
- Multigroup radiation
- 1.5D Non-relativistic MHD
- Adjust numerical fluxes for 1D MHD
- function naming overhaul
- class accessor refactor
- kokkos parallel slope limiter
- Rename values in hdf5 output...
- nNodes > order, crash when SlopeLimiter applied.