OpenFOAM® v2012: New boundary conditions

23/12/2020

New ACMI patch scaling

The cyclicACMI boundary condition now provides an additional scaling factor to the interpolation weights that can be used to open and close cyclicACMI patches. The scaling can be any PatchFunction1. For example, to control a ’valve’ closing from time 0.2 to 0.3:

{
    type            cyclicACMI;
    neighbourPatch  central_bottom_couple;
    nonOverlapPatch bottom_central_blockage;

    // Optional scaling
    scale           table
    (
        (0.00   1.0)
        (0.20   1.0)
        (0.30   0.0)
    );
}

In the animation below the cyclicACMI is used with a variant of the TJunction tutorial to switch the flow between top and bottom outlets.

Under normal conditions any mesh motion triggers update of the patch geometry. For cyclicACMI this recalculates the geometric overlap between the local and neighbour coupled patches. This sets the amount of coupling via the mask, where a value of 1 is full coupled and 0 is fully non-coupled, and the weights for the coupled interpolation. The coupling factor is used to scale face areas such that combined coupled and non-coupled face area is correct. Specifying the additional scaling triggers:

  • saving the geometric face areas
  • checking at any access whether the scaling is up-to-date with the time
  • if not re-scale the face areas

The additional check against time means that the functionality can be used without mesh motion. Without the optional scaling the operation is bit-identical to previous versions.

Source code
$FOAM_SRC/meshTools/AMIInterpolation/patches/cyclicACMI/cyclicACMIPolyPatch
Tutorial
$FOAM_TUTORIALS/incompressible/pimpleFoam/RAS/TJunctionSwitching

Improved outlet mapped inlet

The outletMappedUniformInlet inlet boundary condition

  • averages the patch field of <Type> over a specified ”outlet” patch and uniformly applies the averaged value over a specified inlet patch.
  • optionally, the averaged value can be scaled and/or offset by a pair of specified values.

The outletMappedUniformInlet can be used to manipulate recirculating fields across patches. For example, a CO2 scalar field leaving through an outlet patch can be reintroduced from an inlet patch by scaling and offsetting.

A minimal example of this boundary condition can be seen below:

<patchName>
{
    type            outletMappedUniformInlet;
    outletPatch     <outletPatchName>;

    fraction        0.1;
    offset          10;    // (1 0 0);
    phi             phi;
}

The following set of images and videos show an example application of a simplified body breathing in a room where air is re-cycled across the outlet and inlet patches.

[Picture]

Source code
$FOAM_SRC/finiteVolume/fields/fvPatchFields/derived/outletMappedUniformInlet
Tutorial
$FOAM_TUTORIALS/lagrangian/reactingParcelFoam/airRecirculationRoom
Attribution
OpenCFD would like to thank Alseny Diallo (ESI Japan) for his contributions: the extensive testings, useful discussions, helpful suggestions, and preparation of various setups.