Collapsing Layers
2 Attachment(s)
Hey everyone!
I'm currently working on a simulation of the wind flow over a suburban area. The simulation domain consists of a bigger lake with some islands in it. Of course I want to add layer to the ground surface. But as you can see in the attached images, layers are collapsing. Now I already tried to modify the featureAngle setting but without success. I also tried the solution given in this thread. But the changeDirectory method hasn't worked as well. I attached a second image showing the surface mesh of the ground surface and now I wonder if those cells are the reason for the layers to collapse. I am not that experienced with snappy so I would be more than happy for an advise or two ;) Quick second question: I have several .stl files for the forests in the computed area. I am going to write those areas to cellZones. So that I can later define them as a porous medium. Now if I mesh them relatively coarse in the refinement process, will the layer generation again look for those forest-defining stl's and refine the inside or not? Or are the layers even overriding the cellZones? Thanks in advance, Tim Code:
/*--------------------------------*- C++ -*----------------------------------*\ |
Hello Tim,
I notice that certains parameters that should be under the AddLayerControls dictionary are defined outside the dictionary. See below the parameters that should be moved. I have modified the sub-dictionary for AddLayersControls. __________________________________________________ ___ 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 { domain { nSurfaceLayers 5; } // 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 (374001.1 5810001.1 299.9); // 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; // Expansion factor for layer mesh expansionRatio 1.2; // 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. // is the thickness of the layer furthest away from the wall. // See relativeSizes parameter. finalLayerThickness 0.8; // 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 1; // Advanced settings // When not to extrude surface. 0 is flat surface, 90 is when two faces // are perpendicular featureAngle 180; // 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 1.0; // Reduce layer growth where ratio thickness to medial // distance is large maxThicknessToMedialRatio 1.0; // Angle used to pick up medial axis points // Note: changed(corrected) w.r.t 17x! 90 degrees corresponds to 130 in 17x. minMedianAxisAngle 130; // 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; } |
4 Attachment(s)
Hello Daniel,
thank you for your reply. I fixed the snappyHexMeshDict. Don't know how this happenend. The layer generation does work better now but unfortunatley layers are still collapsing over the domain. I have attached several images showing some of the problematic areas. I'm trying my best to find parameters that suit my surface but to this point without success. It seems that the slightest change of topography (heights or depths) is causing massive trouble. Kind regards, Tim Code:
/*--------------------------------*- C++ -*----------------------------------*\ |
Hello Tim,
Regarding the boundary layers parameters.Note the following : -relativeSizes: This parameter will control the finalLayerThickness parameter. By setting it to true, the finalLayerThickness is divided by the length of the patch, in other words the last boundary layer will be 0.5/patch lenght and not 0.5. -To calculate a reasonable finalLayerThickness, take the length of one cubic element from your blockMesh mesh and divide by 2 power (refinement) or length/2^2. This will give you an estimation of the length of the Snap mesh individual element. Take a percentage of this length (10-15%). -Try lowering your expansionRatio to 1.00-1.08. -The minMedianAxisAngle since very high. Try a lower angle, see 5 degree. This will control the extrusion of the boundary layer when the Snap mesh is translated towards the center. Also, try to generate 1 perfect boundary layer. This link might be also useful: http://www.openfoamwiki.net/index.php/SnappyHexMesh Thanks, Daniel |
3 Attachment(s)
Hey Daniel, thanks again for your help.
As I understand the finalLayerThickness refers to the already refined cell size on that specific surface and not the initial cell size of blockMesh? I have looked up the snappy tutorials you linked for me. I am currently using the '3d meshing of a helix with layer generation' as a template. The results I am getting are way better than before but not as good as they need to be. I managed to generate that one perfect layer but with increasing the number of layers problems begin to show up again. I am using an expansionRatio of 1.0. I have attached images of the same location for 5, 10 and 15 layers. I need layers up to about 40-50 meters of my domain and at the current state my layer thickness is at 1m. Having an expansionRatio anything more than 1 seems to dramatically worsen the results. I'm still trying to experiment with different settings in the Dict but it seems that I am not doing it right :/ Mesh generation from the attached pictures is made with the following settings: Dict: Code:
/*--------------------------------*- C++ -*----------------------------------*\ Code:
/*--------------------------------*- C++ -*----------------------------------*\ Code:
/*--------------------------------*- C++ -*----------------------------------*\ Tim |
Hello Tim,
Since you need a very thick boundary layers relative to your domain, I suggest that you changed the following points: -Change nCellsBetweenLevels to 1 -reduce the refinement to level to 2 for all the surfaces -Set the tolerance to 1 - I have notice that you using the explicitFeatureSnap without the features being defined in the features section of the castellatedMeshControls.Please see this thread: http://www.cfd-online.com/Forums/ope...-new-post.html -You can try and set the relativeSize to false. This way all you declared values for the boundary layers are not relative but true values. -Lower the slipFeatureAngle to say 10. This will control of the points are extruded between patches. -Lower the minMedianAxisAngle to 5. The values of the finalLayerThickness and expansionRatio are use in calculating the finalThickness of the total number of specified boundary layers. This specified value is use when snappyHexMesh tries to generated the boundary layers. Note also that the Snap mesh must be displace in order to make room for the Addlayer mesh. The internal displacement of the points are limited by the mesh quality parameters that control the quality of the elements. Thanks, Daniel |
All times are GMT -4. The time now is 04:46. |