Enable SVV and GJP stabilisation for VCSImplicit
Issue/feature addressed
GJP and SVV stabilisations for unresolved scales do not work with VCSImplicit.
Proposed solution
SVV can be enabled by giving ConstFactors to the Laplacian Key that is constructed within Expansion2D::CreateMatrix(mkey)
.
GJP requires an additional matrix construction similar to MassGJP
and HelmholtzGJP
which will be called LinearAdvectionDiffusionReactionGJP
.
Implementation
Two major changes:
- Adding new matrix type
LinearAdvectionDiffusionReactionGJP
toExpansion2D::CreateMatrix
(andExpansion3D::CreateMatrix
) - Mimicing the GJP computations in
VelocityCorrectionScheme
forVCSImplicit
as well as the GJP calls inContField::HelmSolve
toContField::LinearAdvectionDiffusionReactionSolve
Tests
Generalised tests for VelocityCorrectionScheme
to also test the variants VCSWeakPressure
and VCSImplicit
- 2D Kovasznay flow with SVV and VCSImplicit
- 2D Kovasznay flow with GJP and VCSImplicit/VCSWeakPressure
- 3D Kovasznay flow with GJP and VCSImplicit
Suggested reviewers
Spencer, Mohsen
Notes
- Added a new routine to compute
NormDerivOnTrace
(i.e. the Semi-Implicit GJP matrix operator) via GetLocMatrix() in order to use the matrixManager. This largely reduces cost for the implicit schemeVCSImplicit
where the GlobalLinSys is rebuild on every iteration.
Checklist
-
Functions and classes, or changes to them, are documented. -
User guide/documentation is updated. -
Changelog is updated. -
Suitable tests added for new functionality. -
Contributed code is correctly formatted. (See the contributing guidelines). [ ] License added to any new files.-
No extraneous files have been added (e.g. compiler output or test data files).