An AMR All-Speed Projection Algorithm in Proto
In this study, we examine the all-speed projection approach to computational gas dynamicsin the low-Mach limit. This limit is characterized by slow, non-stiff advective flow accompanied by fast, stiff acoustic motions. The all-speed projection method uses a Helmholtz projection to derive redundant equations in the stiff variables: pressure and potential velocity. The resulting equations are discretized using a high-order finite-volume method and integrated in time using a method of lines formulation and an implicit-explicit (IMEX) additive Runge-Kutta (ARK) method. The all-speed projection approach differs from the “zero-Mach” approach of deriving equations of motion in the asymptotic limit as the Mach number becomes small. The zero-Mach strategy yields a differential/algebraic system which is difficult to manage and also explicitly forbids simulation of acoustic waves.
We introduce adaptive mesh refinement (AMR) to the existing all-speed projection algorithm. In so doing, we needed to address a number of challenges. Previous AMR multigridmethods took advantage of simplifications in order to make use of residual correction multigrid. We have instead used the Full Approximation Scheme (FAS) version of multigrid in our AMR framework. Doing so gives the framework more flexibility, allowing us to solve more complicated operators with inhomogeneous boundary conditions.
Previous AMR frameworks have been written using C++ for high level abstractions, andwith Fortran used to implement single patch operators. This approach is not productive because Fortran is not an expressive language for representing high-level mathematics and manually programming with low-level abstractions does not scale well with current trends in scientific computing. In light of these observations, we have written our AMR framework mostly from the ground up using Proto, a new C++ embedded domain-specific language for high-performance computing. This study represents the first AMR application written using Proto