Next: Model setting without an Up: Alternative formulation Previous: Alternative formulation Contents Index
Running SnappyHexMesh - Rotor Region
Utility snappyHexMesh refines background mesh in direction to the surface model. The set-up is read from system/snappyHexMeshDict:
castellatedMesh true;
snap true;
addLayers false;
// Geometry. Definition of all surfaces. All surfaces are of class
// searchableSurface.
// Surfaces are used
// - to specify refinement for any mesh cell intersecting it
// - to specify refinement for any mesh cell inside/outside/near
// - to 'snap' the mesh boundary to the surface
geometry
{
RotorAMI1.stl { type triSurfaceMesh; name RotorAMI1; }
RotorAMI2.stl { type triSurfaceMesh; name RotorAMI2; }
RotorBlade.stl { type triSurfaceMesh; name RotorBlade; }
RotorShroud.stl { type triSurfaceMesh; name RotorShroud; }
RotorHub.stl { type triSurfaceMesh; name RotorHub; }
RotorOut.stl { type triSurfaceMesh; name RotorOut; }
RotorMXP_00.stl { type triSurfaceMesh; name RotorMXP00; }
RotorMXP_01.stl { type triSurfaceMesh; name RotorMXP01; }
RotorMXP_02.stl { type triSurfaceMesh; name RotorMXP02; }
RotorMXP_03.stl { type triSurfaceMesh; name RotorMXP03; }
RotorMXP_04.stl { type triSurfaceMesh; name RotorMXP04; }
RotorMXP_05.stl { type triSurfaceMesh; name RotorMXP05; }
RotorMXP_06.stl { type triSurfaceMesh; name RotorMXP06; }
RotorMXP_07.stl { type triSurfaceMesh; name RotorMXP07; }
RotorMXP_08.stl { type triSurfaceMesh; name RotorMXP08; }
RotorMXP_09.stl { type triSurfaceMesh; name RotorMXP09; }
RotorMXP_10.stl { type triSurfaceMesh; name RotorMXP10; }
RotorMXP_11.stl { type triSurfaceMesh; name RotorMXP11; }
RotorMXP_12.stl { type triSurfaceMesh; name RotorMXP12; }
RotorMXP_13.stl { type triSurfaceMesh; name RotorMXP13; }
RotorMXP_14.stl { type triSurfaceMesh; name RotorMXP14; }
RotorMXP_15.stl { type triSurfaceMesh; name RotorMXP15; }
RotorMXP_16.stl { type triSurfaceMesh; name RotorMXP16; }
RotorMXP_17.stl { type triSurfaceMesh; name RotorMXP17; }
RotorMXP_18.stl { type triSurfaceMesh; name RotorMXP18; }
RotorMXP_19.stl { type triSurfaceMesh; name RotorMXP19; }
RotorMXP_20.stl { type triSurfaceMesh; name RotorMXP20; }
RotorMXP_21.stl { type triSurfaceMesh; name RotorMXP21; }
RotorMXP_22.stl { type triSurfaceMesh; name RotorMXP22; }
RotorMXP_23.stl { type triSurfaceMesh; name RotorMXP23; }
RotorMXP_24.stl { type triSurfaceMesh; name RotorMXP24; }
RotorMXP_25.stl { type triSurfaceMesh; name RotorMXP25; }
RotorMXP_26.stl { type triSurfaceMesh; name RotorMXP26; }
RotorMXP_27.stl { type triSurfaceMesh; name RotorMXP27; }
RotorMXP_28.stl { type triSurfaceMesh; name RotorMXP28; }
RotorMXP_29.stl { type triSurfaceMesh; name RotorMXP29; }
RotorMXP_30.stl { type triSurfaceMesh; name RotorMXP30; }
RotorMXP_31.stl { type triSurfaceMesh; name RotorMXP31; }
RotorMXP_32.stl { type triSurfaceMesh; name RotorMXP32; }
RotorMXP_33.stl { type triSurfaceMesh; name RotorMXP33; }
RotorMXP_34.stl { type triSurfaceMesh; name RotorMXP34; }
RotorMXP_35.stl { type triSurfaceMesh; name RotorMXP35; }
};
// Settings for the castellatedMesh generation.
castellatedMeshControls
{
// Refinement parameters
// ~~~~~~~~~~~~~~~~~~~~~
// If local number of cells is >= maxLocalCells on any processor
// switches from from refinement followed by balancing
// (current method) to (weighted) balancing before refinement.
maxLocalCells 1000000;
// Overall cell limit (approximately). Refinement will stop immediately
// upon reaching this number so a refinement level might not complete.
// Note that this is the number of cells before removing the part which
// is not 'visible' from the keepPoint. The final number of cells might
// actually be a lot less.
maxGlobalCells 10000000;
// The surface refinement loop might spend lots of iterations refining just a
// few cells. This setting will cause refinement to stop if <= minimumRefine // are selected for refinement. Note: it will at least do one iteration // (unless the number of cells to refine is 0) minRefinementCells 0; // Allow a certain level of imbalance during refining // (since balancing is quite expensive) // Expressed as fraction of perfect balance (= overall number of cells / // nProcs). 0=balance always. maxLoadUnbalance 0.10; // Number of buffer layers between different levels. // 1 means normal 2:1 refinement restriction, larger means slower // refinement. nCellsBetweenLevels 2; // Explicit feature edge refinement // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Specifies a level for any cell intersected by its edges. // This is a featureEdgeMesh, read from constant/triSurface for now. features ( { file "RotorBlade.eMesh"; level 0; } { file "RotorAMI1.eMesh"; level 0; } { file "RotorAMI2.eMesh"; level 0; } ); // Surface based refinement // ~~~~~~~~~~~~~~~~~~~~~~~~ // Specifies two levels for every surface. The first is the minimum level, // every cell intersecting a surface gets refined up to the minimum level. // The second level is the maximum level. Cells that 'see' multiple // intersections where the intersections make an // angle > resolveFeatureAngle get refined up to the maximum level.
refinementSurfaces
{
"(RotorShroud|RotorHub)"
{
level (3 3);
}
"RotorOut"
{
level (1 3);
}
"RotorBlade"
{
level (3 4);
}
"RotorAMI.*"
{
level (3 3);
}
"RotorMXP.*"
{
level (4 4);
}
}
// Resolve sharp angles
resolveFeatureAngle 30;
Create the mesh running snappyHexMesh utility:
snappyHexMesh
In order to reduce bandwidth and to speed up computation on the generated rotor mesh, it is convenient to use renumberMesh utility using following command:
renumberMesh -latestTime
When finished, check the mesh running checkMesh and view the mesh in paraview:
checkMesh
paraFoam
Figure: Rotor of axial turbine – final mesh view.