CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM (http://www.cfd-online.com/Forums/openfoam/)
-   -   snappyHexMesh on 1.7.1 and 2.1.0 (http://www.cfd-online.com/Forums/openfoam/101422-snappyhexmesh-1-7-1-2-1-0-a.html)

Andrea_85 May 3, 2012 11:50

snappyHexMesh on 1.7.1 and 2.1.0
 
Hi all,
What are the differences between the old snappyHexMesh (OF 1.7) and the the new one (OF 2.1). I meshed the same geometry with both versions, using the same dictionary and obtaining different mesh:

snappy of OF 2.1.0

Mesh stats
points: 5756460
internal points: 0
faces: 11189366
internal faces: 5292421
cells: 2767077
boundary patches: 7
point zones: 0
face zones: 0
cell zones: 0

Overall number of cells of each type:
hexahedra: 2646402
prisms: 120675
wedges: 0
pyramids: 0
tet wedges: 0
tetrahedra: 0
polyhedra: 0

snappy on OF 1.7.1


Mesh stats
points: 5997810
internal points: 0
faces: 11310041
internal faces: 5292421
cells: 2767077
boundary patches: 7
point zones: 0
face zones: 0
cell zones: 0

Overall number of cells of each type:
hexahedra: 2767077
prisms: 0
wedges: 0
pyramids: 0
tet wedges: 0
tetrahedra: 0
polyhedra: 0


The total number of cells is the same but in OF 1.7.1 i have only hexa (some cells were not exactly hex, but they were a little bit distorted) while in OF 2.1 i got also some prisms cells. Since i think that working with hex is always better how can i reproduce the same hex-mesh on OF 2.1? How can I avoid prisms?

thanks

andrea

wyldckat May 3, 2012 15:45

Greetings Andrea,

OK, quickest comparison:
Code:

diff -Nur OpenFOAM-1.7.1/tutorials/mesh/snappyHexMesh/motorBike/system/snappyHexMeshDict OpenFOAM-2.1.0/tutorials/mesh/snappyHexMesh/motorBike/system/snappyHexMeshDict > snappyHexMeshDict.diff
It basically gives the following output:
Code:

--- OpenFOAM-1.7.1/tutorials/mesh/snappyHexMesh/motorBike/system/snappyHexMeshDict    2010-08-24 15:32:48.000000000 +0100
+++ OpenFOAM-2.1.0/tutorials/mesh/snappyHexMesh/motorBike/system/snappyHexMeshDict    2011-11-30 14:25:22.000000000 +0000
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                |                                                |
 | \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
-|  \\    /  O peration    | Version:  1.7.1                                |
-|  \\  /    A nd          | Web:      www.OpenFOAM.com                      |
+|  \\    /  O peration    | Version:  2.1.0                                |
+|  \\  /    A nd          | Web:      www.OpenFOAM.org                      |
 |    \\/    M anipulation  |                                                |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -28,7 +28,7 @@
 // - to 'snap' the mesh boundary to the surface
 geometry
 {
-    motorBike.stl
+    motorBike.obj
    {
        type triSurfaceMesh;
        name motorBike;
@@ -54,7 +54,7 @@
    // 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 1000000;
+    maxLocalCells 100000;
 
    // Overall cell limit (approximately). Refinement will stop immediately
    // upon reaching this number so a refinement level might not complete.
@@ -152,6 +152,12 @@
    // NOTE: This point should never be on a face, always inside a cell, even
    // after refinement.
    locationInMesh (3 3 0.43);
+
+
+    // 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;
 }
 
 
@@ -169,11 +175,16 @@
    tolerance 4.0;
 
    //- Number of mesh displacement relaxation iterations.
-    nSolveIter 30;
+    nSolveIter 0;
 
    //- Maximum number of snapping relaxation iterations. Should stop
    //  before upon reaching a correct mesh.
    nRelaxIter 5;
+
+    //- Highly experimental and wip: number of feature edge snapping
+    //  iterations. Leave out altogether to disable.
+    //  Do not use here since mesh resolution too low and baffles present
+    //nFeatureSnapIter 10;
 }
 
 
@@ -188,275 +199,7 @@
    // Per final patch (so not geometry!) the layer information
    layers
    {
-        minZ
-        {
-            nSurfaceLayers 1;
-        }
-        motorBike_frt-fairing:001%1
-        {
-            nSurfaceLayers 1;
-        }
[snipped code]
-        motorBike_rear-shock-link-shadow%87
-        {
-            nSurfaceLayers 1;
-        }
-        motorBike_rear-brake-fluid-pot-bracket-shadow%88
-        {
-            nSurfaceLayers 1;
-        }
-        motorBike_rr-wh-chain-hub-shadow%89
+        "(lowerWall|motorBike).*"
        {
            nSurfaceLayers 1;
        }
@@ -466,6 +209,9 @@
    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.
    //  is the thickness of the layer furthest away from the wall.
    //  See relativeSizes parameter.
    finalLayerThickness 0.3;
@@ -478,8 +224,8 @@
    //- 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.
-    nGrow 1;
-
+    // Note: changed(corrected) w.r.t 17x! (didn't do anything in 17x)
+    nGrow 0;
 
    // Advanced settings
 
@@ -508,12 +254,17 @@
    maxThicknessToMedialRatio 0.3;
 
    // Angle used to pick up medial axis points
-    minMedianAxisAngle 130;
+    // 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
+
+    // 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;
 }
 
@@ -535,14 +286,21 @@
    //  Set to 180 to disable.
    maxConcave 80;
 
-    //- Minimum projected area v.s. actual area. Set to -1 to disable.
-    minFlatness 0.5;
-
    //- Minimum pyramid volume. Is absolute volume of cell pyramid.
    //  Set to a sensible fraction of the smallest cell volume expected.
    //  Set to very negative number (e.g. -1E30) to disable.
    minVol 1e-13;
 
+    //- Minimum quality of the tet formed by the face-centre
+    //  and variable base point minimum decomposition triangles and
+    //  the cell centre. This has to be a positive number for tracking
+    //  to work. Set to very negative number (e.g. -1E30) to
+    //  disable.
+    //    <0 = inside out tet,
+    //      0 = flat tet
+    //      1 = regular tet
+    minTetQuality 1e-30;
+
    //- Minimum face area. Set to <0 to disable.
    minArea -1;
 
@@ -585,7 +343,7 @@
 
 // Merge tolerance. Is fraction of overall bounding box of initial mesh.
 // Note: the write tolerance needs to be higher than this.
-mergeTolerance 1E-6;
+mergeTolerance 1e-6;
 
 
 // ************************************************************************* //

In bold is the main difference between the two OpenFOAM versions, when it comes to "snappyHexMeshDict".

You might also want to upgrade to 2.1.x for at least the following reason: http://www.openfoam.org/mantisbt/view.php?id=351

Best regards,
Bruno

Andrea_85 May 4, 2012 03:14

HI Bruno,

that's the point. If there's no significant difference why i get two different mesh? and again my question...how can i avoid prisms? i tried set "cellDeterminat = -1" with no changes. I think that if i had a full hexa-mesh with the old version it should be possibile to get the same with the new one.

best

andrea

wyldckat May 5, 2012 08:59

Hi Andrea,

I forgot to mention that there might be more changes beyond these two lists I've shown above. But in the link to the bug tracker it indicates that "maxNonOrtho" also changed.

If you could provide a simple example, it might be easier to pinpoint the change. Nonetheless, I'll try to list a few more changes:
  • This bug report seems closely related to your problem: http://www.openfoam.org/mantisbt/view.php?id=309 - namely this comment:
    Quote:

    I've reenabled refining and snapping

    castellatedMesh true;
    snap true;

    and set

    minTetQuality -1;

    and get really good results in 2.1.x.
Mmmm... can't find anything else. But I'd say that the "minTetQuality" option is what you might be looking for.


Best regards,
Bruno


All times are GMT -4. The time now is 00:55.