Issue/feature addressed
The IProductWRTDerivBase
operator is not implemented for 3DH1D
or 3DH2D
settings. It is used in the IncNavierStokesSolver
for the EQTYPE
VCSWeakPressure
and required for VCSImplicit
(see !1475).
Proposed solution
Define the operator as virtual
in the ExpList
class and re-implement it in the child class ExpListHomogeneous1D
(the base class for all problems with one homogeneous direction).
Implementation
The function is based on the ExpListHomogeneous1D::PhysDeriv
and IProductWRTBase
implementation. It uses the 2D (PhysSpace) IProductWRTDerivBase
operator on individual m_planes
for the x- and y-direction. Subsequently, it adds the homogeneous derivative via a call to IProductWRTBase
, multiplies by the Fourier coefficient i \beta k and switches Real-Imaginary modes to account for multiplication by imaginary unit i.
Tests
- 3DH1D Kovasznay flow flipped on side i.e. pressure varies in (homogeneous) z-direction (- 3DH2D Kovasznay flow, should add this to ExpListHomogeneous2D for completeness)
Suggested reviewers
- Dave Moxey
- Spencer Sherwin
- Mohsen Lahooti
Notes
- The function is tested for
ContField
classes, however, not on the parent classesDisContField
.
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).