Documentos de Académico
Documentos de Profesional
Documentos de Cultura
snappyHexMesh
7th OpenFOAM Workshop
25 June 2012
info@engys.eu | Tel: +44 (0)20 32393041 | Fax: +44 (0)20 33573123 | www.engys.eu
Copyright 2012 Engys Ltd.
blockMesh
snappyHexMesh
Mesh Checks
checkMesh
blockMesh | Definition
Utility blockMesh is used to create simple block based
fully-structured hexahedral meshes
Controlled by dictionary constant/polyMesh/blockMeshDict
Each mesh block consists of 8 vertices and 12 edges in a fixed
order:
blockMesh | Usage
Define blockMeshDict Execute blockMesh
Execution:
blockMesh [-dict dictionary] [-case dir] [-blockTopology]
[-region name] [-help]
No parallel execution
Requirements:
blockMeshDict | Overview
Dictionary file consists of five main sections:
vertices Prescribe vertex locations for blocks
blocks Prescribe block topology and mesh settings
edges Prescribe curved edges
patches Prescribe surface patches for boundary
conditions
mergePatchPairs Merge disconnected meshed blocks
blockMeshDict | Headings
FoamFile
{
version
format
class
location
object
}
convertToMeters
2.0;
ascii;
dictionary;
"constant/polyMesh";
blockMeshDict;
1.0;
vertices
(
(0.0 0.0 -0.038)
(0.038 0.0 -0.038)
(0.076 0.0 -0.038)
(0.0 1.09 -0.038)
(0.038 1.09 -0.038)
(0.076 1.09 -0.038)
(0.0 2.18 -0.038)
(0.038 2.18 -0.038)
(0.076 2.18 -0.038)
(0.0 0.0 0.038)
(0.038 0.0 0.038)
(0.076 0.0 0.038)
(0.0 1.09 0.038)
(0.038 1.09 0.038)
(0.076 1.09 0.038)
(0.0 2.18 0.038)
(0.038 2.18 0.038)
(0.076 2.18 0.038)
);
File header
Keyword convertToMeters
Scale factor
Final mesh always in meters!
blockMeshDict | vertices
FoamFile
{
version
format
class
location
object
}
convertToMeters
2.0;
ascii;
dictionary;
"constant/polyMesh";
blockMeshDict;
1.0;
vertices
(
(0.0 0.0 -0.038)
(0.038 0.0 -0.038)
(0.076 0.0 -0.038)
(0.0 1.09 -0.038)
(0.038 1.09 -0.038)
(0.076 1.09 -0.038)
(0.0 2.18 -0.038)
(0.038 2.18 -0.038)
(0.076 2.18 -0.038)
(0.0 0.0 0.038)
(0.038 0.0 0.038)
(0.076 0.0 0.038)
(0.0 1.09 0.038)
(0.038 1.09 0.038)
(0.076 1.09 0.038)
(0.0 2.18 0.038)
(0.038 2.18 0.038)
(0.076 2.18 0.038)
);
blockMeshDict | blocks
blocks
(
hex
hex
hex
hex
);
(0
(1
(3
(4
1
2
4
5
4
5
7
8
3
4
6
7
edges();
Mesh grading
blockMeshDict | patches
edges();
patches
(
wall ffmaxy
(
(6 15 16 7)
(7 16 17 8)
)
wall ffminy
(
(0 1 10 9)
(1 2 11 10)
)
wall cold
(
(3 12 15 6)
(0 9 12 3)
)
wall hot
(
(2 5 14 11)
(5 8 17 14)
)
empty frontAndBack
(
(0 3 4 1)
(1 4 5 2)
(3 6 7 4)
(4 7 8 5)
(9 10 13 12)
(10 11 14 13)
(12 13 16 15)
(13 14 17 16)
)
);
mergePatchPairs();
blockMesh
snappyHexMesh
Mesh Checks
snappyHexMesh | Background
Utility snappyHexMesh was developed by Mattijs
Janssens, Eugene de Villiers and Andrew Jackson
Engys continue to develop a version with enhanced features
snappyHexMesh | Definition
Utility snappyHexMesh is used to create high quality hexdominant meshes based on arbitrary geometry
Controlled by dictionary system/snappyHexMeshDict
This utility has the following key features:
snappyHexMesh | Usage
Define snappyHexMeshDict Execute snappyHexMesh
Execution:
snappyHexMesh [-noFunctionObjects ][-overwrite] [-parallel]
[-case dir] [-roots <(dir1 .. dirN)>] [-help]
Parallel execution available using mpirun
Requirements:
snappyHexMesh | Methodology
Step 1: Create base mesh
Note: Cells should be close to unit Aspect Ratio for optimum behaviour
STL or Nastran
(constant/triSurface)
NOTE: File names must not
contain any spaces, unusual
characters or begin with a
number. The same applies to the
names of the parts and regions
defined within the geometry files.
snappyHexMesh | Methodology
Step 2: Refine base mesh
snappyHexMesh | Methodology
Step 3: Remove unused cells
Castellated
mesh
snappyHexMesh | Methodology
Step 4: Snap mesh to surface
snappyHexMesh | Methodology
Step 5: Add layers
Output to file
Note: All steps are automatic. Reproduced here for information purposes only.
Copyright 2012 Engys Ltd.
snappyHexMeshDict | Overview
Dictionary file consists of five main sections:
geometry Prescribe geometry entities for meshing
castellatedMeshControls Prescribe feature,
surface and volume mesh refinements
snapControls Control mesh surface snapping
addLayersControls Control boundary layer mesh
growth
meshQualityControls Control mesh quality metrics
geometry
{
flange.stl
{
type triSurfaceMesh;
name flange;
}
sphereA
{
type searchableSphere;
centre (0 0 -0.012);
radius 0.003;
}
}
File header
Keywords
Switch on/off mesh steps
snappyHexMeshDict | geometry
FoamFile
{
version 2.0;
format ascii;
class
dictionary;
object autoHexMeshDict;
}
castellatedMesh true;
snap
true;
addLayers
false;
geometry
{
flange.stl
{
type triSurfaceMesh;
name flange;
}
sphereA
{
type searchableSphere;
centre (0 0 -0.012);
radius 0.003;
}
}
triSurfaceMesh;
geomA;
geomB.stl
{
type
distributedTriSurfaceMesh;
distributionType follow;
name
geomB;
}
searchableCylinder;
(0 0 0);
(1 0 0);
0.1;
searchablePlane;
planeType
pointAndNormal;
pointAndNormalDict
{
basePoint
(0 0 0);
normalVector (0 1 0);
}
}
plate
{
type
origin
span
}
searchablePlate;
(0 0 0);
(0.5 0.5 0);
snappyHexMeshDict | Refinement
The first meshing stage is called
Refinement. This is where the initial block
mesh is refined based on surface and
volumetric refinement settings in the
castellatedMeshControls sub-dictionary
snappyHexMeshDict | castellatedMesh
castellatedMeshControls
{
maxGlobalCells 2000000;
minRefinementCells 0;
nCellsBetweenLevels 1;
features();
refinementSurfaces
{
flange
{
level (2 3);
regions{*.inlet|*.outlet{level(3,4);}}
}
sphereA
{
level (3 3);
faceZone zoneA; cellZone zoneA; cellZoneInside inside;
}
}
resolveFeatureAngle 30;
refinementRegions
{
sphereA
{
mode inside;
levels ((1E15 3));
}
}
locationInMesh (-9.23149e-05 -0.0025 -0.0025);
allowFreeStandingZoneFaces true;
}
nCellsBetweenLevels 3
snappyHexMeshDict | castellatedMesh
castellatedMeshControls
{
maxGlobalCells 2000000;
minRefinementCells 0;
nCellsBetweenLevels 1;
features();
refinementSurfaces
{
flange
{
level (2 3);
regions{*.inlet|*.outlet{level(3,4);}}
}
sphereA
{
level (3 3);
faceZone zoneA; cellZone zoneA; cellZoneInside inside;
}
}
resolveFeatureAngle 30;
refinementRegions
{
sphereA
{
mode inside;
levels ((1E15 3));
}
}
locationInMesh (-9.23149e-05 -0.0025 -0.0025);
allowFreeStandingZoneFaces true;
}
3
(
(0.0065 0.0075 -0.02375)
(0.0065 0.0075 0.00225)
(-0.0065 0.0075 -0.02375)
)
2
(
(0 1)
(1 2)
)
snappyHexMeshDict | castellatedMesh
castellatedMeshControls
{
maxGlobalCells 2000000;
minRefinementCells 0;
nCellsBetweenLevels 1;
features();
refinementSurfaces
{
flange
{
level (2 3);
regions{*.inlet|*.outlet{level(3,4);}}
}
sphereA
{
level (3 3);
faceZone zoneA; cellZone zoneA; cellZoneInside inside;
}
}
Level 0
Level 1
Level 1
Level 2
resolveFeatureAngle 30;
refinementRegions
{
sphereA
{
mode inside;
levels ((1E15 3));
}
}
locationInMesh (-9.23149e-05 -0.0025 -0.0025);
allowFreeStandingZoneFaces true;
}
snappyHexMeshDict | castellatedMesh
castellatedMeshControls
{
maxGlobalCells 2000000;
minRefinementCells 0;
nCellsBetweenLevels 1;
features();
refinementSurfaces
{
flange
{
level (2 3);
regions{*.inlet|*.outlet{level(3,4);}}
}
sphereA
{
level (3 3);
faceZone zoneA; cellZone zoneA; cellZoneInside inside;
}
}
resolveFeatureAngle 30;
refinementRegions
{
sphereA
{
mode inside;
levels ((1E15 3));
}
}
locationInMesh (-9.23149e-05 -0.0025 -0.0025);
allowFreeStandingZoneFaces true;
}
refinementSurfaces
{
flange
{
level (2 3);
patchInfo
{
type wall;
}
regions
{
*.inlet|*.outlet
{
level(3,4);
}
}
}
}
snappyHexMeshDict | castellatedMesh
castellatedMeshControls
{
maxGlobalCells 2000000;
minRefinementCells 0;
nCellsBetweenLevels 1;
features();
refinementSurfaces
{
flange
{
level (2 3);
regions{*.inlet|*.outlet{level(3,4);}}
}
sphereA
{
level (3 3);
faceZone zoneA; cellZone zoneA; cellZoneInside inside;
}
}
resolveFeatureAngle 30;
refinementRegions
{
sphereA
{
mode inside;
levels ((1E15 3));
}
}
locationInMesh (-9.23149e-05 -0.0025 -0.0025);
allowFreeStandingZoneFaces true;
}
Mesh Zones
snappyHexMeshDict | castellatedMesh
castellatedMeshControls
{
maxGlobalCells 2000000;
minRefinementCells 0;
nCellsBetweenLevels 1;
features();
refinementSurfaces
{
flange
{
level (2 3);
regions{*.inlet|*.outlet{level(3,4);}}
}
sphereA
{
level (3 3);
faceZone zoneA; cellZone zoneA; cellZoneInside inside;
}
}
Level 1
Level 1
Level 2
Level 2
resolveFeatureAngle 30;
refinementRegions
{
sphereA
{
mode inside;
levels ((1E15 3));
}
}
locationInMesh (-9.23149e-05 -0.0025 -0.0025);
allowFreeStandingZoneFaces true;
}
snappyHexMeshDict | castellatedMesh
castellatedMeshControls
{
maxGlobalCells 2000000;
minRefinementCells 0;
nCellsBetweenLevels 1;
features();
Volume refinements
inside (outside)
distance
refinementSurfaces
{
flange
{
level (2 3);
regions{*.inlet|*.outlet{level(3,4);}}
}
sphereA
{
level (3 3);
faceZone zoneA; cellZone zoneA; cellZoneInside inside;
}
}
resolveFeatureAngle 30;
refinementRegions
{
sphereA
{
mode inside;
levels ((1E15 3));
}
}
locationInMesh (-9.23149e-05 -0.0025 -0.0025);
allowFreeStandingZoneFaces true;
}
mode inside;
levels ((1E15 3));
snappyHexMeshDict | castellatedMesh
castellatedMeshControls
{
maxGlobalCells 2000000;
minRefinementCells 0;
nCellsBetweenLevels 1;
features();
refinementSurfaces
{
flange
{
level (2 3);
regions{*.inlet|*.outlet{level(3,4);}}
}
sphereA
{
level (3 3);
faceZone zoneA; cellZone zoneA; cellZoneInside inside;
}
}
resolveFeatureAngle 30;
refinementRegions
{
sphereA
{
mode inside;
levels ((1E15 3));
}
}
locationInMesh (-9.23149e-05 -0.0025 -0.0025);
allowFreeStandingZoneFaces true;
}
Level 1
Level 1
Level 2
Level 2
snappyHexMeshDict | castellatedMesh
castellatedMeshControls
{
maxGlobalCells 2000000;
minRefinementCells 0;
nCellsBetweenLevels 1;
features();
refinementSurfaces
{
flange
{
level (2 3);
regions{*.inlet|*.outlet{level(3,4);}}
}
sphereA
{
level (3 3);
faceZone zoneA; cellZone zoneA; cellZoneInside inside;
}
}
resolveFeatureAngle 30;
refinementRegions
{
sphereA
{
mode inside;
levels ((1E15 3));
}
}
locationInMesh (-9.23149e-05 -0.0025 -0.0025);
allowFreeStandingZoneFaces true;
}
Cell Zone
Face Zone
allowFreeStandingZoneFaces false;
snappyHexMeshDict | snapControls
snapControls
{
nSmoothPatch 3;
tolerance 1.0;
nSolveIter 300;
nRelaxIter 5;
nFeatureSnapIter 10;
}
snappyHexMeshDict | snapControls
snapControls
{
nSmoothPatch 3;
tolerance 1.0;
nSolveIter 300;
nRelaxIter 5;
nFeatureSnapIter 10;
snappyHexMeshDict | Layers
The final meshing stage is called Layer
addition where a layer of cells is added
to a specified set of boundary patches.
This stage is controlled by the settings in
the addLayersControls sub-dictionary
snappyHexMeshDict | addLayersControls
addLayersControls
{
layers
{
"flange_.*"{nSurfaceLayers 1;}
}
finalLayerThickness 0.4;
expansionRatio 1.15;
minThickness 0.2;
relativeSizes true;
// Advanced settings
featureAngle 30;
nSmoothSurfaceNormals 1;
nSmoothNormals 3;
nSmoothThickness 10;
minMedianAxisAngle 80;
maxThicknessToMedialRatio 0.3;
maxFaceThicknessRatio 0.5;
nLayerIter 50;
meshQualityControls::relaxed.
nRelaxedIter 20;
nRelaxIter 5;
}
snappyHexMeshDict | addLayersControls
addLayersControls
{
layers
{
"flange_.*"{nSurfaceLayers 1;}
}
finalLayerThickness 0.4;
expansionRatio 1.15;
minThickness 0.2;
relativeSizes true;
// Advanced settings
featureAngle 30;
nSmoothSurfaceNormals 1;
nSmoothNormals 3;
nSmoothThickness 10;
minMedianAxisAngle 80;
maxThicknessToMedialRatio 0.3;
maxFaceThicknessRatio 0.5;
nLayerIter 50;
meshQualityControls::relaxed.
nRelaxedIter 20;
nRelaxIter 5;
}
snappyHexMeshDict | addLayersControls
addLayersControls
{
layers
{
"flange_.*"{nSurfaceLayers 1;}
}
finalLayerThickness 0.4;
expansionRatio 1.15;
minThickness 0.2;
relativeSizes true;
// Advanced settings
featureAngle 30;
nSmoothSurfaceNormals 1;
nSmoothNormals 3;
nSmoothThickness 10;
minMedianAxisAngle 80;
maxThicknessToMedialRatio 0.3;
maxFaceThicknessRatio 0.5;
nLayerIter 50;
meshQualityControls::relaxed.
nRelaxedIter 20;
nRelaxIter 5;
}
snappyHexMeshDict | addLayersControls
addLayersControls
{
layers
{
"flange_.*"{nSurfaceLayers 1;}
}
finalLayerThickness 0.4;
expansionRatio 1.15;
minThickness 0.2;
relativeSizes true;
// Advanced settings
featureAngle 30;
nSmoothSurfaceNormals 1;
nSmoothNormals 3;
nSmoothThickness 10;
minMedianAxisAngle 80;
maxThicknessToMedialRatio 0.3;
maxFaceThicknessRatio 0.5;
nLayerIter 50;
meshQualityControls::relaxed.
nRelaxedIter 20;
nRelaxIter 5;
}
snappyHexMeshDict | addLayersControls
addLayersControls
{
layers
{
"flange_.*"{nSurfaceLayers 1;}
}
finalLayerThickness 0.4;
expansionRatio 1.15;
minThickness 0.2;
relativeSizes true;
featureAngle 45;
// Advanced settings
featureAngle 30;
nSmoothSurfaceNormals 1;
nSmoothNormals 3;
nSmoothThickness 10;
minMedianAxisAngle 80;
maxThicknessToMedialRatio 0.3;
maxFaceThicknessRatio 0.5;
nLayerIter 50;
meshQualityControls::relaxed.
nRelaxedIter 20;
nRelaxIter 5;
}
featureAngle 180;
snappyHexMeshDict | addLayersControls
addLayersControls
{
layers
{
"flange_.*"{nSurfaceLayers 1;}
}
finalLayerThickness 0.4;
expansionRatio 1.15;
minThickness 0.2;
relativeSizes true;
// Advanced settings
featureAngle 30;
nSmoothSurfaceNormals 1;
nSmoothNormals 3;
nSmoothThickness 10;
minMedianAxisAngle 80;
maxThicknessToMedialRatio 0.3;
maxFaceThicknessRatio 0.5;
nLayerIter 50;
meshQualityControls::relaxed.
nRelaxedIter 20;
nRelaxIter 5;
}
snappyHexMeshDict | addLayersControls
addLayersControls
{
layers
{
"flange_.*"{nSurfaceLayers 1;}
}
finalLayerThickness 0.4;
expansionRatio 1.15;
minThickness 0.2;
relativeSizes true;
nSurfaceLayers >0
// Advanced settings
featureAngle 30;
nSmoothSurfaceNormals 1;
nSmoothNormals 3;
nSmoothThickness 10;
minMedianAxisAngle 80;
maxThicknessToMedialRatio 0.3;
H
M
maxFaceThicknessRatio 0.5;
nLayerIter 50;
meshQualityControls::relaxed.
nRelaxedIter 20;
nRelaxIter 5;
Medial Axis
nSurfaceLayers =0
snappyHexMeshDict | addLayersControls
addLayersControls
{
layers
{
"flange_.*"{nSurfaceLayers 1;}
}
finalLayerThickness 0.4;
expansionRatio 1.15;
minThickness 0.2;
relativeSizes true;
nSurfaceLayers >0
// Advanced settings
featureAngle 30;
nSmoothSurfaceNormals 1;
nSmoothNormals 3;
nSmoothThickness 10;
minMedianAxisAngle 80;
maxThicknessToMedialRatio 0.3;
H
M
maxFaceThicknessRatio 0.5;
nLayerIter 50;
meshQualityControls::relaxed.
nRelaxedIter 20;
nRelaxIter 5;
Medial Axis
nSurfaceLayers =0
snappyHexMeshDict | addLayersControls
addLayersControls
{
layers
{
"flange_.*"{nSurfaceLayers 1;}
}
finalLayerThickness 0.4;
expansionRatio 1.15;
minThickness 0.2;
relativeSizes true;
// Advanced settings
featureAngle 30;
nSmoothSurfaceNormals 1;
nSmoothNormals 3;
nSmoothThickness 10;
minMedianAxisAngle 80;
maxThicknessToMedialRatio 0.3;
maxFaceThicknessRatio 0.5;
nLayerIter 50;
meshQualityControls::relaxed.
nRelaxedIter 20;
nRelaxIter 5;
}
snappyHexMeshDict | meshQualityControls
During a run of snappyHexMesh the
mesh quality is constantly monitored.
If a mesh motion or topology change
introduces a poor quality cell or face
the motion or topology change is
undone to revert the mesh back to a
previously valid error free state
The mesh quality metrics used for
the checks are set in the subdictionary meshQualityControls
ci
Ai
snappyHexMeshDict | meshQualityControls
meshQualityControls
{
maxNonOrtho 65;
maxBoundarySkewness 20;
maxInternalSkewness 4;
maxConcave 80;
minVol 1e-13;
minArea 1e-13;
minTetQuality 1e-30;
minTwist 0.05;
minDeterminant 0.001;
ci
Ai
minFaceWeight 0.05;
minVolRatio 0.01;
minTriangleTwist -1;
//minVolCollapseRatio 0.5;
// Advanced
nSmoothScale 4;
errorReduction 0.75;
relaxed
{
maxNonOrtho 75;
}
}
metric face,orthogonality
Ai .ci
Ai ci
snappyHexMeshDict | meshQualityControls
meshQualityControls
{.
maxNonOrtho 65;
maxBoundarySkewness 20;
maxInternalSkewness 4;
maxConcave 80;
minVol 1e-13;
minArea 1e-13;
minTetQuality 1e-30;
minTwist 0.05;
minDeterminant 0.001;
minFaceWeight 0.05;
minVolRatio 0.01;
minTriangleTwist -1;
//minVolCollapseRatio 0.5;
// Advanced
nSmoothScale 4;
errorReduction 0.75;
relaxed
{
maxNonOrtho 75;
}
}
ci
di
Ai
di
metric face, skewness
ci
snappyHexMeshDict | meshQualityControls
meshQualityControls
{.
maxNonOrtho 65;
maxBoundarySkewness 20;
maxInternalSkewness 4;
maxConcave 80;
minVol 1e-13;
minArea 1e-13;
minTetQuality 1e-30;
minTwist 0.05;
minDeterminant 0.001;
minFaceWeight 0.05;
minVolRatio 0.01;
minTriangleTwist -1;
//minVolCollapseRatio 0.5;
// Advanced
nSmoothScale 4;
errorReduction 0.75;
relaxed
{
maxNonOrtho 75;
}
}
>100 degrees
snappyHexMeshDict | meshQualityControls
meshQualityControls
{.
maxNonOrtho 65;
maxBoundarySkewness 20;
maxInternalSkewness 4;
maxConcave 80;
minVol 1e-13;
minArea 1e-13;
minTetQuality 1e-30;
minTwist 0.05;
minDeterminant 0.001;
1
metric face,pyramid volume Ai bi
3
minFaceWeight 0.05;
minVolRatio 0.01;
minTriangleTwist -1;
//minVolCollapseRatio 0.5;
// Advanced
nSmoothScale 4;
errorReduction 0.75;
relaxed
{
maxNonOrtho 75;
}
}
Ai
bi
snappyHexMeshDict | meshQualityControls
meshQualityControls
{.
maxNonOrtho 65;
maxBoundarySkewness 20;
maxInternalSkewness 4;
maxConcave 80;
minVol 1e-13;
minArea 1e-13;
minTetQuality 1e-30;
minTwist 0.05;
minDeterminant 0.001;
minFaceWeight 0.05;
2
c (a c )
//minVolCollapseRatio 0.5;
// Advanced
nSmoothScale 4;
errorReduction 0.75;
relaxed
{
maxNonOrtho 75;
}
}
b (a b )
1 (b a ) (c a )
1
cr (a
tv
a b c
2
c (b a )
6
minVolRatio 0.01;
minTriangleTwist -1;
tv
8
9*3
1
2
* cr 3
snappyHexMeshDict | meshQualityControls
meshQualityControls
{.
maxNonOrtho 65;
maxBoundarySkewness 20;
maxInternalSkewness 4;
maxConcave 80;
minVol 1e-13;
minArea 1e-13;
minTetQuality 1e-30;
minTwist 0.05;
minDeterminant 0.001;
minFaceWeight 0.05;
minVolRatio 0.01;
minTriangleTwist -1;
//minVolCollapseRatio 0.5;
// Advanced
nSmoothScale 4;
errorReduction 0.75;
relaxed
{
maxNonOrtho 75;
}
}
snappyHexMeshDict | meshQualityControls
meshQualityControls
{.
maxNonOrtho 65;
maxBoundarySkewness 20;
maxInternalSkewness 4;
maxConcave 80;
minVol 1e-13;
minArea 1e-13;
minTetQuality 1e-30;
minTwist 0.05;
minDeterminant 0.001;
minFaceWeight 0.05;
minVolRatio 0.01;
minTriangleTwist -1;
//minVolCollapseRatio 0.5;
// Advanced
nSmoothScale 4;
errorReduction 0.75;
relaxed
{
maxNonOrtho 75;
}
}
metric face,twist
f i .ci
f i ci
bi
ci
fi
snappyHexMeshDict | meshQualityControls
meshQualityControls
{.
maxNonOrtho 65;
maxBoundarySkewness 20;
maxInternalSkewness 4;
maxConcave 80;
minVol 1e-13;
minArea 1e-13;
minTetQuality 1e-30;
minTwist 0.05;
minDeterminant 0.001;
minFaceWeight 0.05;
faces
Ai
ti , j
Ai
Ai
Ai
faces
minVolRatio 0.01;
minTriangleTwist -1;
//minVolCollapseRatio 0.5;
// Advanced
nSmoothScale 4;
errorReduction 0.75;
relaxed
{
maxNonOrtho 75;
}
}
metriccell ,determinant
ti , j
A
/ 0.03703
snappyHexMeshDict | meshQualityControls
meshQualityControls
{.
maxNonOrtho 65;
maxBoundarySkewness 20;
maxInternalSkewness 4;
maxConcave 80;
minVol 1e-13;
minArea 1e-13;
minTetQuality 1e-30;
minTwist 0.05;
minDeterminant 0.001;
minFaceWeight 0.05;
minVolRatio 0.01;
d nei
Ai ci
Ai
minTriangleTwist -1;
//minVolCollapseRatio 0.5;
// Advanced
nSmoothScale 4;
errorReduction 0.75;
relaxed
{
maxNonOrtho 75;
}
}
A
i
bi
ci
snappyHexMeshDict | meshQualityControls
meshQualityControls
{.
maxNonOrtho 65;
maxBoundarySkewness 20;
maxInternalSkewness 4;
maxConcave 80;
minVol 1e-13;
minArea 1e-13;
minTetQuality 1e-30;
minTwist 0.05;
minDeterminant 0.001;
minFaceWeight 0.05;
minVolRatio 0.01;
minTriangleTwist -1;
//minVolCollapseRatio 0.5;
// Advanced
nSmoothScale 4;
errorReduction 0.75;
relaxed
{
maxNonOrtho 75;
}
}
min(Vnei ,Vown )
max( Vnei ,Vown )
snappyHexMeshDict | meshQualityControls
meshQualityControls
{.
maxNonOrtho 65;
maxBoundarySkewness 20;
maxInternalSkewness 4;
maxConcave 80;
minVol 1e-13;
minArea 1e-13;
minTetQuality 1e-30;
minTwist 0.05;
minDeterminant 0.001;
minFaceWeight 0.05;
minVolRatio 0.01;
minTriangleTwist -1;
a b
ab
//minVolCollapseRatio 0.5;
// Advanced
nSmoothScale 4;
errorReduction 0.75;
relaxed
{
maxNonOrtho 75;
}
}
snappyHexMeshDict | meshQualityControls
meshQualityControls
{.
maxNonOrtho 65;
maxBoundarySkewness 20;
maxInternalSkewness 4;
maxConcave 80;
minVol 1e-13;
minArea 1e-13;
minTetQuality 1e-30;
minTwist 0.05;
minDeterminant 0.001;
minFaceWeight 0.05;
minVolRatio 0.01;
minTriangleTwist -1;
//minVolCollapseRatio 0.5;
minVolCollapseRatio 0.5
// Advanced
nSmoothScale 4;
errorReduction 0.75;
relaxed
{
maxNonOrtho 75;
}
}
//minVolCollapseRatio 0.5
snappyHexMeshDict | meshQualityControls
meshQualityControls
{.
maxNonOrtho 65;
maxBoundarySkewness 20;
maxInternalSkewness 4;
maxConcave 80;
minVol 1e-13;
minArea 1e-13;
minTetQuality 1e-30;
minTwist 0.05;
minDeterminant 0.001;
minFaceWeight 0.05;
minVolRatio 0.01;
minTriangleTwist -1;
//minVolCollapseRatio 0.5;
// Advanced
nSmoothScale 4;
errorReduction 0.75;
relaxed
{
maxNonOrtho 75;
}
}
snappyHexMeshDict | meshQualityControls
meshQualityControls
{.
maxNonOrtho 65;
maxBoundarySkewness 20;
maxInternalSkewness 4;
maxConcave 80;
minVol 1e-13;
minArea 1e-13;
minTetQuality 1e-30;
minTwist 0.05;
minDeterminant 0.001;
minFaceWeight 0.05;
minVolRatio 0.01;
minTriangleTwist -1;
//minVolCollapseRatio 0.5;
// Advanced
nSmoothScale 4;
errorReduction 0.75;
relaxed
{
maxNonOrtho 75;
}
}
checkMesh
checkMesh | Definition
Utility checkMesh produces a full report with mesh quality
metrics and element count statistics
Command execution only (no dictionary file required)
Utility checks:
checkMesh | Usage
Execution:
checkMesh [-noTopology] [-allTopology] [-latestTime] [-time ranges]
[-parallel] [-constant] [-noZero] [-allGeometry] [-case dir]
[-region name] [-help]
Parallel execution available using mpirun
Requirements:
Mesh statistics:
No. points, faces, cells...
Global cell count
Faces
Points
Surface topology
ceiling_Cube.003
256
263
floor_Cube.006
623
584
human_Sphere
1775
1652
xmax_Cube.002
256
286
xmin_Cube.001
256
285
ymax_Cube.004
256
286
ymin_Cube.005
256
270
Check
connectivity of
mesh patches
Check only
shown when
run in serial
Meshing | Misc
Surface Manipulation
surfaceCheck
surfaceTransformPoints
surfaceMeshTriangulate
Mesh Manipulation
reconstructParMesh
renumberMesh (before using mesh)
topoSet with splitMeshRegions for CHT
transformPoints
Meshing | GUI
Questions?