Overview🔗
The overset framework is a generic implementation of overset (also referred to as Chimera) meshes, for both static and dynamic cases. Cell-to-cell mappings between multiple, disconnected mesh regions are employed to generate a composite domain. This permits complex mesh motions and interactions without the penalties associated with deforming meshes, for single- and multiphase flows.
How does it work?🔗
Consider the following 2-D case from the tutorials:
The mesh comprises three regions; the background mesh:
and two rotors:
combined to give:
Various concepts are used:
- Donor cells : cells that provide values
- Acceptor cells : these are the cells whose value gets set from interpolation
- Hole cells : unreachable/inactive cells
- Mesh zone : indicator field to denote potentially overlapping mesh regions
- Overset patches : patch type next to cells that are to be interpolated
The mapping determines which parts of the mesh are:
- solved, calculated;
- interpolated from solution cells, interpolated; and
- not used, holes.
For the twoSimpleRotors
case, the background mesh yields:
where the colours correspond to:
- blue: calculated
- white: interpolated
- red: blocked (holes)
Usage🔗
The case must have at least one patch of type overset
; ideally this is the
first patch. As a constraint
type, it will automatically assume a boundary condition type overset
when
including the default set-up file in the boundaryField
section of the field
files:
#includeEtc "caseDicts/setConstraintTypes"
Any cells on the outside of the mesh that require interpolation should be on
this patch. Set the mesh type to dynamicOversetFvMesh
in the
dynamicMeshDict
file (located in the constant
directory)
dynamicFvMesh dynamicOversetFvMesh;
solver displacementLaplacian;
displacementLaplacianCoeffs
{
diffusivity uniform 1;
}
Generate a 0/zoneID
volScalarField
indicating the mesh zone
not to be confused with cellZones
This field can usually be generated using standard OpenFOAM
tools, e.g. topoSet, setFields. It should start at 0
and be consecutively numbered. There is no limit to the number of zones.
In the fvSchemes dictionary select the relevant overset interpolation method and which additional variables should be included. By default, all solved-for variables and some solver-specific fields use overset interpolation.
oversetInterpolation
{
method inverseDistance;
}
If necessary adapt the wall distance calculation to a continuous method,
e.g. Poisson
, advectionDiffusion
. The default meshWave
method does not walk
through the overset interpolation.
Update the solver to an asymmetric variant in the fvSolution dictionary (the matrix resulting from interpolation is asymmetric). All asymmetric solvers except from GAMG are supported. In practice a good choice is the smooth solver with symGaussSeidel smoother for transport equations (U, k, etc.) and PBiCGStab with DILU preconditioner for elliptic equations (p, yPsi).
Further information🔗
Source code: