Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / tutorials / heatTransfer / buoyantBoussinesqSimpleFoam / iglooWithFridges / system / snappyHexMeshDict
blob840d7980d2e49c4d127f5d0d556756b487f36642
1 /*--------------------------------*- C++ -*----------------------------------*\
2 | =========                 |                                                 |
3 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
4 |  \\    /   O peration     | Version:  2.0.0                                 |
5 |   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
6 |    \\/     M anipulation  |                                                 |
7 \*---------------------------------------------------------------------------*/
8 FoamFile
10     version     2.0;
11     format      ascii;
12     class       dictionary;
13     object      snappyHexMeshDict;
15 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
17 // Which of the steps to run
18 castellatedMesh true;
19 snap            true;
20 addLayers       true;
23 // Geometry. Definition of all surfaces. All surfaces are of class
24 // searchableSurface.
25 // Surfaces are used
26 // - to specify refinement for any mesh cell intersecting it
27 // - to specify refinement for any mesh cell inside/outside/near
28 // - to 'snap' the mesh boundary to the surface
29 geometry
31     igloo
32     {
33         type searchableSphere;
34         centre (3 3 0);
35         radius 4;
36     }
38     box1
39     {
40         type searchableBox;
41         min (0 0 0);
42         max (1 1 1);
43     }
45     fridgeFreezer
46     {
47         type searchableSurfaceCollection;
49         mergeSubRegions true;
51         freezer
52         {
53             surface box1;
54             scale (1 1 1);
55             transform
56             {
57                 type    cartesian;
58                 origin  (0 0 0);
59                 e1      (1 0 0);
60                 e3      (0 0 1);
61             }
62         }
63         fridge
64         {
65             surface box1;
66             scale (1 1 1.1);
67             transform
68             {
69                 type    cartesian;
70                 origin  (0 0 1);
71                 e1      (1 0 0);
72                 e3      (0 0 1);
73             }
74         }
75     }
77     twoFridgeFreezers
78     {
79         type searchableSurfaceCollection;
81         mergeSubRegions true;
83         seal
84         {
85             surface box1;
86             scale (1.0 1.0 2.1);
87             transform
88             {
89                 type    cartesian;
90                 origin  (2 2 0);
91                 e1      (1 0 0);
92                 e3      (0 0 1);
93             }
94         }
95         herring
96         {
97             surface box1;
98             scale (1.0 1.0 2.1);
99             transform
100             {
101                 type    cartesian;
102                 origin  (3.5 3 0);
103                 e1      (1 0 0);
104                 e3      (0 0 1);
105             }
106         }
107     }
112 // Settings for the castellatedMesh generation.
113 castellatedMeshControls
116     // Refinement parameters
117     // ~~~~~~~~~~~~~~~~~~~~~
119     // If local number of cells is >= maxLocalCells on any processor
120     // switches from from refinement followed by balancing
121     // (current method) to (weighted) balancing before refinement.
122     maxLocalCells 1000000;
124     // Overall cell limit (approximately). Refinement will stop immediately
125     // upon reaching this number so a refinement level might not complete.
126     // Note that this is the number of cells before removing the part which
127     // is not 'visible' from the keepPoint. The final number of cells might
128     // actually be a lot less.
129     maxGlobalCells 2000000;
131     // The surface refinement loop might spend lots of iterations refining just a
132     // few cells. This setting will cause refinement to stop if <= minimumRefine
133     // are selected for refinement. Note: it will at least do one iteration
134     // (unless the number of cells to refine is 0)
135     minRefinementCells 100;
137     // Number of buffer layers between different levels.
138     // 1 means normal 2:1 refinement restriction, larger means slower
139     // refinement.
140     nCellsBetweenLevels 1;
144     // Explicit feature edge refinement
145     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
147     // Specifies a level for any cell intersected by its edges.
148     // This is a featureEdgeMesh, read from constant/triSurface for now.
149     features
150     (
151         {
152             file "fridgeA.eMesh";
153             level 3;
154         }
155     );
159     // Surface based refinement
160     // ~~~~~~~~~~~~~~~~~~~~~~~~
162     // Specifies two levels for every surface. The first is the minimum level,
163     // every cell intersecting a surface gets refined up to the minimum level.
164     // The second level is the maximum level. Cells that 'see' multiple
165     // intersections where the intersections make an
166     // angle > resolveFeatureAngle get refined up to the maximum level.
168     refinementSurfaces
169     {
170         twoFridgeFreezers
171         {
172             // Surface-wise min and max refinement level
173             level (2 2);
175             regions
176             {
177                 // Region-wise override
178                 "cook.*"
179                 {
180                     level (3 3);
181                 }
182             }
183         }
185         "iglo.*"
186         {
187             // Surface-wise min and max refinement level
188             level (1 1);
189         }
190     }
192     // Resolve sharp angles on fridges
193     resolveFeatureAngle 60;
196     // Region-wise refinement
197     // ~~~~~~~~~~~~~~~~~~~~~~
199     // Specifies refinement level for cells in relation to a surface. One of
200     // three modes
201     // - distance. 'levels' specifies per distance to the surface the
202     //   wanted refinement level. The distances need to be specified in
203     //   descending order.
204     // - inside. 'levels' is only one entry and only the level is used. All
205     //   cells inside the surface get refined up to the level. The surface
206     //   needs to be closed for this to be possible.
207     // - outside. Same but cells outside.
209     refinementRegions
210     {
211     }
214     // Mesh selection
215     // ~~~~~~~~~~~~~~
217     // After refinement patches get added for all refinementSurfaces and
218     // all cells intersecting the surfaces get put into these patches. The
219     // section reachable from the locationInMesh is kept.
220     // NOTE: This point should never be on a face, always inside a cell, even
221     // after refinement.
222     locationInMesh (3 0.28 0.43);
225     // Whether any faceZones (as specified in the refinementSurfaces)
226     // are only on the boundary of corresponding cellZones or also allow
227     // free-standing zone faces. Not used if there are no faceZones.
228     allowFreeStandingZoneFaces true;
233 // Settings for the snapping.
234 snapControls
236     //- Number of patch smoothing iterations before finding correspondence
237     //  to surface
238     nSmoothPatch 3;
240     //- Relative distance for points to be attracted by surface feature point
241     //  or edge. True distance is this factor times local
242     //  maximum edge length.
243     tolerance 4.0;
245     //- Number of mesh displacement relaxation iterations.
246     nSolveIter 30;
248     //- Maximum number of snapping relaxation iterations. Should stop
249     //  before upon reaching a correct mesh.
250     nRelaxIter 5;
255 // Settings for the layer addition.
256 addLayersControls
258     // Are the thickness parameters below relative to the undistorted
259     // size of the refined cell outside layer (true) or absolute sizes (false).
260     relativeSizes true;
262     // Per final patch (so not geometry!) the layer information
263     layers
264     {
265         "two.*"
266         {
267             nSurfaceLayers 3;
268         }
269         "igloo_.*"
270         {
271             nSurfaceLayers 1;
272         }
273     }
275     // Expansion factor for layer mesh
276     expansionRatio 1.0;
278     //- Wanted thickness of final added cell layer. If multiple layers
279     //  is the
280     //  thickness of the layer furthest away from the wall.
281     //  Relative to undistorted size of cell outside layer.
282     //  is the thickness of the layer furthest away from the wall.
283     //  See relativeSizes parameter.
284     finalLayerThickness 0.5;
286     //- Minimum thickness of cell layer. If for any reason layer
287     //  cannot be above minThickness do not add layer.
288     //  Relative to undistorted size of cell outside layer.
289     //  See relativeSizes parameter.
290     minThickness 0.25;
292     //- If points get not extruded do nGrow layers of connected faces that are
293     //  also not grown. This helps convergence of the layer addition process
294     //  close to features.
295     // Note: changed(corrected) w.r.t 17x! (didn't do anything in 17x)
296     nGrow 0;
299     // Advanced settings
301     //- When not to extrude surface. 0 is flat surface, 90 is when two faces
302     //  make straight angle.
303     featureAngle 60;
305     //- Maximum number of snapping relaxation iterations. Should stop
306     //  before upon reaching a correct mesh.
307     nRelaxIter 5;
309     // Number of smoothing iterations of surface normals
310     nSmoothSurfaceNormals 1;
312     // Number of smoothing iterations of interior mesh movement direction
313     nSmoothNormals 3;
315     // Smooth layer thickness over surface patches
316     nSmoothThickness 10;
318     // Stop layer growth on highly warped cells
319     maxFaceThicknessRatio 0.5;
321     // Reduce layer growth where ratio thickness to medial
322     // distance is large
323     maxThicknessToMedialRatio 0.3;
325     // Angle used to pick up medial axis points
326     // Note: changed(corrected) w.r.t 16x! 90 degrees corresponds to 130 in 16x.
327     minMedianAxisAngle 90;
329     // Create buffer region for new layer terminations
330     nBufferCellsNoExtrude 0;
333     // Overall max number of layer addition iterations. The mesher will exit
334     // if it reaches this number of iterations; possibly with an illegal
335     // mesh.
336     nLayerIter 50;
341 // Generic mesh quality settings. At any undoable phase these determine
342 // where to undo.
343 meshQualityControls
345     //- Maximum non-orthogonality allowed. Set to 180 to disable.
346     maxNonOrtho 65;
348     //- Max skewness allowed. Set to <0 to disable.
349     maxBoundarySkewness 20;
350     maxInternalSkewness 4;
352     //- Max concaveness allowed. Is angle (in degrees) below which concavity
353     //  is allowed. 0 is straight face, <0 would be convex face.
354     //  Set to 180 to disable.
355     maxConcave 80;
357     //- Minimum pyramid volume. Is absolute volume of cell pyramid.
358     //  Set to a sensible fraction of the smallest cell volume expected.
359     //  Set to very negative number (e.g. -1E30) to disable.
360     minVol 1e-13;
362     //- Minimum quality of the tet formed by the face-centre
363     //  and variable base point minimum decomposition triangles and
364     //  the cell centre.  Set to very negative number (e.g. -1E30) to
365     //  disable.
366     //     <0 = inside out tet,
367     //      0 = flat tet
368     //      1 = regular tet
369     minTetQuality 1e-30;
371     //- Minimum face area. Set to <0 to disable.
372     minArea -1;
374     //- Minimum face twist. Set to <-1 to disable. dot product of face normal
375     //- and face centre triangles normal
376     minTwist 0.05;
378     //- minimum normalised cell determinant
379     //- 1 = hex, <= 0 = folded or flattened illegal cell
380     minDeterminant 0.001;
382     //- minFaceWeight (0 -> 0.5)
383     minFaceWeight 0.05;
385     //- minVolRatio (0 -> 1)
386     minVolRatio 0.01;
388     //must be >0 for Fluent compatibility
389     minTriangleTwist -1;
392     // Advanced
394     //- Number of error distribution iterations
395     nSmoothScale 4;
396     //- amount to scale back displacement at error points
397     errorReduction 0.75;
401 // Advanced
403 // Flags for optional output
404 // 0 : only write final meshes
405 // 1 : write intermediate meshes
406 // 2 : write volScalarField with cellLevel for postprocessing
407 // 4 : write current intersections as .obj files
408 debug 0;
411 // Merge tolerance. Is fraction of overall bounding box of initial mesh.
412 // Note: the write tolerance needs to be higher than this.
413 mergeTolerance 1e-6;
416 // ************************************************************************* //