-
Notifications
You must be signed in to change notification settings - Fork 17
Home
This wiki provides instructions for building and running KHARMA, and documentation of the format of results. It also provides an overview of KHARMA implementation, and documents some common gotchas when developing with Kokkos and Parthenon.
"The world moves on, another day, another drama, drama/But not for me, not for me, all I think about is KHARMA" -- Taylor Swift
"tanquam ex ungue leonHARM" -- Johann Bernoulli, probably
The development documentation assumes some familiarity with GRMHD, for example from reading or running another HARM-based code. If you need an overview of GRMHD and the HARM algorithm, an excellent example is provided here. That wiki covers the equations being solved, and the general methods used to solve them, with references to the original papers where elements of the scheme are described. When describing KHARMA's approach, I will often compare and contrast with iharm3D
, or interchangeably iharm2d_v4
-- two extremely similar C-based implementations of HARM from this group, the latter with good introductory documentation.
There are three key elements specific to KHARMA, which new developers should be aware of so that they can read the code:
- Use of Kokkos
- Use of Parthenon
- Packages and overall code structure
- Conventions and approach
Reading these pages in order should be enough to get you started. Anyone who has developed Parthenon-based codes before can likely read just the page (3) and (4) and get a fair idea of where to start with KHARMA, though I might also recommend reading (2) as it has brief descriptions of some of KHARMA's wrappers for Parthenon functions and idiosyncratic usage of the framework.
Finally, this wiki will grow pages covering specific background information and troubleshooting tips as necessary. Currently: