Close

17th February 2014

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).

U-nut-0030-0090

Source code

  • cyclicACMI classes
    $FOAM_SRC/finiteVolume/fields/fvPatchFields/constraint/cyclicACMI

Example

  • oscillating inlet
    $FOAM_TUTORIALS/incompressible/pimpleDyMFoam/oscillatingInletACMI2D