Professional Documents
Culture Documents
OFW11 Jackson advSHM FINAL
OFW11 Jackson advSHM FINAL
• Requirements:
Dictionary file system/snappyHexMeshDict
Execute blockMesh
Execute decomposePar
Execute snappyHexMesh
© Copyright 2016 ENGYS Limited. All rights reserved.
Methodology Overview | Base Mesh
• Step 1: Create base mesh
Custom made → Using utility blockMesh
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.
Hexahedral base
mesh → level 0 size
© Copyright 2016 ENGYS Limited. All rights reserved.
Methodology Overview | Base Refine
• Step 2: Refine base mesh
Surface refinement → feature lines, proximity & curvature
Volume refinement → closed surfaces, geometric shapes
Level 0
Level 1
Level 2
Level 3
“Snapped” Edge
View Port
Data Panel
View
Controls
Domain/
Geometry
Bounds
Tree Entries
Start on the meshing tab and work our way down the tree
Copyright © 2016 ENGYS. All rights reserved.
Backward Facing Step | Usage Intro
Overall Goal of Session
• Introduce controls of HELYX-OS
Skills Obtained
Creating base meshes
Setting surface refinement
Extracting feature lines
Creating volume refinement boxes
• New
• Open Recent Cases
• Exit
Starting Screen
© Copyright 2016 ENGYS Limited. All rights reserved.
Backward Facing Step | Usage Intro
Case Creation
Case Name
Parent Folder
Parallel Settings
From File
• Lets you to create, import,
edit existing
blockMeshDict files
User Defined
• User provides min and max bounds of x,y,z
• User provides number of elements in each
direction
© Copyright 2016 ENGYS Limited. All rights reserved.
Backward Facing Step | Usage Intro
Defining a Base Mesh
Level 0
Level 1
Level 1 Level 2
Level 3
Note
As distance is
increased,
decrease levels
• Snapping is improved
• Can further move up VR* boxes to refine more
© Copyright 2016 ENGYS Limited. All rights reserved.
Backward Facing Step | Usage Intro
• Background meshes can be made
Automatically, with only a cell size
By defining as a simple bounding box and # of
elements
Provided as a blockMeshDict file for complex base
meshes
• We can build simple domains with primitive
object
• Extracting feature lines can improve snapping as
well as increasing surface refinement
© Copyright 2016 ENGYS Limited. All rights reserved.
Straight Pipe | Adding Layers
Overall Goal of Session
• Basics of layer addition
Skills Obtained
Creating base meshes
Setting surface refinement
Adjusting layer controls and perform a parametric study
Increase layer
stretching to 1.5
Increase layer
stretching to 2.5
Drastically squeeze
the first few layers
Layers completely
collapsed
Reduce layer
stretching
1. Inlet
2. Outlet
3. Walls
• Lack of resolution?
• Is snapping bad?
• Suggestions?
Sufficient?
• Set to level 3
• Remesh
We now have a much improved mesh
© Copyright 2016 ENGYS Limited. All rights reserved.
Reactor Geometry | Snapping Practice
Progression of refinement
info@engys.com | Tel: +44 (0)20 32393041 | Fax: +44 (0)20 33573123 | www.engys.com
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;
}
}
sphere
{
type searchableSphere;
centre (3 3 0);
radius 4;
}
cylinder
{
type searchableCylinder;
point1 (0 0 0);
point2 (1 0 0);
radius 0.1;
}
plate
{
type searchablePlate;
origin (0 0 0);
span (0.5 0.5 0);
}
boxA
basic shapes scaled and transformed
{
surface box;
scale (1.0 1.0 2.1);
transform
{
type cartesian;
origin (2 2 0);
e1 (1 0 0);
e3 (0 0 1);
}
}
boxB
{
surface box;
scale (1.0 1.0 2.1);
transform
{
type cartesian;
origin (3.5 3 0);
e1 (1 0 0);
e3 (0 0 1);
}
}
}
© Copyright 2016 ENGYS Limited. All rights reserved.
A1: 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
features();
• Buffer layers
refinementSurfaces
{
flange
{ nCellsBetweenLevels 1
level (2 3);
regions{“*.inlet|*.outlet”{level(3,4);}}
}
sphereA
{
level (3 3);
faceZone zoneA; cellZone zoneA; cellZoneInside
inside;
}
}
resolveFeatureAngle 30;
nCellsBetweenLevels 3
refinementRegions
{
sphereA
{
mode inside;
levels ((1E15 3));
}
}
locationInMesh (-9.23149e-05 -0.0025 -0.0025);
allowFreeStandingZoneFaces true;
}
resolveFeatureAngle 30; 3
(
refinementRegions (0.0065 0.0075 -0.02375)
{ (0.0065 0.0075 0.00225)
sphereA (-0.0065 0.0075 -0.02375)
{ )
mode inside;
levels ((1E15 3)); 2
} (
} (0 1)
locationInMesh (-9.23149e-05 -0.0025 -0.0025); (1 2)
allowFreeStandingZoneFaces true; )
}
}
regions{“*.inlet|*.outlet”{level(3,4);}} Level 0 Level 1 Level 1
sphereA
{
level (3 3); Level 2
faceZone zoneA; cellZone zoneA; cellZoneInside
inside;
}
}
resolveFeatureAngle 30;
refinementRegions
{
sphereA
{
mode inside;
Surface Mesh Refinements
levels ((1E15 3));
}
}
locationInMesh (-9.23149e-05 -0.0025 -0.0025);
allowFreeStandingZoneFaces true;
}
features();
supported
refinementSurfaces
• patchInfo keyword can be used to set
{
flange the boundary type on a per surface
{
level (2 3); basis
regions{“*.inlet|*.outlet”{level(3,4);}} refinementSurfaces
} {
sphereA flange
{ {
level (3 3); level (2 3);
faceZone zoneA; cellZone zoneA; cellZoneInside patchInfo
inside; {
} type wall;
} }
regions
resolveFeatureAngle 30; {
“*.inlet|*.outlet”
refinementRegions {
{ level(3,4);
sphereA }
{ }
mode inside; }
levels ((1E15 3)); }
}
}
locationInMesh (-9.23149e-05 -0.0025 -0.0025);
allowFreeStandingZoneFaces true;
}
features();
• Cell zone name
refinementSurfaces
• Face zone name
{
flange • Area selection: inside, outside or
{
level (2 3); insidepoint
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
}
features();
• Feature angle refinement
refinementSurfaces
{
flange
{
level (2 3);
regions{“*.inlet|*.outlet”{level(3,4);}}
}
Level 1 Level 1 Level 2
sphereA
{
level (3 3); Level 2
faceZone zoneA; cellZone zoneA; cellZoneInside
inside;
}
}
resolveFeatureAngle 30;
refinementRegions
{
sphereA
{
mode inside;
}
levels ((1E15 3)); Level 3 → Local
}
locationInMesh (-9.23149e-05 -0.0025 -0.0025);
curvature
}
allowFreeStandingZoneFaces true;
refinement
© Copyright 2016 ENGYS Limited. All rights reserved.
A1: castellatedMesh
castellatedMeshControls
{ Volume refinements
maxGlobalCells 2000000;
minRefinementCells 0; • inside (outside)
nCellsBetweenLevels 1;
features();
• 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));
mode inside;
}
}
levels ((1E15 3));
locationInMesh (-9.23149e-05 -0.0025 -0.0025);
allowFreeStandingZoneFaces true;
}
features();
refinementSurfaces
{
flange
Keep Point in cell
{
level (2 3);
regions{“*.inlet|*.outlet”{level(3,4);}}
}
sphereA
{
level (3 3);
Level 1 Level 1
faceZone zoneA; cellZone zoneA; cellZoneInside
inside;
} Level 2 Level 2
}
resolveFeatureAngle 30;
refinementRegions
{
sphereA
{
mode inside;
levels ((1E15 3));
}
}
locationInMesh (-9.23149e-05 -0.0025 -0.0025);
allowFreeStandingZoneFaces true;
}
cellZoneInside inside;
}
• “boundary”
}
Creates a pair of faces that do not
match one-to-one. Less constraint
on meshing to create more high-
quality meshes.
• “internal”
keeps faces of faceZone as
internal faces.
© Copyright 2016 ENGYS Limited. All rights reserved.
A1: Surface Snapping
The second meshing stage is called
“Snapping” where patch faces are
projected down onto the surface
geometry. This stage is controlled by
settings in the snapControls sub-
dictionary
nRelaxIter 5;
nFeatureSnapIter 10;
implicitFeatureSnap false;
explicitFeatureSnap true;
multiRegionFeatureSnap false;
}
nFeatureSnapIter 10;
implicitFeatureSnap false;
explicitFeatureSnap true;
multiRegionFeatureSnap false;
}
tolerance 1.0;
implicitFeatureSnap false;
explicitFeatureSnap true;
multiRegionFeatureSnap false;
}
tolerance 1.0;
nSolverIter 300;
nRelaxIter 5;
Controls number of scaling back
nFeatureSnapIter 10;
iterations for error reduction stage
implicitFeatureSnap false;
explicitFeatureSnap true;
multiRegionFeatureSnap false;
}
surfaceFeatureExtract -includedAngle
150 <surface> <output set>
tolerance 1.0;
nSolverIter 300;
New functionality in 2.2.x
nRelaxIter 5;
tolerance 1.0;
nSolverIter 300;
nRelaxIter 5;
nFeatureSnapIter 10;
tolerance 1.0;
nSolverIter 300;
nRelaxIter 5;
nFeatureSnapIter 10;
implicitFeatureSnap false;
explicitFeatureSnap true;
In conjunction with explicitFeatureSnap,
}
multiRegionFeatureSnap false; this is used to detect the features
between multiple surfaces.
minThickness 0.2;
relativeSizes true;
// Advanced settings
featureAngle 30;
slipFeatureAngle 30;
nSmoothSurfaceNormals 1;
nSmoothNormals 3;
nSmoothThickness 10;
minMedianAxisAngle 80;
maxThicknessToMedialRatio 0.3;
maxFaceThicknessRatio 0.5;
nLayerIter 50;
meshQualityControls::relaxed.
nRelaxedIter 20;
nRelaxIter 5;
}
minMedianAxisAngle 80;
maxThicknessToMedialRatio 0.3;
maxFaceThicknessRatio 0.5;
nLayerIter 50;
meshQualityControls::relaxed.
nRelaxedIter 20;
nRelaxIter 5;
}
minMedianAxisAngle 80;
maxThicknessToMedialRatio 0.3;
maxFaceThicknessRatio 0.5;
nLayerIter 50;
meshQualityControls::relaxed.
nRelaxedIter 20;
nRelaxIter 5;
}
finalLayerThickness 0.4;
expansionRatio 1.15;
minThickness 0.2;
relativeSizes true;
// Advanced settings
Specification of a minimum layer
featureAngle 30;
slipFeatureAngle 30;
thickness below which height layers
nSmoothSurfaceNormals 1;
nSmoothNormals 3; will automatically be collapsed.
nSmoothThickness 10;
minMedianAxisAngle 80;
maxThicknessToMedialRatio 0.3;
The final layer thickness and minimum
maxFaceThicknessRatio 0.5;
thickness can be defined as either
nLayerIter 50; being relative (true) to the background
meshQualityControls::relaxed. spacing ΔS or defined as an absolute
nRelaxedIter 20;
(false) length.
nRelaxIter 5;
}
minThickness 0.2;
relativeSizes true;
featureAngle 45;
// Advanced settings
featureAngle 30;
slipFeatureAngle 30;
nSmoothSurfaceNormals 1;
nSmoothNormals 3;
nSmoothThickness 10;
minMedianAxisAngle 80;
maxThicknessToMedialRatio 0.3;
maxFaceThicknessRatio 0.5;
nLayerIter 50;
meshQualityControls::relaxed.
featureAngle 180;
nRelaxedIter 20;
nRelaxIter 5;
}
finalLayerThickness 0.4;
expansionRatio 1.15;
minThickness 0.2;
relativeSizes true;
// Advanced settings
featureAngle 30;
Specifies what feature angle to allow
slipFeatureAngle 30;
nSmoothSurfaceNormals 1; layers to slip “perpendicularly” up a
nSmoothNormals 3;
nSmoothThickness 10; patch
minMedianAxisAngle 80;
maxThicknessToMedialRatio 0.3;
maxFaceThicknessRatio 0.5;
i.e. “at non-patch sides, allow mesh to
nLayerIter 50;
slip if extrusion direction makes an
meshQualityControls::relaxed. angle larger than slipFeatureAngle”
nRelaxedIter 20;
nRelaxIter 5;
}
minMedianAxisAngle 80;
maxThicknessToMedialRatio 0.3;
maxFaceThicknessRatio 0.5;
nLayerIter 50;
meshQualityControls::relaxed.
nRelaxedIter 20;
nRelaxIter 5;
} Smoothed surface normals
minThickness 0.2;
relativeSizes true;
nSurfaceLayers >0
// Advanced settings
featureAngle 30;
slipFeatureAngle 30;
nSmoothSurfaceNormals 1;
nSmoothNormals 3;
nSmoothThickness 10;
minMedianAxisAngle 80; H
maxThicknessToMedialRatio 0.3;
M
maxFaceThicknessRatio 0.5;
nLayerIter 50;
meshQualityControls::relaxed.
nRelaxedIter 20;
Medial Axis
nRelaxIter 5;
}
nSurfaceLayers =0
relativeSizes true;
nSurfaceLayers >0
// Advanced settings
featureAngle 30;
slipFeatureAngle 30;
nSmoothSurfaceNormals 1;
nSmoothNormals 3;
nSmoothThickness 10;
minMedianAxisAngle 80; H
maxThicknessToMedialRatio 0.3;
M
maxFaceThicknessRatio 0.5;
nLayerIter 50;
meshQualityControls::relaxed.
nRelaxedIter 20;
Medial Axis
nRelaxIter 5;
}
nSurfaceLayers =0
finalLayerThickness 0.4;
If the layer iteration has not converged
expansionRatio 1.15;
after a certain number of iterations exit
minThickness 0.2;
the layer addition loop early with the
relativeSizes true;
currently generated layer
// Advanced settings
featureAngle 30;
slipFeatureAngle 30; If layer iteration has not converged
nSmoothSurfaceNormals 1;
nSmoothNormals 3; after a specified number of iterations
nSmoothThickness 10;
then use a set of relaxed mesh quality
minMedianAxisAngle 80;
maxThicknessToMedialRatio 0.3; metrics, set in meshQualityControls,
maxFaceThicknessRatio 0.5; to achieve convergence
nLayerIter 50;
meshQualityControls::relaxed.
nRelaxedIter 20;
Controls number of scaling back iterations
nRelaxIter 5;
} during error reduction stage