BaikalETK is an open-source
NRPy+-based BSSN thorn, which has been demonstrated to yield excellent agreement with
ML_BSSN when evolving BBHs and BNSs, and in certain cases (e.g., ADM mass volume integral over entire grid vs time in a pre-merged BNS simulation) better results than
BaikalETK is BSD 2-clause open-source licensed and available in the
NRPy+ github page (https://github.com/zachetienne/nrpytutorial). One can browse its source code & documentation with nbviewer: https://nbviewer.jupyter.org/github/zachetienne/nrpytutorial/blob/master/Tutorial-BaikalETK.ipynb
BaikalETK has the following neat features:
- The core BSSN kernel is generated by
SymPy, which is entirely free and open source, just like
BaikalETK. According to benchmarks by Erik,
BaikalETKruns more than 10% faster than the
ML_BSSNcurrently part of the Toolkit. Work is ongoing to improve
BaikalETK's performance even more.
- It is documented in a Jupyter notebook, which itself is linked to other Jupyter notebooks that document the BSSN formalism & gauge choices.
- It can be generated by either running the aforementioned Jupyter notebook or just importing a Python module within
NRPy+. The Jupyter notebook contains a self-validation test that will fail if the Python module is updated without a corresponding update to the Jupyter notebook.
- Its scheduling and general structure are closely based on the very nice
- It supports arbitrary finite-differencing order and a variety of gauge conditions, which can be extended further. It implements Brown’s covariant formulation of the BSSN equations.
- It supports as an option nonzero BSSN source terms, with appropriate linkage to
ML_BSSN, which (due to Mathematica licensing constraints and consistency with other monolithic thorns) needed to contain all gauge choices, finite difference orders, etc.,
BaikalETKwill only generate a BSSN thorn with a particular gauge and finite-differencing order chosen at the time of thorn generation. That is to say, choices about finite difference order, etc must be made prior to compile-time, which is not conventional at the moment.
BaikalETKis not a complete
ML_BSSNreplacement yet as:
BaikalETKdoes not yet support symmetries, but this should be rather straightforward to fix in an automated way, as
NRPy+requires information about gridfunctions and gridfunction symmetries.
BaikalETKdoes not support
Llamagrids, and I’m not sure the path forward in this sense