Skip to content

Add IProductWRTDerivBase operator to ExpListHomogeneous1D

Henrik Wustenberg requested to merge feature/3DH1D-IProductWRTDerivBase into master

Issue/feature addressed

The IProductWRTDerivBase operator is not implemented for 3DH1D problems. It is used in the IncNavierStokesSolver for the EQTYPE VCSWeakPressure and required for VCSImplicit (see !1475 (merged)).

Proposed solution

Define the operator as virtual in the ExpList class and re-implement it in the child class ExpListHomogeneous1D (the base class one homogeneous direction).


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.


  • 3DH1D Kovasznay flow flipped on side i.e. pressure varies in (homogeneous) z-direction

Suggested reviewers

  • Dave Moxey
  • Spencer Sherwin
  • Mohsen Lahooti


  • The function is tested for ContField classes, however, not on the parent classes DisContField (Do we use 3DH1D with DisContField somewhere?)


  • 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