Skip to content
Vedant Dhruv edited this page Nov 22, 2021 · 3 revisions

No HARM done?

HARM (High-Accuracy Relativistic Hydrodynamics) is a second-order, Godunov-type, shock-capturing scheme that evolves the governing equations of GRMHD (General Relativistic MagnetoHydroDynamics) on a stationary spacetime. Variables are zone-centered, fluxes are computed at zone faces using the LLF (local Lax-Friedrichs) fluxes and magnetic fields are kept divergence-free (to machine precision) using a flux-interpolated constrained transport (CT) scheme as outlined in Toth 2000.

In principle, the above two statements are sufficient to implement HARM. But if this is one's first encounter with GRMHD, it can prove to be daunting. This wiki hopes to provide a gentle introduction to HARM, and GRMHD in general. This includes:

  • A primer on the governing equations of GRMHD and the variables that are of interest.
  • The spacetime background and the geometry of the problem (Kerr in the case of accretion flows around rotating black holes).
  • The quasi-linear and conservative formulation of hyperbolic PDEs, and Godunov's scheme.
  • Primitives and conserved variables and how to go from one to another.
  • The Riemann problem: reconstruction and computing fluxes.
  • Flux-interpolated CT
  • Boundary conditions
  • Initial conditions for black hole accretion simulations

This wiki is by no means exhaustive and doesn't aspire to be. The pages on numerical techniques, in particular, are iharm-centric. The interested reader may find the following texts helpful: https://doi.org/10.1016/0021-9991(90)90233-Q, https://doi.org/10.1007/s10714-014-1839-3, https://doi.org/10.1023/A:1026256231021

The documentation here and that at the AFD-Illinois/docs should give the user a comprehensible view of the HARM algorithm, the coordinate systems available in iharm and the output.

iharm control flow

One can find the control flow in iharm here. If a vertex/node has more than one outgoing edge, the chronologically correct order is Red->Green->Blue->Black.

NOTE: The flow chart does not explicitly state all function calls and mention all source files that are called due to limited square footage but the hope is that the flow chart gives a birds-eye view of various steps in iharm and proves to be helpful to developers who wish to go in and make changes to the code in their local repo.