CreatePatch
From OpenFOAMWiki
Contents |
1 Name
createPatch - Utility to create patches out of selected boundary faces. Faces come either from existing patches or from a faceSet.
2 Synopsis
createPatch [OPTIONS]
3 Description
Create patch from patch or faceSet. The parameters are read from a dictionary system/createPatchDict. The example shipped with the source code (in $FOAM_UTILITIES/mesh/manipulation/createPatch/createPatchDict) is reproduced below.
More specifically it:
- Creates new patches (from selected boundary faces). Synchronise faces on coupled patches.
- Synchronises points on coupled boundaries
- Remove patches with 0 faces in them
-overwrite
- Overwrite the existing mesh files
-parallel
- Run the utility in parallel
-roots "(DIR1 [...DIRN])"
- Directories through which the data are distributed
-region NAME
- Specify a mesh region by its "NAME"
-case DIR
- Execute the command on the case directory DIR. If not provided, use the current directory
-noFunctionObjects
- Skip the execution of the functionObjects
-help
- Display the help and exit
This utility is used in the following tutorials:
- combustion/fireFoam/les/oppositeBurningPanels
- combustion/fireFoam/les/smallPoolFire2D
- combustion/fireFoam/les/smallPoolFire3D
- incompressible/pimpleDyMFoam/propeller
- incompressible/pimpleDyMFoam/wingMotion
- incompressible/pimpleFoam/elipsekkLOmega
- lagrangian/reactingParcelFilmFoam/cylinder
- lagrangian/reactingParcelFilmFoam/rivuletPanel
- lagrangian/reactingParcelFilmFoam/splashPanel
4 createPatchDict description
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object createPatchDict;
}
// This application/dictionary controls:
// - optional: create new patches from boundary faces (either given as
// a set of patches or as a faceSet)
// - always: order faces on coupled patches such that they are opposite. This
// is done for all coupled faces, not just for any patches created.
// - optional: synchronise points on coupled patches.
// 1. Create cyclic:
// - specify where the faces should come from
// - specify the type of cyclic. If a rotational specify the rotationAxis
// and centre to make matching easier
// - always create both halves in one invocation with correct 'neighbourPatch'
// setting.
// - optionally pointSync true to guarantee points to line up.
// 2. Correct incorrect cyclic:
// This will usually fail upon loading:
// "face 0 area does not match neighbour 2 by 0.0100005%"
// " -- possible face ordering problem."
// - in polyMesh/boundary file:
// - loosen matchTolerance of all cyclics to get case to load
// - or change patch type from 'cyclic' to 'patch'
// and regenerate cyclic as above
// Do a synchronisation of coupled points after creation of any patches.
// Note: this does not work with points that are on multiple coupled patches
// with transformations (i.e. cyclics).
pointSync false;
// Patches to create.
patches
(
{
// Name of new patch
name cyc_half0;
// Dictionary to construct new patch from
patchInfo
{
type cyclic;
neighbourPatch cyc_half1;
// Optional: explicitly set transformation tensor.
// Used when matching and synchronising points.
transform rotational;
rotationAxis (1 0 0);
rotationCentre (0 0 0);
// transform translational;
// separationVector (1 0 0);
// Optional non-default tolerance to be able to define cyclics
// on bad meshes
//matchTolerance 1E-2;
}
// How to construct: either from 'patches' or 'set'
constructFrom patches;
// If constructFrom = patches : names of patches. Wildcards allowed.
patches (periodic1);
// If constructFrom = set : name of faceSet
set f0;
}
{
// Name of new patch
name cyc_half1;
// Dictionary to construct new patch from
patchInfo
{
type cyclic;
neighbourPatch cyc_half0;
// Optional: explicitly set transformation tensor.
// Used when matching and synchronising points.
transform rotational;
rotationAxis ( 0 0 1 );
rotationCentre ( 0.3 0 0 );
}
// How to construct: either from 'patches' or 'set'
constructFrom patches;
// If constructFrom = patches : names of patches. Wildcards allowed.
patches (periodic2);
// If constructFrom = set : name of faceSet
set f0;
}
);