Skip to content
Ben Prather edited this page Sep 4, 2024 · 15 revisions

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.

Usage

"The world moves on, another day, another drama, drama/But not for me, not for me, all I think about is KHARMA" -- Taylor Swift

Building KHARMA

Running KHARMA

Input Parameters

Handling Output

Development

"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:

  1. Use of Kokkos
  2. Use of Parthenon
  3. 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 get a fair idea of where to start with KHARMA, though I might also recommend reading (2) as it has brief descriptions of KHARMA's packages and approach to modularity, over and above generic Parthenon usage.

Lore

Finally, this wiki will grow pages covering specific background information and troubleshooting tips as necessary. Currently:

  1. C++ background info
  2. Common problems with Kokkos when writing KHARMA-style code
Clone this wiki locally