Natural events, such as the evolution of Earth's climate, are non-linear. Mathematically, we can model these non-linear processes with time dependent partial differential equations (PDEs) that take the form of conservative systems. Solutions of such non-linear conservation laws feature a broad range of phenomena like discontinuities, singularities, and turbulence. Though physically different, a common aspect of these solutions is a wide range of scales in space and time. Due to this multi-scale nature, no general framework for analytical solutions is available. However, knowledge of solutions to these problems is important for modern industries. Therefore, the numerical simulation of time dependent, non-linear conservation laws has emerged as a key technology.
My research focus is the design and analysis of numerical schemes that approximate the solution to hyperbolic PDEs, e.g., shallow water, compressible Euler, or ideal magnetohydrodynamic (MHD) as well as mixed hyperbolic-parabolic PDEs, e.g, compressible Navier-Stokes or visco-resistive MHD. In particular, my work develops high-order nodal discontinuous Galerkin (DG) numerical methods for linear and non-linear PDEs. With a special design, a particular flavour of DG scheme is created with discrete differentiation operators that satisfy the summation-by-parts (SBP) property. This is important because the DG approximation can then be constructed to conserve primary quantities, like the density, as well as incorporate auxiliary physical principles, like the second law of thermodynamics. Generally, this builds a DG framework that can discretize split forms of the governing PDEs at high-order. One example of a split form is the arithmetic mean of the conservative and advective form of an equation.
FLUXO - a numerical tool to solve linear and nonlinear advection diffusion equations
Apart from the derivation of numerical schemes, I also focus on high performance computing (HPC) aspects of DG methods. I am one of the head developers of an HPC implementation of the split form nodal DG framework called FLUXO. The FLUXO code is written in modern Fortran and is parallelized for CPU architectures with MPI.
From MATLAB to Fortran
Fortran is a programming language particularly useful for numerical analysis and scientific computing. Fortran's strengths are its ease handling array operations and translating mathematical formulations into algorithms. The syntax and program structure are very similar to MATLAB, but Fortran computations are orders of magnitude faster for complex problems, like those found in computational fluid dynamics.
I prepared an introductory document to present and teach modern Fortran coding techniques through example. In particular, this primer addresses practical steps for those who wish to move from coding in MATLAB to Fortran.