Piecewise-Polytrope Equation of State Support in IllinoisGRMHD
Leonardo (Leo) Werneck (a student currently working in my research group) recently documented much of
IllinoisGRMHD in Jupyter notebooks and worked with me to add piecewise-polytrope equation of state support to
IllinoisGRMHD. The code is open-source and available here:
In addition, the Jupyter notebooks may be browsed via nbviewer:
The updated code agrees to roundoff error with the original
IllinoisGRMHD when a single polytrope is chosen, and the central density vs time when evolving piecewise-polytrope TOV stars (we tried the APR4 piecewise-polytrope as described in Read et al.) converges to zero density drift a bit above 2nd order with increased resolution, just like in the single-polytrope case. Further, we have successfully evolved SLy piecewise polytrope BNS initial data through a couple orbits (so far).
One can generate the new piecewise-polytrope enabled
IllinoisGRMHD thorn family by cloning the above github repo and running the
generate_illinoisgrmhd_from_ipynb_files.sh script in that directory. The
IllinoisGRMHD/test directory contains some example parameter files.
Piecewise-Polytrope TOV Solver?
To perform the above piecewise-polytrope TOV tests, we needed a simple TOV solver with this capability (
TOVSolver only supports single polytropes). To address this problem, Leo extended a standalone,
numpy/Python-based piecewise-polytrope TOV solver that Phil Chang and I wrote, which can now build piecewise-polytropes (PP) from a large dictionary of PP EoSs. Most notably, the TOV system of ODEs remain in geometrized units, which makes them easier to read, and he wrote an EoS converter to rescale the CGS units to geometrized units where density = 1e15g/cm^3 = 1.0. The TOV solution file can be read into the Toolkit via the new
NRPyPlusTOVID thorn that we wrote.
We would be happy to contribute this solver & thorn to the Toolkit as well – more recently Leo wrote & validated a C version of the TOV solver so we wouldn’t even need the TOV solution data file from the Python solver.