OpenFOAM® v1812: New and improved numerics

OpenFOAM® v1812: New and improved numerics

20/12/2018

Extended overset mesh functionality

This release includes general improvements to the pressure-velocity coupling for dynamic overset cases, related to the solvers:

  • overRhoPimpleDyMFoam
  • overPimpleDyMFoam
  • overInterDyMFoam

Evaluation of the fluxes on faces that change from ’masked’ to ’calculated’ due to the mesh motion has been revised. Here, the flux from the previous iteration needs to be properly updated to advance the balance equations of the current step. This is achieved using interpolated values on the new calculated cells—similar to the approach used by all single-region dynamic mesh solvers in OpenFOAM for mesh motion.

This leads to a more realistic pressure-time evolution, as shown below for the twoSimpleRotors test case:

[Picture] [Picture]

Another improvement addresses when a ’masked’ cell becomes ’calculated’ in a single time step, new cell initial values are now interpolated from donor cells. This allows an increase in the the Co number.

In previous releases the code would interpolate (from donor to acceptor cells)

  • any field after being solved for
  • any field mentioned in the oversetInterpolationRequired table. This table would be populated by the top-level solver and e.g. contain p, U

In this release if the code detects the new oversetInterpolationSuppressed keyword it will interpolate all fields except for those in the oversetInterpolationSuppressed table. This greatly improves the numerics for more complex cases

Examples
$FOAM_TUTORIALS/compressible/overRhoPimpleDyMFoam/twoSimpleRotors

Dynamic refinement mapping improvements

The mapping algorithm for cell splitting from the Technische Universitat Darmstadt was integrated. See the add-ons repository for details. In addition to some bug fixes, the mapping relates to producing a better initial estimate for values on newly created faces during mesh refinement.

Each 2x2x2 splitting of a cell creates 12 new internal faces. In previous releases the field, e.g. flux, on these new faces was initialised from one of the faces of the unsplit cell. In this release the mapping interpolates from multiple faces and correctly accounts for flipped faces to give a better initial estimate.

[Picture]

Initial mesh, face values as coloured spheres - see here for more details

[Picture]

Cells split 2x2x showing newly created internal faces and values

Note: the mapping is specific for newly created faces. In earlier releases these were created as ’a copy of’ an original face. In this release they are generated ’out of nothing’ which gives the mapping code inside the mesh with automatic refinement (dynamicRefineFvMesh) the opportunity to do its own mapping.

Source code
$FOAM_SRC/dynamicFvMesh/dynamicRefineFvMesh/dynamicRefineFvMesh.C
$FOAM_SRC/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8/hexRef8.C
Examples
$FOAM_TUTORIALS/multiphase/interIsoFoam/damBreakWithObstacle