v2412: New and improved pre-processing

Improved createPatch utility

TOP

The utility createPatch has been extended to allow creating duplicate boundary faces for e.g. cyclicACMI creation. This can be used to create cyclicACMI connections between externally generated meshes.

A sample system/createPatchDict:

// Patches to create.
patches
(
    {
        //- Master side patch
        name            central_inlet_couple;
        patchInfo
        {
            type            cyclicACMI;
            nonOverlapPatch central_inlet_blockage;
            neighbourPatch  inlet_central_couple;
        }
        constructFrom patches;
        patches (central_inlet);
    }
    {
        //- Blockage
        name            central_inlet_blockage;
        patchInfo
        {
            type            wall;
        }
        constructFrom patches;
        patches (central_inlet);
    }

    {
        //- Slave side patch
        name            inlet_central_couple;
        patchInfo
        {
            type            cyclicACMI;
            nonOverlapPatch inlet_central_blockage;
            neighbourPatch  central_inlet_couple;
        }
        constructFrom patches;
        patches (inlet_couple);
    }
    {
        //- Blockage
        name            inlet_central_blockage;
        patchInfo
        {
            type            wall;
        }
        constructFrom patches;
        patches (inlet_couple);
    }
);

Note: the cyclicACMI patch to-be-created should not exist prior to execution of createPatch.

Tutorials

Source code

Merge request

Improved snappyHexMesh: buffer layers before snapping

TOP

Buffer layers can now be added to the mesh before snapping, and the snapping algorithm is now user selectable.

Selection of adding buffer layers and using mesh motion functionality is activated using a new top-level entry in the snappyHexMeshDict:

// Type of mesh generation:
//  - castellated (default)
//  - castellatedBufferLayer
type            castellatedBufferLayer;

Buffer layer addition applies to all meshed patches; optionally it can be overridden per surface using the addBufferLayers keyword:

refinementSurfaces
{
    sphere
    {
        // Surface-wise min and max refinement level
        level (1 1);
        // Disable buffer layers
        addBufferLayers false;
    }
}

Selection of the mesh motion solver to use during snapping:

snapControls
{
  ..
  solver  displacementPointSmoothing;
  displacementPointSmoothingCoeffs
  {
      // Use laplacian to untangle problem areas
      pointSmoother           laplacian;
      nPointSmootherIter      10;
  }

The image below shows a single layer of buffer cells added to the outside of a rotated box where cells are coloured according to the cell index:

The second example shows how adding buffer layers can help snapping to a faceZone, keeping both inside and outside regions. Here, the cells are coloured according to non-orthogonality:

Note that buffer layers do not (yet) take feature edges into account.

Tutorials

Source code

Merge request