Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*--------------------------------*- C++ -*----------------------------------*\
- | ========= | |
- | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
- | \\ / O peration | Version: v1606+ |
- | \\ / A nd | Web: www.OpenFOAM.com |
- | \\/ M anipulation | |
- \*---------------------------------------------------------------------------*/
- FoamFile
- {
- version 2.0;
- format ascii;
- class dictionary;
- object snappyHexMeshDict;
- }
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Geometry parameters
- shellOuterRadius 3.9;
- lidHoleGap 0.1;
- axisLength 0.5;
- discRadius 3.4;
- // Which of the steps to run
- 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
- {
- axis.stl
- {
- type triSurfaceMesh;
- name axis;
- }
- shell.stl
- {
- type triSurfaceMesh;
- name shell;
- }
- inject.stl
- {
- type triSurfaceMesh;
- name inject;
- }
- inputBoundary.stl
- {
- type triSurfaceMesh;
- name inputBoundary;
- }
- inputCylinder.stl
- {
- type triSurfaceMesh;
- name inputCylinder;
- }
- };
- // 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 500000;
- // 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 5000000;
- // 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 5;
- // 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 4;
- // 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 "axis.eMesh";
- level 9;
- }
- {
- file "shell.eMesh";
- level 8;
- }
- {
- file "inject.eMesh";
- level 9;
- }
- {
- file "inputBoundary.eMesh";
- level 7;
- }
- {
- file "inputCylinder.eMesh";
- level 7;
- }
- );
- // 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
- {
- axis
- {
- // Surface-wise min and max refinement level
- level (8 9);
- }
- shell
- {
- // Surface-wise min and max refinement level
- level (4 4);
- }
- inject
- {
- // Surface-wise min and max refinement level
- level (8 9);
- }
- inputBoundary
- {
- // Surface-wise min and max refinement level
- level (6 6);
- }
- inputCylinder
- {
- // Surface-wise min and max refinement level
- level (6 7);
- }
- }
- // Resolve sharp angles
- resolveFeatureAngle 60;
- // Region-wise refinement
- // ~~~~~~~~~~~~~~~~~~~~~~
- // Specifies refinement level for cells in relation to a surface. One of
- // three modes
- // - distance. 'levels' specifies per distance to the surface the
- // wanted refinement level. The distances need to be specified in
- // descending order.
- // - inside. 'levels' is only one entry and only the level is used. All
- // cells inside the surface get refined up to the level. The surface
- // needs to be closed for this to be possible.
- // - outside. Same but cells outside.
- refinementRegions
- {
- shell
- {
- mode distance;
- levels ((1E15 1));
- }
- axis
- {
- mode distance;
- levels ((0.1 8));
- }
- inject
- {
- mode distance;
- levels ((0.1 8));
- }
- inputBoundary
- {
- mode distance;
- levels ((1E15 1));
- }
- inputCylinder
- {
- mode distance;
- levels ((1E15 1));
- }
- }
- // Mesh selection
- // ~~~~~~~~~~~~~~
- // After refinement patches get added for all refinementSurfaces and
- // all cells intersecting the surfaces get put into these patches. The
- // section reachable from the locationInMesh is kept.
- // NOTE: This point should never be on a face, always inside a cell, even
- // after refinement.
- Hlow #calc "$axisLength";
- Hupp 3;
- Hmid #calc "$lidHoleGap";
- z #calc "$Hlow + $Hupp*0.95 + $Hmid +0.00123456789";
- x #calc "$shellOuterRadius +0.00123456789";
- // x #calc "$discRadius / 2 +0.00123456789";
- // z #calc "$lidHoleGap / 2 +0.00123456789";
- locationInMesh ($x 0 $z);
- // Whether any faceZones (as specified in the refinementSurfaces)
- // are only on the boundary of corresponding cellZones or also allow
- // free-standing zone faces. Not used if there are no faceZones.
- allowFreeStandingZoneFaces true;
- }
- ///////////////////////////////////////////////
- /////////////// Snapping ////////////////////
- ///////////////////////////////////////////////
- // Settings for the snapping.
- snapControls
- {
- //- Number of patch smoothing iterations before finding correspondence
- // to surface
- nSmoothPatch 20;
- //- Relative distance for points to be attracted by surface feature point
- // or edge. True distance is this factor times local
- // maximum edge length.
- tolerance 4;
- //- Number of mesh displacement relaxation iterations.
- nSolveIter 200;
- //- Maximum number of snapping relaxation iterations. Should stop
- // before upon reaching a correct mesh.
- nRelaxIter 20;
- // Feature snapping
- //- Number of feature edge snapping iterations.
- // Leave out altogether to disable.
- nFeatureSnapIter 40;
- //- Detect (geometric only) features by sampling the surface
- // (default=false).
- implicitFeatureSnap false;
- //- Use castellatedMeshControls::features (default = true)
- explicitFeatureSnap true;
- //- Detect points on multiple surfaces (only for explicitFeatureSnap)
- multiRegionFeatureSnap false;
- }
- ///////////////////////////////////////////////
- /////////////// Layers ////////////////////
- ///////////////////////////////////////////////
- // Settings for the layer addition.
- addLayersControls
- {
- // Are the thickness parameters below relative to the undistorted
- // size of the refined cell outside layer (true) or absolute sizes (false).
- relativeSizes true;
- // Per final patch (so not geometry!) the layer information
- layers
- {
- axis
- {
- nSurfaceLayers 3;
- }
- shell
- {
- nSurfaceLayers 3;
- }
- inject
- {
- nSurfaceLayers 3;
- }
- inputCylinder
- {
- nSurfaceLayers 3;
- }
- }
- // Expansion factor for layer mesh
- expansionRatio 1.0;
- // Wanted thickness of final added cell layer. If multiple layers
- // is the thickness of the layer furthest away from the wall.
- // Relative to undistorted size of cell outside layer.
- // See relativeSizes parameter.
- finalLayerThickness 0.3;
- // Minimum thickness of cell layer. If for any reason layer
- // cannot be above minThickness do not add layer.
- // Relative to undistorted size of cell outside layer.
- minThickness 0.001;
- // If points get not extruded do nGrow layers of connected faces that are
- // also not grown. This helps convergence of the layer addition process
- // close to features.
- // Note: changed(corrected) w.r.t 17x! (didn't do anything in 17x)
- nGrow 0;
- // Advanced settings
- // When not to extrude surface. 0 is flat surface, 90 is when two faces
- // are perpendicular
- featureAngle 60;
- // At non-patched sides allow mesh to slip if extrusion direction makes
- // angle larger than slipFeatureAngle.
- slipFeatureAngle 30;
- // Maximum number of snapping relaxation iterations. Should stop
- // before upon reaching a correct mesh.
- nRelaxIter 3;
- // Number of smoothing iterations of surface normals
- nSmoothSurfaceNormals 1;
- // Number of smoothing iterations of interior mesh movement direction
- nSmoothNormals 3;
- // Smooth layer thickness over surface patches
- nSmoothThickness 10;
- // Stop layer growth on highly warped cells
- maxFaceThicknessRatio 0.5;
- // Reduce layer growth where ratio thickness to medial
- // distance is large
- maxThicknessToMedialRatio 0.3;
- // Angle used to pick up medial axis points
- // Note: changed(corrected) w.r.t 17x! 90 degrees corresponds to 130 in 17x.
- minMedianAxisAngle 90;
- // Create buffer region for new layer terminations
- nBufferCellsNoExtrude 0;
- // Overall max number of layer addition iterations. The mesher will exit
- // if it reaches this number of iterations; possibly with an illegal
- // mesh.
- nLayerIter 50;
- }
- // Generic mesh quality settings. At any undoable phase these determine
- // where to undo.
- meshQualityControls
- {
- #include "meshQualityDict"
- // Advanced
- //- Number of error distribution iterations
- nSmoothScale 4;
- //- Amount to scale back displacement at error points
- errorReduction 0.75;
- }
- // Advanced
- // Write flags
- writeFlags
- (
- scalarLevels
- layerSets
- layerFields // write volScalarField for layer coverage
- );
- // Merge tolerance. Is fraction of overall bounding box of initial mesh.
- // Note: the write tolerance needs to be higher than this.
- mergeTolerance 1e-6;
- // ************************************************************************* //
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement