Files
OpenFOAM-12/etc/templates/inflowOutflowRotating
Will Bainbridge f93300ee11 createBaffles: Simplified input syntax
This utility now always creates two patches, and only creates duplicate
faces when they connect to different cells and point in opposite
directions. Now that ACMI has been removed, there is no need to create
duplicate faces on the same cell and with similar orientations. This is
unituitive and is now considered an invalid mesh topology.

The preferred syntax for createBaffles is now as follows:

    internalFacesOnly true;

    baffles
    {
        cyclics
        {
            type        faceZone;
            zoneName    cyclicFaces;

            owner
            {
                name            cyclicLeft;
                type            cyclic;
                neighbourPatch  cyclicRight;
            }

            neighbour
            {
                name            cyclicRight;
                type            cyclic;
                neighbourPatch  cyclicLeft;
            }
        }
    }

Note that the 'patches' sub-dictionary is not needed any more; the
'owner' and 'neighbour' sub-dictionaries can be in the same dictionary
as the parameters with which faces are selected. For backwards
compatibility, however, a 'patches' sub-dictionary is still permitted,
as are keywords 'master' and 'slave' (in place of 'owner' and
'neighbour', respectively).

The 'patchPairs' syntax has been removed. Whilst consise, this syntax
made a number of assumptions and decisions regarding naming conventions
that were not sufficiently intuitive for the user to understand without
extensive reference to the code. If identical boundaries are desired on
both sides of the patch, dictionary substitution provides a more
intuitive way of minimising the amount of specifiection required. For
example, to create two back-to-back walls, the following specification
could be used:

    internalFacesOnly true;

    fields true;

    baffles
    {
        walls
        {
            type        faceZone;
            zoneName    wallFaces;

            owner
            {
                name            baffleWallLeft;
                type            wall;

                patchFields
                {
                    p
                    {
                        type            zeroGradient;
                    }

                    U
                    {
                        type            noSlip;
                    }
                }
            }

            neighbour
            {
                name            baffleWallRight;
                $owner; // <-- Use the same settings as for the owner
            }
        }
    }
2022-05-27 13:39:34 +01:00
..

Overview
========
+ Template case for rotating geometry flow with single inlet and outlet
+ Can be used for MRF or NCC simulations. Also supports AMI.
+ Setup to run the simpleFoam solver for MRF, pimpleFoam for NCC
+ The case is designed to be meshed with snappyHexMesh
+ snappyHexMesh is setup to use 3 trisurface files
  + fixed.obj: CAD of the stationary (external) geometry
  + rotating.obj: CAD of the rotating geometry
  + rotatingZone.obj: CAD of surface bounding the rotating region
+ Copy the *.obj files to the constant/geometry directory
+ The fixed.obj should contain an inlet and outlet region to create the relevant
  patches in the mesh

Background Mesh
===============
+ The blockMeshDict file contains a configuration for a cylindrical background
  mesh aligned along the z-axis
+ The mesh includes a core box-shaped block and inner and outer cylinders
+ The backgroundMesh subdictionary includes key geometric parameters of the mesh
+ The inner cylinder relates to the rotatingZone.obj
+ The outer cyliner relates to the external boundary, e.g. fixed.obj
+ Set the radii of inner and outer cylinders to ~2% larger than respective OBJ
  files
+ The background mesh can define the external boundary by uncommenting
  entries, e.g. inlet, in the boundary section of blockMeshDict
+ Set background mesh density with boxCells, inCells, outCells and zCells
+ Run blockMesh
+ NOTE: An alternative blockMeshDict-box file exists if the user wants a regular
  box-shaped background mesh, similar to set up in the inflowOutflow template

Features
========
+ Run surfaceFeatures to extract features for explicit feature capturing

Castellated Mesh
================
+ In the snappyHexMeshDict file, replace <inletPatch> with the name of the inlet
  region in the fixed.obj file, if it defines the external boundary
+ Replace <outletPatch> with the name of the outlet region
+ run snappyHexMesh to obtain a castellatedMesh
+ Review the mesh; modify refinement levels and regenerate the mesh as required
  (levels are set in refinementSurfaces and refinementRegions)

Snapped Mesh
============
+ In snappyHexMeshDict, set castellatedMesh off; snap on;
+ Run the snapping phase of snappyHexMesh
+ Review the mesh

Layers
======
+ To add layers to the mesh along wall boundary patches...
+ Switch on addLayers; switch snap off;
+ Run snappyHexMesh
+ The number of layers can be changed by modifying nSurfaceLayers

Initialisation
==============
+ In the field files in the 0 directory, set inlet values
+ For example, in 0/U, set the inlet velocity Uinlet
+ Set the viscosity in constant/transportProperties
+ Rotating properties are set in constant/rotatingZoneProperties
  + For MRF, this file is included from constant/MRFProperties
  + For NCC, this file is included from constant/dynamicMeshDict
+ Ensure settings are appropriate in controlDict, fvSchemes, fvSolution, for
  relevant simulation; for NCC, in particular, ensure that deltaT, ddtSchemes
  and relaxationFactors are set for transient simulation

NCC Simulation
==============
+ After the mesh is generated, the couple must be created at the boundary
  of the rotatingZone
+ createBaffles must first be run to generate two non-coupled patches from
  the faces in the faceZone bounding the rotatingZone, e.g. by
    createBaffles -overwrite
+ splitBaffles must then be run to duplicate the vertices shared by the
  non-coupled patches to enable them to move independently, e.g. by
    splitBaffles -overwrite
+ createNonConformalCouples must then be run to generate the couple patches
  required by NCC, e.g. by
    createNonConformalCouples -overwrite
+ To use AMI instead of NCC, the patches must be generated by createBaffles
  using a suitable configuration file, provided by createBafflesDict-AMI
    createBaffles -overwrite -dict system/createBafflesDict-AMI
  The interface is completed by running splitBaffles, see above