Experimental PDE solver in Julia – comparison of flux limiting schemes

Authors

  • Amir Farzin
  • Zahir Barahmand
  • Bernt Lie

DOI:

https://doi.org/10.3384/ecp192007

Keywords:

Partial Differential Equations, Finite Volume Method, High Resolution Scheme, Flux Limiting Method, Julia implementation

Abstract

Finite Volume Methods (FVM) are high quality methods for solving conservative/hyperbolic partial differential equations (PDEs). A popular class of high-resolution methods utilize a nonlinear combination of low order methods and high order methods via flux limiting functions. Another class of high-resolution methods is the class of weighted essentially non-oscillatory (WENO) schemes. Here, the focus is on flux limiting schemes. An experimental finite volume (FV) semi-discrete solver for systems of hyperbolic PDEs has been implemented in Julia, utilizing Julia’s DifferentialEquations.jl package for handling the time marching. A first order upwind formulation is used for the low order method, and a central second order formulation is used for the high order method. The PDE can be provided either in flux form, or in quasi-linear form. In the former case, automatic differentiation (AD) package ForwardDiff.jl is used to compute the Jacobians of the flux vector. Package LinearAlgebra.jl is used to compute the eigenspace of the Jacobians. The implementation allows for up to 3 internal/external coordinates. More than a dozen flux limiting functions are given, with the possibility of the users to write their own flux limiters. The implementation allows for user provided spatial discretization points, and source terms in the PDE. In this paper, we will compare various flux limiting schemes for PDEs with analytic solutions, and will also compare flux limiting schemes for a simple granulation model (layering). Possible extensions of the experimental implementation include: (i) higher order methods, (ii) more extensive support for boundary conditions, (iii) improved support for source terms.

Downloads

Published

2022-10-28