CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Meshing & Mesh Conversion (https://www.cfd-online.com/Forums/openfoam-meshing/)
-   -   [snappyHexMesh] Add Mesh Layers doesnt work on the whole surface (https://www.cfd-online.com/Forums/openfoam-meshing/106826-add-mesh-layers-doesnt-work-whole-surface.html)

Kryo September 10, 2012 06:13

Add Mesh Layers doesnt work on the whole surface
 
Hello,

I just tried to make a simple mesh with snappyHexMesh, and everything worked quite well so far.

But now I am at a point, where I cannot find a solution to my current problem.

I got a simple "rocket" which exists of a cylinder and a cone as tip and rear.
When creating the mesh it adds the layers on the surface correctly, but only on the cylindrical part.

you can find a screenshot here: https://dl.dropbox.com/u/3545765/layersproblem.png

as you see the layers stop at the edge, same on the tip and rear side.

my snappyhexmeshdict as follows:
Code:

addLayersControls
{
 
    relativeSizes true;


    layers
    {
        rocketbody_rocketbodysurf

        {
            nSurfaceLayers 20;
        }
    }


    expansionRatio 1.1;

    finalLayerThickness 1e-1;


    minThickness 1e-10;

    nGrow 1;

 
    featureAngle 310;


    nRelaxIter 3;

    nSmoothSurfaceNormals 1;


    nSmoothNormals 3;


    nSmoothThickness 10;

    maxFaceThicknessRatio 0.5;

    maxThicknessToMedialRatio 0.3;

   
    minMedianAxisAngle 180;


    nBufferCellsNoExtrude 0;


    nLayerIter 1500;
}

changing feature angle does impact it slightly, but still even with 360° it doesnt work. The STL file is all in one, so there is only one surface which is rocketbody_rocketbodysurf.

Anyone any ideas? Thanks in advance!


EDIT: maybe the output would also be interesting:
Code:

Shrinking and layer addition phase
----------------------------------

Using mesh parameters
{
    maxNonOrtho    180;
    maxBoundarySkewness 20;
    maxInternalSkewness 4;
    maxConcave      180;
    minVol          -1e-13;
    minTetQuality  1e-30;
    minArea        -1;
    minTwist        0.02;
    minDeterminant  0.001;
    minFaceWeight  0.02;
    minVolRatio    0.01;
    minTriangleTwist -1;
    nSmoothScale    4;
    errorReduction  0.75;
}



Merging all faces of a cell
---------------------------
    - which are on the same patch
    - which make an angle < 310 degrees
      (cos:0.642788)
    - as long as the resulting face doesn't become concave by more than 90 degrees
      (0=straight, 180=fully concave)

Merging 0 sets of faces.

No faces merged ...

Merging all points on surface that
- are used by only two boundary faces and
- make an angle with a cosine of more than 0.642788.

No straight edges simplified and no points removed ...

Checking mesh manifoldness ...

Checking initial mesh ...
Checking faces in error :
    faces with face pyramid volume < -1e-13                : 0
    faces with face-decomposition tet quality < 1e-30      : 0
    faces with skewness >  4 (internal) or  20 (boundary) : 0
    faces with interpolation weights (0..1)  <  0.02      : 0
    faces with volume ratio of neighbour cells <  0.01    : 0
    faces with face twist <  0.02                          : 0
    faces on cells with determinant < 0.001                : 0
Detected 0 illegal faces (concave, zero area or negative cell pyramid volume)

Adding in total 0 inter-processor patches to handle extrusion of non-manifold processor boundaries.
Constructing mesh displacer ...

Handling points with inconsistent layer specification ...

Handling non-manifold points ...

Checking patch manifoldness ...
Outside of local patch is multiply connected across edges or points at 0 points.
Set displacement to zero for all 0 non-manifold points

Handling feature edges ...

Handling cells with warped patch faces ...
Set displacement to zero on 0 warped faces since layer would be > 0.5 of the size of the bounding box.

Growing non-extrusion points by one layer ...
Set displacement to zero for an additional 0 points.

patch                    faces    layers avg thickness[m]
                                          near-wall overall
-----                    -----    ------ --------- -------
rocketbody_rocketbodysurf 4536    20    0.00511  0.293 

medialAxisSmoothingInfo : Calculate distance to Medial Axis ...
shrinkMeshDistance : Smoothing normals ...
    Iteration 0  residual 0.0105
shrinkMeshDistance : Smoothing normals ...
shrinkMeshDistance : Smoothing normals in interior ...
    Iteration 0  residual 0.0632

Layer addition iteration 0
--------------------------
Prevented extrusion on 0 coupled patch points during syncPatchDisplacement.

Determining displacement for added points according to pointNormal ...
Prevented extrusion on 0 coupled patch points during syncPatchDisplacement.

shrinkMeshMedialDistance : Smoothing using Medial Axis ...
shrinkMeshMedialDistance : Reduce layer thickness at 0 nodes where thickness to medial axis distance is large
shrinkMeshDistance : Removing isolated regions ...
Number isolated points extrusion stopped : 0
shrinkMeshDistance : Smoothing field ...
    Iteration 0  residual 9.04e-05
shrinkMeshMedialDistance : Moving mesh ...
Iteration 0
Moving mesh using diplacement scaling : min:1  max:1
Checking faces in error :
    faces with face pyramid volume < -1e-13                : 0
    faces with face-decomposition tet quality < 1e-30      : 0
    faces with skewness > 4  (internal) or 20  (boundary) : 0
    faces with interpolation weights (0..1)  < 0.02        : 0
    faces with volume ratio of neighbour cells < 0.01      : 0
    faces with face twist < 0.02                          : 0
    faces on cells with determinant < 0.001                : 0
shrinkMeshMedialDistance : Successfully moved mesh
shrinkMeshMedialDistance : Finished moving mesh ...
Prevented extrusion on 0 coupled patch points during syncPatchDisplacement.
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 :
    faces with face pyramid volume < -1e-13                : 0
    faces with face-decomposition tet quality < 1e-30      : 3588
    faces with skewness > 4  (internal) or 20  (boundary) : 0
    faces with interpolation weights (0..1)  < 0.02        : 0
    faces with volume ratio of neighbour cells < 0.01      : 0
    faces with face twist < 0.02                          : 0
    faces on cells with determinant < 0.001                : 0
Detected 3588 illegal faces (concave, zero area or negative cell pyramid volume)
Extruding 4016 out of 4536 faces (88.5%). Removed extrusion at 302 faces.

Growing non-extrusion points by one layer ...
Set displacement to zero for an additional 198 points.


Layer addition iteration 1
--------------------------
Prevented extrusion on 0 coupled patch points during syncPatchDisplacement.

Determining displacement for added points according to pointNormal ...
Prevented extrusion on 0 coupled patch points during syncPatchDisplacement.

shrinkMeshMedialDistance : Smoothing using Medial Axis ...
shrinkMeshMedialDistance : Reduce layer thickness at 0 nodes where thickness to medial axis distance is large
shrinkMeshDistance : Removing isolated regions ...
Number isolated points extrusion stopped : 9
shrinkMeshDistance : Smoothing field ...
    Iteration 0  residual 0.00104
shrinkMeshMedialDistance : Moving mesh ...
Iteration 0
Moving mesh using diplacement scaling : min:1  max:1
Checking faces in error :
    faces with face pyramid volume < -1e-13                : 0
    faces with face-decomposition tet quality < 1e-30      : 0
    faces with skewness > 4  (internal) or 20  (boundary) : 0
    faces with interpolation weights (0..1)  < 0.02        : 0
    faces with volume ratio of neighbour cells < 0.01      : 0
    faces with face twist < 0.02                          : 0
    faces on cells with determinant < 0.001                : 0
shrinkMeshMedialDistance : Successfully moved mesh
shrinkMeshMedialDistance : Finished moving mesh ...
Prevented extrusion on 0 coupled patch points during syncPatchDisplacement.
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 :
    faces with face pyramid volume < -1e-13                : 0
    faces with face-decomposition tet quality < 1e-30      : 0
    faces with skewness > 4  (internal) or 20  (boundary) : 0
    faces with interpolation weights (0..1)  < 0.02        : 0
    faces with volume ratio of neighbour cells < 0.01      : 0
    faces with face twist < 0.02                          : 0
    faces on cells with determinant < 0.001                : 0
Detected 0 illegal faces (concave, zero area or negative cell pyramid volume)
Extruding 3736 out of 4536 faces (82.4%). Removed extrusion at 0 faces.
Edge intersection testing:
    Number of edges            : 339036
    Number of edges to retest  : 0
    Number of intersected edges : 60289
Writing 55752 added cells to cellSet addedCells
Writing 52016 faces inside added layer to faceSet layerFaces
Layer mesh : cells:109064  faces:339036  points:121291
Cells per refinement level:
    0    7568
    1    2456
    2    6988
    3    7552
    4    2780
    5    8004
    6    73716
Writing mesh to time 3e-07
Wrote mesh in = 5.26 s.
Layers added in = 5.26 s.
Finished meshing in = 12.6 s.
End


Jane L September 11, 2012 03:22

For my current project, I can control that kind of proplem with the following options

resolveFeatureAngle 180;
featureAngle 180;

I don't know for sure if it helps because you have allready a tall number for featureAngle

good luck!

SirWombat September 11, 2012 05:47

The featureAngle should be fine, though any number beyond 180 should make no difference than using 180.

but lets have a look at the output:

Quote:

Originally Posted by Kryo (Post 381027)
Hello,
Code:

Checking faces in error :
    faces with face pyramid volume < -1e-13                : 0
    faces with face-decomposition tet quality < 1e-30      : 3588


I recommend to alter the quality settings! Just try a to switch that "minTetQuality" off by using
Code:

minTetQuality  -1e30;
and see where that leads.

Also I highly recommend to reduce the "nLayerIter" to a reasonable number, i.e. 10. Else SHM may get stuck in iterating if it fails to meet your quality settings. Better check the output to see if it does converge.

If you want the furthest layer cell to be of equal thickness to the surrounding mesh (finalLayerThickness 1;), then use the following:

Code:

...
    nSmoothSurfaceNormals 50;
    nSmoothNormals 50;
    nSmoothThickness 100;
    maxFaceThicknessRatio 0.8;
    maxThicknessToMedialRatio 0.9;
...


Greetings,
Jan

Kryo September 11, 2012 16:37

thanks a lot SirWombat, that did actually help :) now nearly all parts of the surface have the layer :)

Now I can start running some solvers, and see what problems that will bringt forth :P

Eloise September 13, 2012 05:32

Hi Jan,

Could you develop a bit about the reason why you recommend those parameters? What is their actual effect on the layers? This would be great help!

Regards,
Eloïse

Quote:

Originally Posted by SirWombat (Post 381191)
If you want the furthest layer cell to be of equal thickness to the surrounding mesh (finalLayerThickness 1;), then use the following:
Code:

...
    nSmoothSurfaceNormals 50;
    nSmoothNormals 50;
    nSmoothThickness 100;
    maxFaceThicknessRatio 0.8;
    maxThicknessToMedialRatio 0.9;
...



SirWombat September 13, 2012 05:50

Hi Eloïse,

it's just what I've been experimenting with and found it to be most suitable for smooth geometries. But I'll try to give an answer anyway:

the smoothing-parameters should be clear .. they smooth the "layer-surface", which consist of all faces between the added layers and the rest of the mesh.

The maxFaceThicknessRatio in combination with maxThicknessToMedialRatio have a strong influence on how thick those layer-cells get in relation to surrounding layer cells, especially towards to the end/edge of the added layer region.

If you would like to experiment yourself then switch off all quality controls and try some variations on those "addLayer"-parameters. Do this on a small and simple mesh so to get a fast result. You will find it to be enlightening!

G Jan

Kryo September 13, 2012 06:08

well here I am again. Its not quite fitting to the thread title, but I didnt want to open another one.

The calculation is now working fine, but now I wanted to ask, is there no adaptive mesh refinement utility in OpenFoam? I am using sonicFoam with Mach 1.6, and have compression shocks, where I would like to refine the mesh automatically where there is a high pressure gradient. But google didnt help me :(

SirWombat September 13, 2012 06:44

sorry I cannot help you with that topic but google "openfoam adaptive mesh refinement" and have a look at the first result: Chalmers compiled a new solver including AMR ... maybe there's a way to do that with sonicFoam as well ...

Kryo September 13, 2012 09:28

so there is no way other than coding something like that myself?

aero.rajat June 29, 2018 02:44

addLayers
 
I am facing issues with addLayers. Is anyone out there?

amuzeshi March 7, 2020 16:47

Quote:

Originally Posted by SirWombat (Post 381191)
...I recommend to alter the quality settings! Just try a to switch that "minTetQuality" off by using
Code:

minTetQuality  -1e30;
and see where that leads.

hello;

Do you know what does minTetQuality mathematically mean? May turning it off produce negative volume cells?

Thanks.
Ali

john myce March 10, 2020 03:27

Hello,

You can have a nice description of the mesh quality criteria on this pdf :
https://openfoamwiki.net/images/f/f0...SlidesOFW7.pdf - slide 54 for minTetQuality

In my case I have got negative minTetVolume but it does not produce negative volume. I think it is related to the direction of the three vectors (slide 54) that characterized the cell.

Cheers

amuzeshi March 11, 2020 16:16

Quote:

Originally Posted by john myce (Post 761048)
Hello,

You can have a nice description of the mesh quality criteria on this pdf :
https://openfoamwiki.net/images/f/f0...SlidesOFW7.pdf - slide 54 for minTetQuality

In my case I have got negative minTetVolume but it does not produce negative volume. I think it is related to the direction of the three vectors (slide 54) that characterized the cell.

Cheers

:)
Referring to the slide that you have mentioned, since cr is always positive, there is only one possibility that can cause negative minTetQuality, namely negative tv; But when it happens?
Since the angle between a and b is always < 180 (this angle is one of the three angles of a triangle), there remains only one possibility for minTetQualituy to be negative, that is, Angle between axb and c > 90. Here we must know how OpenFOAM selects a and b.
  1. If it always selects a and b such that axb points inward the cell, so, negative minTetQuality is a serious topological error which may indicate an inside-out tet (Please correct me if I am wrong).
  2. But if OpenFOAM selects a and b regardless of the direction of their cross product, negative minTetQuality is not necessarily a topological error.

Thank you,
Ali

damon707 February 17, 2022 07:34

Hello all,

Sorry for bringing up this issue again.
Did anyone manage to answer how important minTetQuality is? Anyone able to answer the last remark that Ali made on this post?

Best,
George


All times are GMT -4. The time now is 11:21.