|
[Sponsors] |
[snappyHexMesh] Layers not growing at all |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
October 21, 2017, 12:34 |
Layers not growing at all
|
#1 |
New Member
Francesco Liuzzi
Join Date: Jul 2017
Posts: 15
Rep Power: 9 |
Hello to all the forum community
Some months ago i posted on this forum because of a problem with the mesh modification of a combustion chamber that was, in the end, solved. Now, however, I got a new problem. I want to create a layer around the striction you can see in the picture. The striction was previously created always with sHM from the plain cilinder subtracting a stl file. layer1.jpg The various parameters in the addLayersControl inside the sHMdict are still not completely clear to me, but whatever i try to do does not give any results, no layers genereted and even the number of cells remains the same. Any suggestion? Here i'm providing the sHMdict of the case (the last used) Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 4.1 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object snappyHexMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Which of the steps to run castellatedMesh true; snap true; addLayers true; // 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 { Cavcilnolayer.stl { type triSurfaceMesh; name Cavcilnolayer; } refinementBox { type searchableBox; min (-1 -1 0.32); //(-1 -1 0.32)(-1 -1 0.3); max (1 1 0.40); //(1 1 0.4)( 1 1 0.45); } }; // 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 10000; //10000 // 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 1500000; //1800000 // 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; //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; // Number of buffer layers between different levels. // 1 means normal 2:1 refinement restriction, larger means slower // refinement. nCellsBetweenLevels 1; //1 // 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 "Cavcilnolayer.eMesh"; level 0; //3, 4 } ); // 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 { Cavcilnolayer { // Surface-wise min and max refinement level level (0 0); //(3 4) // Optional specification of patch type (default is wall). No // constraint types (cyclic, symmetry) etc. are allowed. patchInfo { type wall; inGroups (CavcilnolayerGroup); } } } // Resolve sharp angles // Applies maximum level of refinement to cells that can see intersections whose // angle exceeds this resolveFeatureAngle 30; // 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 { refinementBox { mode inside; levels ((1.0 0)); //(0.001 1) (0.0025 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. locationInMesh (0.0 0.0 0.35); // 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; } // Settings for the snapping. snapControls { //- Number of patch smoothing iterations before finding correspondence // to surface nSmoothPatch 5; //- Relative distance for points to be attracted by surface feature point // or edge. True distance is this factor times local // maximum edge length. tolerance 2.0; //- Number of mesh displacement relaxation iterations. nSolveIter 30; //- Maximum number of snapping relaxation iterations. Should stop // before upon reaching a correct mesh. nRelaxIter 5; // Feature snapping //- Number of feature edge snapping iterations. // Leave out altogether to disable. nFeatureSnapIter 10; //- 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; } // 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 false; // Per final patch (so not geometry!) the layer information layers { Cavcilnolayer { nSurfaceLayers 20; } } // 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.1; // 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 1; // 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-6s; // ************************************************************************* // Big thanks to all of you |
|
October 22, 2017, 16:28 |
|
#2 |
Super Moderator
Tobias Holzmann
Join Date: Oct 2010
Location: Bad Wörishofen
Posts: 2,711
Blog Entries: 6
Rep Power: 52 |
Hi,
it would be nice to get the logfile of the sHM output to tell you more. By the way a few hints:
__________________
Keep foaming, Tobias Holzmann |
|
October 23, 2017, 05:50 |
|
#3 |
New Member
Francesco Liuzzi
Join Date: Jul 2017
Posts: 15
Rep Power: 9 |
Ok so, as you asked here i'm providing the log file of the running, but only the layers addition part, the whole log is too long to be posted, hope will be enough.
Code:
/*---------------------------------------------------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 3.0.1 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ Build : 3.0.1-d8a290b55d28 Exec : snappyHexMesh Date : Oct 23 2017 Time : 10:57:50 Host : "an04" PID : 16253 Case : /utenti/simulation/OpenFOAM/simulation-3.0.1/run/cases/AeroSpaceProp/GreenEngine/francesco/Progetto_main_francesco nProcs : 1 sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE). fileModificationChecking : Monitoring run-time modified files using timeStampMaster allowSystemOperations : Allowing user-supplied system call operations [...] Layer addition iteration 0 -------------------------- Determining displacement for added points according to pointNormal ... Detected 0 points with point normal pointing through faces. Reset displacement at 0 points to average of surrounding points. displacementMedialAxis : Smoothing using Medial Axis ... displacementMedialAxis : Reducing layer thickness at 3468 nodes where thickness to medial axis distance is large displacementMedialAxis : Removing isolated regions ... displacementMedialAxis : Number of isolated points extrusion stopped : 0 displacementMedialAxis : Smoothing field ... Iteration 0 residual 0.0117393 displacementMedialAxis : Moving mesh ... displacementMedialAxis : Iteration 0 Moving mesh using displacement scaling : min:1 max:1 Checking faces in error : non-orthogonality > 65 degrees : 2288933 faces with face pyramid volume < 1e-13 : 61567 faces with face-decomposition tet quality < 1e-15 : 22929 faces with concavity > 80 degrees : 18 faces with skewness > 4 (internal) or 20 (boundary) : 136 faces with interpolation weights (0..1) < 0.02 : 7524 faces with volume ratio of neighbour cells < 0.01 : 1176 faces with face twist < 0.02 : 99 faces on cells with determinant < 0.001 : 216862 displacementMedialAxis : Iteration 1 Moving mesh using displacement scaling : min:0.75 max:1 Checking faces in error : non-orthogonality > 65 degrees : 2601847 faces with face pyramid volume < 1e-13 : 69577 faces with face-decomposition tet quality < 1e-15 : 37547 faces with concavity > 80 degrees : 523 faces with skewness > 4 (internal) or 20 (boundary) : 299 faces with interpolation weights (0..1) < 0.02 : 6362 faces with volume ratio of neighbour cells < 0.01 : 2677 faces with face twist < 0.02 : 222 faces on cells with determinant < 0.001 : 239040 displacementMedialAxis : Iteration 2 Moving mesh using displacement scaling : min:0.5625 max:1 Checking faces in error : non-orthogonality > 65 degrees : 2755444 faces with face pyramid volume < 1e-13 : 78650 faces with face-decomposition tet quality < 1e-15 : 49930 faces with concavity > 80 degrees : 1140 faces with skewness > 4 (internal) or 20 (boundary) : 178 faces with interpolation weights (0..1) < 0.02 : 6308 faces with volume ratio of neighbour cells < 0.01 : 3259 faces with face twist < 0.02 : 968 faces on cells with determinant < 0.001 : 220162 displacementMedialAxis : Iteration 3 displacementMedialAxis : Displacement scaling for error reduction set to 0. Moving mesh using displacement scaling : min:0.421875 max:1 Checking faces in error : non-orthogonality > 65 degrees : 2851712 faces with face pyramid volume < 1e-13 : 85402 faces with face-decomposition tet quality < 1e-15 : 62901 faces with concavity > 80 degrees : 1610 faces with skewness > 4 (internal) or 20 (boundary) : 139 faces with interpolation weights (0..1) < 0.02 : 6169 faces with volume ratio of neighbour cells < 0.01 : 3424 faces with face twist < 0.02 : 1470 faces on cells with determinant < 0.001 : 178857 displacementMedialAxis : Iteration 4 Moving mesh using displacement scaling : min:0 max:1 Checking faces in error : non-orthogonality > 65 degrees : 149415 faces with face pyramid volume < 1e-13 : 1013 faces with face-decomposition tet quality < 1e-15 : 4200 faces with concavity > 80 degrees : 163 faces with skewness > 4 (internal) or 20 (boundary) : 29 faces with interpolation weights (0..1) < 0.02 : 4534 faces with volume ratio of neighbour cells < 0.01 : 48 faces with face twist < 0.02 : 310 faces on cells with determinant < 0.001 : 8591 displacementMedialAxis : Iteration 5 Moving mesh using displacement scaling : min:0 max:1 Checking faces in error : non-orthogonality > 65 degrees : 66136 faces with face pyramid volume < 1e-13 : 181 faces with face-decomposition tet quality < 1e-15 : 1291 faces with concavity > 80 degrees : 29 faces with skewness > 4 (internal) or 20 (boundary) : 15 faces with interpolation weights (0..1) < 0.02 : 1726 faces with volume ratio of neighbour cells < 0.01 : 3 faces with face twist < 0.02 : 12 faces on cells with determinant < 0.001 : 1957 displacementMedialAxis : Finished moving mesh ... truncateDisplacement : Unextruded 0 faces due to non-consecutive vertices being extruded. truncateDisplacement : Unextruded 0 faces due to stringed edges with inconsistent extrusion. Setting up information for layer truncation ... Checking mesh with layer ... Checking faces in error : non-orthogonality > 65 degrees : 66266 faces with face pyramid volume < 1e-13 : 166 faces with face-decomposition tet quality < 1e-15 : 1262 faces with concavity > 80 degrees : 29 faces with skewness > 4 (internal) or 20 (boundary) : 15 faces with interpolation weights (0..1) < 0.02 : 1726 faces with volume ratio of neighbour cells < 0.01 : 3 faces with face twist < 0.02 : 0 faces on cells with determinant < 0.001 : 1989 Detected 71456 illegal faces (concave, zero area or negative cell pyramid volume) Extruding 0 out of 7650 faces (0%). Removed extrusion at 27 faces. Added 56 out of 153000 cells (0.0366013%). Growing non-extrusion points by one layer ... Set displacement to zero for an additional 0 points. Layer addition iteration 1 -------------------------- Determining displacement for added points according to pointNormal ... Detected 0 points with point normal pointing through faces. Reset displacement at 0 points to average of surrounding points. displacementMedialAxis : Smoothing using Medial Axis ... displacementMedialAxis : Reducing layer thickness at 0 nodes where thickness to medial axis distance is large displacementMedialAxis : Removing isolated regions ... displacementMedialAxis : Number of isolated points extrusion stopped : 0 displacementMedialAxis : Smoothing field ... Iteration 0 residual 0 displacementMedialAxis : Moving mesh ... displacementMedialAxis : Iteration 0 Moving mesh using displacement scaling : min:1 max:1 Checking faces in error : non-orthogonality > 65 degrees : 20046 faces with face pyramid volume < 1e-13 : 0 faces with face-decomposition tet quality < 1e-15 : 0 faces with concavity > 80 degrees : 0 faces with skewness > 4 (internal) or 20 (boundary) : 0 faces with interpolation weights (0..1) < 0.02 : 1 faces with volume ratio of neighbour cells < 0.01 : 0 faces with face twist < 0.02 : 0 faces on cells with determinant < 0.001 : 76 displacementMedialAxis : Successfully moved mesh displacementMedialAxis : Finished moving mesh ... truncateDisplacement : Unextruded 0 faces due to non-consecutive vertices being extruded. truncateDisplacement : Unextruded 0 faces due to stringed edges with inconsistent extrusion. Setting up information for layer truncation ... Checking mesh with layer ... Checking faces in error : non-orthogonality > 65 degrees : 20046 faces with face pyramid volume < 1e-13 : 0 faces with face-decomposition tet quality < 1e-15 : 0 faces with concavity > 80 degrees : 0 faces with skewness > 4 (internal) or 20 (boundary) : 0 faces with interpolation weights (0..1) < 0.02 : 1 faces with volume ratio of neighbour cells < 0.01 : 0 faces with face twist < 0.02 : 0 faces on cells with determinant < 0.001 : 76 Detected 20123 illegal faces (concave, zero area or negative cell pyramid volume) Extruding 0 out of 7650 faces (0%). Removed extrusion at 0 faces. Added 0 out of 153000 cells (0%). Edge intersection testing: Number of edges : 4047139 Number of edges to retest : 0 Number of intersected edges : 7650 Writing 0 added cells to cellSet addedCells Writing 0 faces inside added layer to faceSet layerFaces Writing fields with layer information: nSurfaceLayers : actual number of layers thickness : overall layer thickness thicknessFraction : overall layer thickness (fraction of desired thickness) patch faces layers overall thickness [m] [%] ----- ----- ------ --- --- Cavcilnolayer 7650 0 0 0 Layer mesh : cells:1337376 faces:4047139 points:1372681 Cells per refinement level: 0 1337376 Writing mesh to time 3e-05 Wrote mesh in = 201.21 s. Layers added in = 201.21 s. Checking final mesh ... Checking faces in error : non-orthogonality > 65 degrees : 20046 faces with face pyramid volume < 1e-13 : 0 faces with face-decomposition tet quality < 1e-15 : 0 faces with concavity > 80 degrees : 0 faces with skewness > 4 (internal) or 20 (boundary) : 0 faces with interpolation weights (0..1) < 0.02 : 1 faces with volume ratio of neighbour cells < 0.01 : 0 faces with face twist < 0.02 : 0 faces on cells with determinant < 0.001 : 76 Finished meshing with 20123 illegal faces (concave, zero area or negative cell pyramid volume) Finished meshing in = 673.44 s. End Thank for your reply |
|
October 23, 2017, 06:35 |
|
#4 |
Super Moderator
Tobias Holzmann
Join Date: Oct 2010
Location: Bad Wörishofen
Posts: 2,711
Blog Entries: 6
Rep Power: 52 |
Hi, based on your output you can directly say: No Layer will be generated. You have only problems. What do I mean: E.g.
Code:
0.37500E-03 non-orthogonality > 65 degrees : 2288933 faces with face pyramid volume < 1e-13 : 61567 faces with face-decomposition tet quality < 1e-15 : 22929 faces with concavity > 80 degrees : 18 faces with skewness > 4 (internal) or 20 (boundary) : 136 faces with interpolation weights (0..1) < 0.02 : 7524 faces with volume ratio of neighbour cells < 0.01 : 1176 faces with face twist < 0.02 : 99 faces on cells with determinant < 0.001 : 216862
__________________
Keep foaming, Tobias Holzmann |
|
October 24, 2017, 08:47 |
|
#5 |
New Member
Francesco Liuzzi
Join Date: Jul 2017
Posts: 15
Rep Power: 9 |
I have tried the values you have suggested me in your first reply and they worked, as you can see:
layeredmesh.jpg Now i want to make them a bit thicker, so i think i just have to properly modify the parameters related to thickness, am i right? |
|
October 24, 2017, 08:54 |
|
#6 |
Super Moderator
Tobias Holzmann
Join Date: Oct 2010
Location: Bad Wörishofen
Posts: 2,711
Blog Entries: 6
Rep Power: 52 |
Hi,
you are wrong. The thickness parameter (as it is written in the comments) are adjusting the final layer thickness. The growth is based on the expansionRatio. I would suggest you to read the comments in the file + search for the snappyHexMesh PDF from Engys. Good luck.
__________________
Keep foaming, Tobias Holzmann |
|
October 24, 2017, 10:39 |
|
#7 |
Super Moderator
Tobias Holzmann
Join Date: Oct 2010
Location: Bad Wörishofen
Posts: 2,711
Blog Entries: 6
Rep Power: 52 |
I just want to mention that you can checkout that case too: http://www.holzmann-cfd.de/index.php...sphere-meshing
__________________
Keep foaming, Tobias Holzmann |
|
November 13, 2017, 07:41 |
|
#8 |
New Member
Francesco Liuzzi
Join Date: Jul 2017
Posts: 15
Rep Power: 9 |
Ok so, sorry for being late with this answer, but it took some time to try to grow better layers. The fact is that openFoam doesn't allow me to grow bigger layers than those you can see in the previous post, if i modify the values the layers disappear. However, talking to my teacher he said that these are good for my task, so i consider myself satisfied. I want to thank you tobi for your decisive help
|
|
March 4, 2020, 06:23 |
|
#9 | |
Senior Member
Ali Shayegh
Join Date: Oct 2015
Posts: 131
Rep Power: 11 |
Quote:
Edit Question: Why addLayers does not add layers which are specified in snappyHexMeshDict? Answer:To state a more general solution, we have to refer to output log of snappyHexMesh. In doing so, we will find lines like this (there are a repetition of these lines, but I mean those appearing under Checking mesh with layer ... ): Code:
Checking mesh with layer ... Checking faces in error : non-orthogonality > 65 degrees : 0 faces with face pyramid volume < 1e-13 : 0 faces with face-decomposition tet quality < 1e-15 : 0 faces with concavity > 80 degrees : 0 faces with skewness > 4 (internal) or 20 (boundary) : 0 faces with interpolation weights (0..1) < 0.05 : 30 faces with volume ratio of neighbour cells < 0.01 : 0 faces with face twist < 0.02 : 0 faces on cells with determinant < 0.001 : 120 Therefore the solution is to go to meshQualityDict/meshQualityControls and remove these restrictions by changing their value appropriately. Comments usually suggest these values (e.g. OpenFOAM 7). Best, Ali Last edited by amuzeshi; March 4, 2020 at 09:39. |
||
March 4, 2020, 13:48 |
|
#10 |
Super Moderator
Tobias Holzmann
Join Date: Oct 2010
Location: Bad Wörishofen
Posts: 2,711
Blog Entries: 6
Rep Power: 52 |
Just one comment. If you tell snappy to make just one iteration while deactivating the quality criteria, you will get the layers as expected. However, if this does make sense in a numerical point of view, I am not sure
__________________
Keep foaming, Tobias Holzmann |
|
March 5, 2020, 08:59 |
|
#11 |
Senior Member
Ali Shayegh
Join Date: Oct 2015
Posts: 131
Rep Power: 11 |
In simple domains like flow around a cylinder, this doesn't cause a problem. BTW, checkMesh can be used after layer addition step in order to return potentially bad cells.
|
|
June 6, 2020, 12:28 |
|
#13 |
Senior Member
Ali Shayegh
Join Date: Oct 2015
Posts: 131
Rep Power: 11 |
I am going to create a rectangular gap in a uniform 2D mesh. To this end, I used snappyHexMesh. While going only through castellation step gives a visually correct mesh, If I go through snap step, it produces a wrong mesh. Can I rely on the output of castellation step as a body-fitted mesh and do not go through snap step?
snappyHexMesh is given below: Code:
/*--------------------------------*- C++ -*----------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org \\ / A nd | Version: 7 \\/ M anipulation | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object snappyHexMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Which of the steps to run castellatedMesh true; snap true; addLayers false; geometry { box1 { type searchableBox; min (7.53 5.19 -100); max (12.53 5.69 100); } street { type triSurfaceMesh; file "topStreetMain.stl" // file "test1.stl"; } sphere2 { type searchableSphere; centre (1.5 1.5 1.5); radius 1.03; } }; // Settings for the castellatedMesh generation. castellatedMeshControls { maxLocalCells 100000; maxGlobalCells 2000000; minRefinementCells 0; maxLoadUnbalance 0.10; nCellsBetweenLevels 1; features ( //{ // file "topStreetMain.extendedFeatureEdgeMesh"; // level 2; // // levels ((0.0 2) // // (1.0 3) // // ); //} ); refinementSurfaces { street // box1 { // Surface-wise min and max refinement level level (1 2); } } resolveFeatureAngle 30; planarAngle 30; refinementRegions { } locationInMesh (10 2 50); allowFreeStandingZoneFaces true; } // Settings for the snapping. snapControls { // Number of patch smoothing iterations before finding correspondence // to surface nSmoothPatch 30; // Maximum relative distance for points to be attracted by surface. // True distance is this factor times local maximum edge length. // Note: changed(corrected) w.r.t 17x! (17x used 2* tolerance) tolerance 2.0; // Number of mesh displacement relaxation iterations. nSolveIter 30; // Maximum number of snapping relaxation iterations. Should stop // before upon reaching a correct mesh. nRelaxIter 5; // Feature snapping // Number of feature edge snapping iterations. // Leave out altogether to disable. nFeatureSnapIter 10; // Detect (geometric only) features by sampling the surface // (default=false). implicitFeatureSnap false; // Use castellatedMeshControls::features (default = true) explicitFeatureSnap true; // Detect features between multiple surfaces // (only for explicitFeatureSnap, default = false) multiRegionFeatureSnap false; // wip: disable snapping to opposite near surfaces (revert to 22x behaviour) // detectNearSurfacesSnap false; } // 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; // Layer thickness specification. This can be specified in one of following // ways: // - expansionRatio and finalLayerThickness (cell nearest internal mesh) // - expansionRatio and firstLayerThickness (cell on surface) // - overall thickness and firstLayerThickness // - overall thickness and finalLayerThickness // - overall thickness and expansionRatio // // Note: the mode thus selected is global, i.e. one cannot override the // mode on a per-patch basis (only the values can be overridden) // Expansion factor for layer mesh expansionRatio 1.0; // Wanted thickness of the layer furthest away from the wall. // If relativeSizes this is relative to undistorted size of cell // outside layer. finalLayerThickness 0.3; // Wanted thickness of the layer next to the wall. // If relativeSizes this is relative to undistorted size of cell // outside layer. // firstLayerThickness 0.3; // Wanted overall thickness of layers. // If relativeSizes this is relative to undistorted size of cell // outside layer. // thickness 0.5 // Minimum overall thickness of total layers. If for any reason layer // cannot be above minThickness do not add layer. // If relativeSizes this is relative to undistorted size of cell // outside layer.. minThickness 0.25; // Per final patch (so not geometry!) the layer information // Note: This behaviour changed after 21x. Any non-mentioned patches // now slide unless: // - nSurfaceLayers is explicitly mentioned to be 0. // - angle to nearest surface < slipFeatureAngle (see below) layers { sphere_firstSolid { nSurfaceLayers 1; } maxY { nSurfaceLayers 1; // Per patch layer data expansionRatio 1.3; finalLayerThickness 0.3; minThickness 0.1; } // Disable any mesh shrinking and layer addition on any point of // a patch by setting nSurfaceLayers to 0 frozenPatches { nSurfaceLayers 0; } } // 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 // Static analysis of starting mesh // When not to extrude surface. 0 is flat surface, 90 is when two faces // are perpendicular featureAngle 130; // Stop layer growth on highly warped cells maxFaceThicknessRatio 0.5; // Patch displacement // Number of smoothing iterations of surface normals nSmoothSurfaceNormals 1; // Smooth layer thickness over surface patches nSmoothThickness 10; // Medial axis analysis // Angle used to pick up medial axis points // Note: changed(corrected) w.r.t 17x! 90 degrees corresponds to 130 // in 17x. minMedialAxisAngle 90; // Reduce layer growth where ratio thickness to medial // distance is large maxThicknessToMedialRatio 0.3; // Number of smoothing iterations of interior mesh movement direction nSmoothNormals 3; // Optional: limit the number of steps walking away from the surface. // Default is unlimited. // nMedialAxisIter 10; // Optional: smooth displacement after medial axis determination. // default is 0. // nSmoothDisplacement 90; // (wip)Optional: do not extrude a point if none of the surrounding points is // not extruded. Default is false. // detectExtrusionIsland true; // Mesh shrinking // Optional: at non-patched sides allow mesh to slip if extrusion // direction makes angle larger than slipFeatureAngle. Default is // 0.5*featureAngle. slipFeatureAngle 30; // Maximum number of snapping relaxation iterations. Should stop // before upon reaching a correct mesh. nRelaxIter 5; // 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; // Max number of iterations after which relaxed meshQuality controls // get used. Up to nRelaxedIter it uses the settings in // meshQualityControls, // after nRelaxedIter it uses the values in // meshQualityControls::relaxed. nRelaxedIter 20; // Additional reporting: if there are just a few faces where there // are mesh errors (after adding the layers) print their face centres. // This helps in tracking down problematic mesh areas. // additionalReporting true; } // Generic mesh quality settings. At any undoable phase these determine // where to undo. meshQualityControls { // Specify mesh quality constraints in separate dictionary so can // be reused (e.g. checkMesh -meshQuality) #include "meshQualityDict" // Optional : some meshing phases allow usage of relaxed rules. // See e.g. addLayersControls::nRelaxedIter. relaxed { // Maximum non-orthogonality allowed. Set to 180 to disable. maxNonOrtho 75; } } // Advanced //// Debug flags debugFlags ( // mesh // write intermediate meshes // intersections // write current mesh intersections as .obj files // featureSeeds // write information about explicit feature edge // // refinement // attraction // write attraction as .obj files // layerInfo // write information about layers ); // //// Write flags //writeFlags //( // scalarLevels // write volScalarField with cellLevel for postprocessing // layerSets // write cellSets, faceSets of faces in layer // 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; // ************************************************************************* // |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
[snappyHexMesh] Help with Snappy: no layers growing | GianF | OpenFOAM Meshing & Mesh Conversion | 2 | September 23, 2020 09:26 |
[snappyHexMesh] Controlling y+ values with snappyHexMesh? | cjm | OpenFOAM Meshing & Mesh Conversion | 67 | July 10, 2019 19:56 |
[ICEM] Surface/Volume orientation errors growing prism layers | jlichtwa | ANSYS Meshing & Geometry | 17 | September 25, 2018 01:41 |
[snappyHexMesh] poorly growing boundary layers in SnappyHexMesh | DaveR | OpenFOAM Meshing & Mesh Conversion | 2 | August 31, 2016 09:26 |
[ICEM] Prism layers distorted near trailing edge of blade-Unstructured Mesh | Rohith Giridhar | ANSYS Meshing & Geometry | 3 | June 29, 2015 18:52 |