AutoRefineMesh

From OpenFOAMWiki

1 Name

autoRefineMesh - Utility to refine cells near to a surface.

Valid versions: OF Version 21.png

2 Synopsis

autoRefineMesh [OPTIONS]

3 Description

Refine cells near to a surface. The parameters must be specified in system/autoRefineMeshDict. The example shipped with the source code (in $FOAM_UTILITIES/mesh/advanced/autoRefineMesh/autoRefineMeshDict) is reproduced below.

-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


4 autoRefineMeshDict description

FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      autoRefineMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

// Surface to keep to
surface         "plexi.obj";

// What is outside. These points have to be inside a cell (so not on a face!)
outsidePoints   ((-0.99001 -0.99001 -0.99001));

//
// Selection of cells to refine
//

// If smallest edge of mesh > maxEdgeLen select all cut cells for refinement.
// If < maxEdgeLen select only those cut cells which are closer than curvatureDistance 
// to surface and with cos of angle between normals on surface < curvature.
maxEdgeLen          0.1;
curvatureDistance   1.0;
curvature           0.9;

// if > 0: Remove inside cells at every step. Inside is given by number of
// layers separating outside from inside.
// (note that we cannot remove outside cells since these contain the outsidePoints)
// Do not use this option if you want mesh to spill through a hole which is
// not visible on the coarsest level but only becomes visible after refinement
nCutLayers 2;

// Refine until smallest edge of mesh < minEdgeLen
minEdgeLen      0.1;

// Or until the number of cells would become more than (stops one level before this)
cellLimit       2500000;

//
// Selection of final set 
//

// Select based on side of surface. Usually select inside cells and project
// outwards or select outside cells and project inwards.
selectCut       false;
selectInside    false;
selectOutside   true;
// Leave out cell closer than nearDistance to the surface. 
// Usually 0.5*minEdgeLen. Set to -1 to disable.
nearDistance    -1;

// Some cells on the surface of the selected cells might have all their
// points on the 'outside'. These would get flattened when projecting so
// are either kept and refined (selectHanging) or removed from the set
selectHanging   false;

//
// Refinement parameters
//

// Type of coordinate system
coordinateSystem global;
//coordinateSystem patchLocal;

// .. and its coefficients. x,y in this case. (normal = tan1^tan2)
globalCoeffs
{
    tan1 (1 0 0);
    tan2 (0 1 0);
}

patchLocalCoeffs
{
    patch outside;  // Normal direction is facenormal of zero'th face of patch
    tan1 (1 0 0);
}

// List of directions to refine
directions
(
    tan1
    tan2
    normal
);

// refinement level difference between neighbouring cells. Set to large if
// there is no need for a limit.
splitLevel      2;

// Cut purely geometric (will cut hexes through vertices) or take topology
// into account.
geometricCut    false;

// Whether to use hex topology. This will never cut hex through vertices.
useHexTopology  yes;

// Write meshes from intermediate steps
writeMesh       true;

// ************************************************************************* //