OpenFOAM 2.3.0: Arbitrary Mesh Interface
Non-Conforming AMI Patches
The arbitrary mesh interface (AMI) was introduced in OpenFOAM v2.1.0 to enable simulation across disconnected, adjacent, mesh domains. It is particularly useful for rotating geometries. Those cases require separate meshes for rotating and/or static regions of geometry, which are coupled at patch boundaries through the cyclicAMI
boundary condition.
In previous versions of OpenFOAM, there was a requirement that the patches conform fairly closely to one another. For complex geometries, this places demands on the meshing process, especially around features, e.g. cylindrical end-caps. In the AMI procedure, each face accepts contributions from partially overlapping faces from the neighbour patch, with the weights defining the contribution as a fraction of the intersecting areas. For each face, the sum of the weights (contributions) should equal 1. Where the patch geometries are not well matched, conservation errors are introduced and the sum of weights deviates from 1. Since errors are localised to particular faces, which are often few in number, this deviation should not cause the method to fail.
Therefore, in version 2.3.0 a zero-gradient condition can be applied to patch faces whose weights are below a user-specified threshold. This is controlled by the optional lowWeightCorrection
keyword in the mesh boundary file.
AMIPatch { type cyclicAMI; ... lowWeightCorrection 0.2; }
Example
- mixer vessel
$FOAM
_TUTORIALS/mesh/foamyHexMesh/mixerVessel
AMI Patches in Non-Planar Sector Geometries
In OpenFOAM, the cyclicAMI
boundary condition can be used to couple non-matching periodic boundaries in sector geometries. In previous versions of OpenFOAM, the coupling calculated a transformation automatically from the patch orientation, based on the assumption of planar patches. This version of OpenFOAM now supports non-planar patches, through the user specifying the rotation properties, as shown in the following example:
AMIPatch { type cyclicAMI; ... transform rotational; rotationAxis (0 1 0); rotationCentre (0 0 0); rotationAngle 30; // degrees }
Arbitrarily Coupled Mesh Interface (ACMI)
There are many cases where users may wish to couple patches that partially overlap with one another. In this version, a new cyclicACMI
patch type has been introduced to enable such coupling, by blending a cyclicAMI
patch with another patch type. For example, the other patch type could be a wall patch to make any non-overlapping boundary region a wall. In the case of wall patches, turbulence wall functions are updated appropriately as part of the blending. As with the cyclicAMI
patch, the cyclicACMI
functionality is fully parallel-aware and requires no special decomposition treatment.
The 2-D test case below shows a channel composed of two sections, where the upstream inlet channel (left) oscillates on the vertical axis. The oscillation amplitude takes the inlet channel beyond the extents of the main channel section, whereby the cyclicACMI
changes in behaviour from cyclicAMI
to wall
. The following sequence of images shows example predictions of the flow speed (left, range 0-3 m/s) and turbulent viscosity (right, range 0-0.02 m²/s) at 1.5s (top), 3.0s (middle) and 4.5s (bottom).
Source code
- cyclicACMI classes
$FOAM
_SRC/finiteVolume/fields/fvPatchFields/constraint/cyclicACMI
Example
- oscillating inlet
$FOAM
_TUTORIALS/incompressible/pimpleDyMFoam/oscillatingInletACMI2D