OpenFOAM® v1712: New and improved pre-processing

31/12/2017

Integration of cfmesh

The cfmesh project is available as a component of OpenFOAM v1712, complementing the existing blockMesh and snappyHexMesh meshing utilities.

[Picture]

Source code
$WM_PROJECT_DIR/modules - see the cfMesh directory
Examples
$WM_PROJECT_DIR/modules - see the cfMesh/tutorials directory

Attribution
This project is the work of Franjo Juretic Creative Fields
Integration
The code has been integrated into OpenFOAM by OpenCFD as a new module

Improved checkMesh output

The checkMesh utility now generates additional reporting for face and cell zones. A typical output for cell zones is given below that shows the number of cells and points, and overall bounds:

Checking basic cellZone addressing...
    CellZone            Cells    Points    BoundingBox
    inlet               6000     7056      (-0.15 0 -0.025) (0 0.0353553 0.025)
    porosity            8000     9261      (-0.0353553 0 -0.025) (0.0707107 0.106066 0.025)
    outlet              8000     9261      (0.0353553 0.0707107 -0.025) (0.141421 0.176777 0.025)

Source code
$FOAM_UTILITIES/mesh/manipulation/checkMesh
Further information
Merge #142

Improved dictionary operation

OpenFOAM dictionaries have received many improvements to improve robustness and to provide more informative error messages, e.g.:

  • checks for ill-formed entries in dictionaries, e.g. if forgetting to include quotation marks when using regular expressions for field entries in the fvSolution file

    (U|k|epsilon)
    OpenFOAM would hang without providing any feedback (see Issue #510 ), whereas in v1712 it now reports:

    --> FOAM FATAL IO ERROR:
    Unexpected token encountered for U|k|epsilon|omega|f|v2 - on line 28: punctuation ')'

    file: tutorials/incompressible/simpleFoam/pitzDaily/system/fvSolution at line 28.

        From function static bool Foam::entry::New(Foam::dictionary&, Foam::Istream&, Foam::entry::inputMode)
        in file db/dictionary/entry/entryIO.C at line 262.

    FOAM exiting
  • improved handling of substitution - see Issue #429

Improved stitchMesh utility

The stitchMesh utility stitches two volumetric meshes by manipulating the interfacing faces to create topologically conformal interface.

Previously the utility was operated only via command line options, now it could be operated via a stitchMeshDict dictionary file.

In an argument-driven mode utility operates:

  • single stitch operation only
  • Match can be specified only by following options:
    • integral
    • partial
    • perfect

Driven by dictionary entry stitchMesh operates:

  • single or multiple stitch operations
  • Match type and the master-slave patches are specified in the dictionary given by -dict argument

Running utility with one or more arguments will result in backward compatible mode, without any argument, utility will read the dictionary stitchMeshDict

Example dictionary:

outerx
{
    match   partial; // partial | integral | perfect
    master  outerx;
    slave   innerx;
}

outery
{
    match   partial;
    master  outery;
    slave   innery;
}

outerz
{
    match   partial;
    master  outerz;
    slave   innerz;
}

[Picture]

Use of the utility is limited on situation with simple patches, as the only information processed are the faces, no edges or line elements are taken into the account.

Further user should make sure the stitched patches have no or very little (case sensitive) gap otherwise the algorithm will either result in sliver edges or too large deformation of the mesh.