I thought some might be interested in our (@tdzanic@fdw) recent works on shock-capturing. We have been looking at a class of techniques called invariant domain preserving (IDP) methods and looking at how these might be applied to FR to provide non-parametric shock-capturing with better resolution than other AV methods.
We started with a summation-by-parts type approach to defining subcell FR shock capturing and using analysis from IDP to give some strict stability properties without needing tunable parameters. This method is directly applicable to FR, although it has some cost associated with it. Check out our recent AIAA paper for more information https://doi.org/10.2514/6.2021-0496.
The second approach we have been looking at is what we’ve called Riemann Difference (RD). This is based on the staggered-grid spectral-difference method but modified to use an approximate Riemann solver to calculate the flux at the staggered points, thus adding some diffusion to the solution. We found that under a large number of circumstances this is sufficient to ensure stability of solutions with shock waves, but there seem to be some unavoidable edge cases where stability might be an issue. You can read more about this method in our preprint https://arxiv.org/abs/2011.06418
I’ll leave you with a still from a case looking at the Richtmyer–Meshkov instability solved with RD in a high modified version of PyFR.
Yes, very! I’ve just watched Tarik’s excellent April 22, 2021 presentation on sub-grid/pointwise shock capture. This seems like big news for PyFR’s explicit high order CNS, so I was wondering if there’s any news you can share about getting this feature to work with current pyfr::cns?
In this context of high-order shock capture, @WillT, a question about your “exact” Riemann solver:
In a current 2D circular cylinder test case, as we decrease viscosity, increase velocity and raise order, it gets increasingly interesting (necessary?) to work with the full set of characteristic waves. So I was wondering whether your exact solver might improve upon the alternatives {rusanov, hll, hllc, roe, roem, etc.}, especially when combined with sub-grid shock-capture.
Hi @nnunn, thank you! We’re currently working on extending the RD scheme (and some other shock capturing schemes we’re working on) to CNS and the MHD equations. We’re essentially taking the Strang-splitting approach in which we complete an inviscid step along with applying the shock capturing techniques then following it up with a regular viscous step. We’ve had some success so far running transonic compressor and turbine cascades. The main issue we run into (which is a problem with many other shock capturing schemes when trying to extend from Euler to CNS) is that the amount of numerical dissipation required to stabilize a shock is quite high whereas the amount needed to severely degrade the solution for high Reynolds number flows is proportionally very low. It requires taking some additional steps to ensure that the shock capturing scheme is applied only where necessary. Currently, we’re trying to increase the reliability of the schemes through the addition of some other shock sensing metrics and decrease the dependence on ad hoc parameter tuning, but we’re hoping to be able to consistently run some more practical problems over the next few months. The paper on the pointwise shock capturing approach is in the works and should be out soon as well.
Testing out various Riemann solvers you generally see Van Leer/Rusanov performing about the same and HLLC/Exact/Roe, perform about the same. This latter class of Riemann solvers is less dissipative and that is regarded as coming from using some knowledge about the structure of the Riemann fan. I also tested out L2 Roe on low-speed cases, but there wasn’t much difference in FR.
If you are solving with shocks and what provable invariant domain preserving properties, then you mathematically need Rusanov with a wavespeed that is a strict upper bound on the lambda_max. But for subsonic ILES, you really only want enough dissipation to be stable, and you don’t want adverse effects, such as turbulent bottlenecking, that are associated with higher dissipation Reimann solvers.