BUG: UListIO: byteSize overflowing on really big faceLists
[OpenFOAM-2.0.x.git] / tutorials / incompressible / windSimpleFoam / turbineSiting / system / snappyHexMeshDict
blob286249c2a48066fc4cc28a3c9d50833114101f03
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.org                      |
6 |    \\/     M anipulation  |                                                 |
7 \*---------------------------------------------------------------------------*/
8 FoamFile
10     version     2.0;
11     format      ascii;
12     class       dictionary;
13     object      snappyHexMeshDict;
16 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
18 // Which of the steps to run
19 castellatedMesh true;
20 snap            true;
21 addLayers       false;
24 // Geometry. Definition of all surfaces. All surfaces are of class
25 // searchableSurface.
26 // Surfaces are used
27 // - to specify refinement for any mesh cell intersecting it
28 // - to specify refinement for any mesh cell inside/outside/near
29 // - to 'snap' the mesh boundary to the surface
30 geometry
33     windTurbine1
34     {
35         type searchableBox;
36         min (581845 4785805 1061);
37         max (581855 4785815 1071);
38     }
40     windTurbine2
41     {
42         type searchableBox;
43         min (581740 4785658 1065);
44         max (581771 4785671 1079);
45     }
47     terrain.stl
48     {
49         type triSurfaceMesh;
50         name terrain;
52         //tolerance   1e-5;   // optional:non-default tolerance on intersections
53         //maxTreeDepth 10;    // optional:depth of octree. Decrease only in case
54                               // of memory limitations.
56         // Per region the patchname. If not provided will be <name>_<region>.
58         regions
59         {
60             secondSolid
61             {
62                 name mySecondPatch;
63             }
64         }
66     }
68     sphere2
69     {
70         type searchableSphere;
71         centre  (1.5 1.5 1.5);
72         radius  1.03;
73     }
79 // Settings for the castellatedMesh generation.
80 castellatedMeshControls
83     // Refinement parameters
84     // ~~~~~~~~~~~~~~~~~~~~~
86     // If local number of cells is >= maxLocalCells on any processor
87     // switches from from refinement followed by balancing
88     // (current method) to (weighted) balancing before refinement.
89     maxLocalCells 100000;
91     // Overall cell limit (approximately). Refinement will stop immediately
92     // upon reaching this number so a refinement level might not complete.
93     // Note that this is the number of cells before removing the part which
94     // is not 'visible' from the keepPoint. The final number of cells might
95     // actually be a lot less.
96     maxGlobalCells 2000000;
98     // The surface refinement loop might spend lots of iterations
99     // refining just a few cells. This setting will cause refinement
100     // to stop if <= minimumRefine are selected for refinement. Note:
101     // it will at least do one iteration (unless the number of cells
102     // to refine is 0)
103     minRefinementCells 0;
105     // Allow a certain level of imbalance during refining
106     // (since balancing is quite expensive)
107     // Expressed as fraction of perfect balance (= overall number of cells /
108     // nProcs). 0=balance always.
109     maxLoadUnbalance 0.10;
112     // Number of buffer layers between different levels.
113     // 1 means normal 2:1 refinement restriction, larger means slower
114     // refinement.
115     nCellsBetweenLevels 1;
119     // Explicit feature edge refinement
120     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
122     // Specifies a level for any cell intersected by its edges.
123     // This is a featureEdgeMesh, read from constant/triSurface for now.
124     features
125     (
126         //{
127         //    file "someLine.eMesh";
128         //    level 2;
129         //}
130     );
134     // Surface based refinement
135     // ~~~~~~~~~~~~~~~~~~~~~~~~
137     // Specifies two levels for every surface. The first is the minimum level,
138     // every cell intersecting a surface gets refined up to the minimum level.
139     // The second level is the maximum level. Cells that 'see' multiple
140     // intersections where the intersections make an
141     // angle > resolveFeatureAngle get refined up to the maximum level.
143     refinementSurfaces
144     {
145         terrain
146         {
147             // Surface-wise min and max refinement level
148             level (2 2);
150             // Optional region-wise level specification
152             regions
153             {
154                 windTurbine
155                 {
156                     level (3 3);
157                 }
158             }
160             //- Optional angle to detect small-large cell situation
161             //  perpendicular to the surface. Is the angle of face w.r.t.
162             //  the local surface normal. Use on flat(ish) surfaces only.
163             //  Otherwise leave out or set to negative number.
164             //perpendicularAngle 10;
167             //- Optional faceZone and (for closed surface) cellZone with
168             //  how to select the cells that are in the cellZone
169             //  (inside / outside / specified insidePoint)
170             //faceZone sphere;
171             //cellZone sphere;
172             //cellZoneInside inside;  //outside/insidePoint
173         }
174     }
176     resolveFeatureAngle 2;
179     // Region-wise refinement
180     // ~~~~~~~~~~~~~~~~~~~~~~
182     // Specifies refinement level for cells in relation to a surface. One of
183     // three modes
184     // - distance. 'levels' specifies per distance to the surface the
185     //   wanted refinement level. The distances need to be specified in
186     //   descending order.
187     // - inside. 'levels' is only one entry and only the level is used. All
188     //   cells inside the surface get refined up to the level. The surface
189     //   needs to be closed for this to be possible.
190     // - outside. Same but cells outside.
192     refinementRegions
193     {
195         windTurbine1
196         {
197             mode inside;
198             levels ((6 6));
199         }
201         windTurbine2
202         {
203             mode inside;
204             levels ((6 6));
205         }
206         //sphere.stl
207         //{
208         //    mode distance;
209         //    levels ((1.0 5) (2.0 3));
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 (581770 4.78580e+06 1050);
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         sphere.stl_firstSolid
266         {
267             nSurfaceLayers 1;
269         }
270         maxY
271         {
272             nSurfaceLayers 1;
273         }
274     }
276     // Expansion factor for layer mesh
277     expansionRatio 1.0;
280     //- Wanted thickness of final added cell layer. If multiple layers
281     //  is the thickness of the layer furthest away from the wall.
282     //  See relativeSizes parameter.
283     finalLayerThickness 0.3;
285     //- Minimum thickness of cell layer. If for any reason layer
286     //  cannot be above minThickness do not add layer.
287     //  See relativeSizes parameter.
288     minThickness 0.25;
290     //- If points get not extruded do nGrow layers of connected faces that are
291     //  also not grown. This helps convergence of the layer addition process
292     //  close to features.
293     // Note: changed(corrected) w.r.t 17x! (didn't do anything in 17x)
294     nGrow 0;
297     // Advanced settings
299     //- When not to extrude surface. 0 is flat surface, 90 is when two faces
300     //  make straight angle.
301     featureAngle 60;
303     //- Maximum number of snapping relaxation iterations. Should stop
304     //  before upon reaching a correct mesh.
305     nRelaxIter 5;
307     // Number of smoothing iterations of surface normals
308     nSmoothSurfaceNormals 1;
310     // Number of smoothing iterations of interior mesh movement direction
311     nSmoothNormals 3;
313     // Smooth layer thickness over surface patches
314     nSmoothThickness 10;
316     // Stop layer growth on highly warped cells
317     maxFaceThicknessRatio 0.5;
319     // Reduce layer growth where ratio thickness to medial
320     // distance is large
321     maxThicknessToMedialRatio 0.3;
323     // Angle used to pick up medial axis points
324     // Note: changed(corrected) w.r.t 16x! 90 degrees corresponds to 130 in 16x.
325     minMedianAxisAngle 90;
327     // Create buffer region for new layer terminations
328     nBufferCellsNoExtrude 0;
331     // Overall max number of layer addition iterations. The mesher will exit
332     // if it reaches this number of iterations; possibly with an illegal
333     // mesh.
334     nLayerIter 50;
336     // Max number of iterations after which relaxed meshQuality controls
337     // get used. Up to nRelaxIter it uses the settings in meshQualityControls,
338     // after nRelaxIter it uses the values in meshQualityControls::relaxed.
339     nRelaxedIter 20;
344 // Generic mesh quality settings. At any undoable phase these determine
345 // where to undo.
346 meshQualityControls
348     //- Maximum non-orthogonality allowed. Set to 180 to disable.
349     maxNonOrtho 65;
351     //- Max skewness allowed. Set to <0 to disable.
352     maxBoundarySkewness 20;
353     maxInternalSkewness 4;
355     //- Max concaveness allowed. Is angle (in degrees) below which concavity
356     //  is allowed. 0 is straight face, <0 would be convex face.
357     //  Set to 180 to disable.
358     maxConcave 80;
360     //- Minimum pyramid volume. Is absolute volume of cell pyramid.
361     //  Set to a sensible fraction of the smallest cell volume expected.
362     //  Set to very negative number (e.g. -1E30) to disable.
363     minVol 1e-13;
365     //- Minimum quality of the tet formed by the face-centre
366     //  and variable base point minimum decomposition triangles and
367     //  the cell centre.  Set to very negative number (e.g. -1E30) to
368     //  disable.
369     //     <0 = inside out tet,
370     //      0 = flat tet
371     //      1 = regular tet
372     minTetQuality 1e-30;
374     //- Minimum face area. Set to <0 to disable.
375     minArea -1;
377     //- Minimum face twist. Set to <-1 to disable. dot product of face normal
378     //- and face centre triangles normal
379     minTwist 0.05;
381     //- minimum normalised cell determinant
382     //- 1 = hex, <= 0 = folded or flattened illegal cell
383     minDeterminant 0.001;
385     //- minFaceWeight (0 -> 0.5)
386     minFaceWeight 0.05;
388     //- minVolRatio (0 -> 1)
389     minVolRatio 0.01;
391     //must be >0 for Fluent compatibility
392     minTriangleTwist -1;
394     //- if >0 : preserve single cells with all points on the surface if the
395     //  resulting volume after snapping (by approximation) is larger than
396     //  minVolCollapseRatio times old volume (i.e. not collapsed to flat cell).
397     //  If <0 : delete always.
398     //minVolCollapseRatio 0.5;
401     // Advanced
403     //- Number of error distribution iterations
404     nSmoothScale 4;
405     //- amount to scale back displacement at error points
406     errorReduction 0.75;
410     // Optional : some meshing phases allow usage of relaxed rules.
411     // See e.g. addLayersControls::nRelaxedIter.
412     relaxed
413     {
414         //- Maximum non-orthogonality allowed. Set to 180 to disable.
415         maxNonOrtho 75;
416     }
420 // Advanced
422 // Flags for optional output
423 // 0 : only write final meshes
424 // 1 : write intermediate meshes
425 // 2 : write volScalarField with cellLevel for postprocessing
426 // 4 : write current intersections as .obj files
427 debug 0;
430 // Merge tolerance. Is fraction of overall bounding box of initial mesh.
431 // Note: the write tolerance needs to be higher than this.
432 mergeTolerance 1e-6;
435 // ************************************************************************* //