Skip to content

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 to Expansion2D::CreateMatrix (and Expansion3D::CreateMatrix)
  • Mimicing the GJP computations in VelocityCorrectionScheme for VCSImplicit as well as the GJP calls in ContField::HelmSolve to ContField::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 scheme VCSImplicit 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).
Edited by Henrik Wustenberg

Merge request reports