MHD Piecewise Linear Reconstruction

MHD Piecewise Linear Reconstruction

This week I started on the MHD piecewise linear reconstruction in the characteristic variables (PLMC). The steps I’ve completed are as follows:

  • Do some research on PLMC. See Stone et al. 2008 and Introduction to Computational Astrophysical Hydrodynamics by Michael Zingale.
  • Write a test for the current PLMC implementation
  • Refactor the PLMC kernel to use device functions and structs. It was originally written before CUDA supported device functions and so is a bit of a monolith. Now it’s much shorter and more modular. This potentially allows some code reuse with piecewise parabolic reconstruction.
  • Add MHD support. MHD support is a fairly simple extension is most places but the projection into and out of the characteristic variables is quite complex, much more so than in pure hydro.
  • Add MHD PLMC regression test

Additionally I consolodated all the basic utility functions for energy, pressure, etc into the hydro_utilities.h file. Now there are a series of functions there that work for hydro or MHD instead of having different versions in different headers.

Next week I plan on verifying correctness of PLMC and (hopefully) starting on parabolic reconstruction.

Automated Testing

Automated testing got merged in this week (PR #229) and promptly decided to not trigger builds on PRs from forks. I’ve contacted the CRC and hopefully they can resolve it soon.


  • Miscellaneous post MHD tweaks/fixes. See PR #277 for details
  • Fix another 7 clang-tidy checks. See PR #279 for details
  • Update website to v5.6.1
This post is licensed under CC BY 4.0 by the author.