Consistent Results with Various Shock Capturing Options
The shock capturing schemes in Nektar++ have recently been updated. However, the solver still produces inconsistent results, and it is not clear if the shock capturing always works as intended. This issue tracks all the known inconsistencies, and the progress to fix them.
In Nektar++, there are two shock capturing options, the NonSmooth
and the Physical
option. The first option adds a Laplacian diffusion term to the RHS of the equations, whereas the second one adds some artificial viscosity to the physical viscosity. In both cases, the artificial viscosity is calculated based on a sensor, which is designed to detect shocks and/or under-resolved features.
At the moment, the focus is to make sure that the NonSmooth
and the Physical
option works as intended, regardless of sensor type. This implies that we want both options to invoke the right operators (Laplacian or added viscosity) and work consistently with the explicit and the implicit solver. Below is a checklist of options that we would like to verify (using the Modal
sensor):
-
NonSmooth
works correctly with:-
EulerCFE
[tests exist, AV invoked correctly] -
NavierStokesCFE
[update in separate branch, verify by comparing toEulerCFE
]
-
-
NonSmooth
is not invoked and a warning is raised with:-
EulerImplicitCFE
-
NavierStokesImplicitCFE
[currently used if LDG Diffusion is used, remove?]
-
-
Physical
works correctly with:-
NavierStokesCFE
[tests exist, AV invoked correctly] -
NavierStokesImplicitCFE
-
-
Physical
is not invoked and a warning is raised with:-
EulerCFE
-
EulerImplicitCFE
-
We have also noted that the values for the Sensor
and the ArtificialViscosity
which are exported to the solution file are different if we run the implicit or the explicit solver. Therefore, we want to ensure that the following options give the same results:
-
Value of Sensor
is the same in the output file for:-
NavierStokesCFE
andNavierStokesImplicitCFE
(both usingPhysical
+Modal
)
-
-
Value of Sensor
is the same during time integration for:-
NavierStokesCFE
andNavierStokesImplicitCFE
(both usingPhysical
+Modal
)
-
-
Value of ArtificialViscosity
is the same in the output file for:-
NavierStokesCFE
andNavierStokesImplicitCFE
(both usingPhysical
+Modal
)
-
Remaining things that we want to address:
-
Add option to specify Laplacian AV with the keyword " Laplacian
" -
Investigate bug when Physical
+Modal
+NavierStokesImplicitCFE
is used (Fatal: Level 1 assertion violation: m_muAv not set
) [fixed by updating AV inNavierStokesImplicitCFE::v_DoDiffusionCoeff()
] -
Fix so that we can freeze the update of the AV in the implicit solve -
Fix so that the option <I PROPERTY="Smoothing" VALUE="C0"/>
works (currently it segfaults on 3D Tets)