CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > OpenFOAM Native Meshers: snappyHexMesh and Others

snappyHexMesh - layers in 3d pipe bifurcation

Register Blogs Members List Search Today's Posts Mark Forums Read

Like Tree1Likes
  • 1 Post By ziad

Reply
 
LinkBack Thread Tools Display Modes
Old   October 22, 2010, 03:33
Default snappyHexMesh - layers in 3d pipe bifurcation
  #1
New Member
 
Daniel
Join Date: Nov 2009
Posts: 10
Rep Power: 7
nihil is on a distinguished road
Hallo.

I'm trying to mesh a three-dimensional pipe bifurcation for internal flow simulations using
snappyHexMesh. Problems occure concerning the additional boundary layers close to the
"stagnation point" , see the pictures. I want the layers to enclose the sharp edge or to
merge and go farther inwards the flow field.

Has anyone an idea/suggestion how to do that?
Thanks in advance for any response!

Daniel
Attached Images
File Type: jpg snappyHexMesh3dBifurcationAll.jpg (57.6 KB, 504 views)
File Type: jpg snappyHexMesh3dBifurcationStagnationPoint.jpg (93.9 KB, 756 views)

Last edited by nihil; October 25, 2010 at 07:24.
nihil is offline   Reply With Quote

Old   October 23, 2010, 01:29
Default
  #2
Senior Member
 
Alberto Passalacqua
Join Date: Mar 2009
Location: Ames, Iowa, United States
Posts: 1,894
Rep Power: 26
alberto will become famous soon enoughalberto will become famous soon enough
Quote:
Originally Posted by nihil View Post
Hallo.

I'm trying to mesh a three-dimensional pipe bifurcation for internal flow simulations using
snappyHexMesh. Problems occure concerning the additional boundary layers close to the
"stagnation point" , see the pictures. I want the layers to enclose the sharp edge or to
merge an go farther inwards the flow field.

Has anyone an idea/suggestion how to do that?
Thanks in advance for any response!

Daniel
Not an expert of snappy, since I played with it only a bit, but did you try playing with the feature angle?

Best,
__________________
Alberto Passalacqua

GeekoCFD - A free distribution based on openSUSE 64 bit with CFD tools, including OpenFOAM. Available as live DVD/USB, hard drive image and virtual image.
OpenQBMM - An open-source implementation of quadrature-based moment methods
alberto is offline   Reply With Quote

Old   October 24, 2010, 13:02
Default
  #3
Member
 
Join Date: Dec 2009
Posts: 36
Rep Power: 7
FG_HSRM is on a distinguished road
Hi Daniel
How did you import the surface?
Did you import one or two patches in this area?

Regards
fritz
FG_HSRM is offline   Reply With Quote

Old   October 25, 2010, 07:23
Default
  #4
New Member
 
Daniel
Join Date: Nov 2009
Posts: 10
Rep Power: 7
nihil is on a distinguished road
Quote:
Originally Posted by alberto View Post
Not an expert of snappy, since I played with it only a bit, but did you try playing with the feature angle?

Best,

Seems to me you are an expert indeed. :-)
I tried varying the feature angle before but without success...
However, setting the featureAngle to 310° finally worked well.
Not the best mesh I have ever seen but pretty much what I wanted.
Thanks a lot!

But I still have problems with uneven/warped layers at some points, see figure.
Increasing nSmoothThickness from 20 to 30,
increasing nSmoothSurfaceNormals from 1 to 10 and
increasing nSmoothNormals from 3 to 30 reduced this problem
nearly everywhere but not at the red marked location.

Any suggestions on that?

Cheers

Daniel
Attached Images
File Type: jpg snappyHexMesh3dBifurcationStagnationPoint2.jpg (90.3 KB, 699 views)
nihil is offline   Reply With Quote

Old   October 25, 2010, 07:29
Default
  #5
New Member
 
Daniel
Join Date: Nov 2009
Posts: 10
Rep Power: 7
nihil is on a distinguished road
Quote:
Originally Posted by FG_HSRM View Post
Hi Daniel
How did you import the surface?
Did you import one or two patches in this area?

Regards
fritz

Hej Fritz.

The entire wall in that area is defined by one *.stl and one patch.
I tried loading two *.stl files (one for each half of the bifurcation wall)
without any effect.

Daniel.

Last edited by nihil; October 25, 2010 at 08:53.
nihil is offline   Reply With Quote

Old   October 26, 2010, 21:48
Default
  #6
Senior Member
 
Ziad Boutanios
Join Date: Mar 2009
Location: Montréal, Canada
Posts: 113
Rep Power: 8
ziad is on a distinguished road
Quote:
Originally Posted by nihil View Post
Seems to me you are an expert indeed. :-)
I tried varying the feature angle before but without success...
However, setting the featureAngle to 310° finally worked well.
Not the best mesh I have ever seen but pretty much what I wanted.
Thanks a lot!

But I still have problems with uneven/warped layers at some points, see figure.
Increasing nSmoothThickness from 20 to 30,
increasing nSmoothSurfaceNormals from 1 to 10 and
increasing nSmoothNormals from 3 to 30 reduced this problem
nearly everywhere but not at the red marked location.

Any suggestions on that?

Cheers

Daniel
Hi Daniel,

Another way to do it would be using no surface layers in sHM and then refining the near wall mesh with refineWallLayer tool. I find it to be more robust and it gives relatively accurate mesh size at the wall. The real advantage is that you can keep using reasonable featureAngle values and have a nice surface mesh with very nice o-grids in the volume.

Best,
Ziad
s.m likes this.

Last edited by ziad; October 26, 2010 at 21:51. Reason: forgot to mention featureAngle
ziad is offline   Reply With Quote

Old   November 9, 2010, 07:15
Default
  #7
New Member
 
Join Date: Oct 2009
Posts: 11
Rep Power: 7
WalterW is on a distinguished road
nihil,

how did you manage to get
1) sharp edges and
2) a visible boundary layer

at your inlet?
WalterW is offline   Reply With Quote

Old   November 9, 2010, 10:55
Default
  #8
Senior Member
 
Alberto Passalacqua
Join Date: Mar 2009
Location: Ames, Iowa, United States
Posts: 1,894
Rep Power: 26
alberto will become famous soon enoughalberto will become famous soon enough
For layers, take a look at:

~/OpenFOAM-1.7.x/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/

Best,
__________________
Alberto Passalacqua

GeekoCFD - A free distribution based on openSUSE 64 bit with CFD tools, including OpenFOAM. Available as live DVD/USB, hard drive image and virtual image.
OpenQBMM - An open-source implementation of quadrature-based moment methods
alberto is offline   Reply With Quote

Old   November 10, 2010, 04:52
Default
  #9
Member
 
Join Date: Nov 2009
Location: Germany
Posts: 96
Rep Power: 7
val46 is on a distinguished road
Hi nihil,

could you post us your sHMDict file?
Would be interesting for me to see how you produce such almost perfect layers. I'm struggling getting good layers.

Regards,
Toni
val46 is offline   Reply With Quote

Old   November 16, 2010, 11:18
Default
  #10
New Member
 
Ulrich Golling
Join Date: Oct 2010
Posts: 7
Rep Power: 6
U.Golling is on a distinguished road
Hello everybody!
I also would like to mesh a similar pipe as you did, nihil, but i am not even half as successful. Could you please explain, how the geometry has to be, from that i have to create the stl-Files for inlet, outlet and the wall of the pipe. And how does your sHMDict look like then?
Or, maybe, does anybody know, where i can find a tutorial for simulating internal flow or something?
Sorry, i know this means you have to grant a big request, but i am thankful for any help, cause i feel like standing in a very long dead end street at the moment.
greets
Ulrich
U.Golling is offline   Reply With Quote

Old   October 6, 2011, 04:31
Default
  #11
New Member
 
Elia Agnani
Join Date: Oct 2011
Location: Modena, Italy
Posts: 5
Rep Power: 5
elia87 is on a distinguished road
Send a message via Skype™ to elia87
Quote:
Originally Posted by WalterW View Post
nihil,

how did you manage to get
1) sharp edges and
2) a visible boundary layer

at your inlet?
Hi everybody

I have the same problem.

I'm doing some experiments with snappyHexMesh (in OpenFOAM 1.6) with some basic geometry (in this case a cube) and these are my results

In the first picture you can see the whole geometry, I want to snap the mesh in y and z directions and maintain constant in x direction (simple extrusion). Moreover I want layers on external walls (it is like a cubical section pipe with x as axial direction).

In the second and third pictures you can see respectively an x and y slice.

x_slice : the layers are good on perimeter and also on the corners
y_slice : the layers disappear on "inlet and outlet" faces as you can see --> How can I ''print'' the layers also on these faces??

I've defined two patches in stl file:
- mypareti for external wall
- inlet_outlet for inlet and outlet face (normal to x axis)

here my geometry and castellatedMesh parts of snappyHexMeshDict file

Code:
geometry
{
    cubo_centrato.stl  //STL FILE NAME
    {
        type triSurfaceMesh;
    name cubo_centrato;
        regions
        {
        inlet_outlet  //patch così definita nel file STL
        {
            name inlet_outlet; //nome assegnato dall'utente  alla patch
        }
        pareti
        {
            name mypareti;
        }
        }
     }
    
    
};



// Settings for the castellatedMesh generation.
castellatedMeshControls
{

    // Refinement parameters
    // ~~~~~~~~~~~~~~~~~~~~~
    
    // Location vector inside the region to be meshed.
    // N.B. vector must not coincide with a cell face either before or during
    // refinement.
    //locationInMesh (5 0 0)  

    // While refining maximum number of cells per processor. This is basically
    // the number of cells that fit on a processor. If you choose this too small
    // it will do just more refinement iterations to obtain a similar mesh.
    maxLocalCells 1000000;

    // 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 2000000;

    // 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;

    // Number of buffer layers between different levels.
    // 1 means normal 2:1 refinement restriction, larger means slower
    // refinement.
    nCellsBetweenLevels 3;



    // 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
    (
        
    );



    // 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
    {
              
    cubo_centrato
    {
          level (2 2); // default (min max) refinement for whole surface
          regions
          {
                  pareti
                  {
                    level (5 6); // optional refinement
                  }
            
          }
    }

    }

    // Resolve sharp angles
    resolveFeatureAngle 100;


    // 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
    {
        
    }


    // 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);
}



// Settings for the snapping.
snapControls
{
    //- Number of patch smoothing iterations before finding correspondence
    //  to surface
    nSmoothPatch 3;

    //- Relative distance for points to be attracted by surface feature point
    //  or edge. True distance is this factor times local
    //  maximum edge length.
    tolerance 4.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;
}
and here my addLayers and meshQualityControl parts of snappyHexMeshDict file

Code:
addLayersControls
{
    relativeSizes true;

    // Per final patch (so not geometry!) the layer information
    layers
    {
    mypareti
    {
        nSurfaceLayers 4;
    }

    }

    // 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.
    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.
    nGrow 1;


    // Advanced settings

    //- When not to extrude surface. 0 is flat surface, 90 is when two faces
    //  make straight angle.
    featureAngle 90;

    //- 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
    minMedianAxisAngle 130;

    // Create buffer region for new layer terminations
    nBufferCellsNoExtrude 0;

    // Overall max number of layer addition iterations
    nLayerIter 50;
}



// Generic mesh quality settings. At any undoable phase these determine
// where to undo.
meshQualityControls
{
    //- Maximum non-orthogonality allowed. Set to 180 to disable.
    maxNonOrtho 65;

    //- Max skewness allowed. Set to <0 to disable.
    maxBoundarySkewness 20;
    maxInternalSkewness 4;

    //- Max concaveness allowed. Is angle (in degrees) below which concavity
    //  is allowed. 0 is straight face, <0 would be convex face.
    //  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 very negative number (e.g. -1E30) to disable.
    minVol 1e-13;

    //- Minimum face area. Set to <0 to disable.
    minArea -1;

    //- Minimum face twist. Set to <-1 to disable. dot product of face normal
    //- and face centre triangles normal
    minTwist 0.02;

    //- minimum normalised cell determinant
    //- 1 = hex, <= 0 = folded or flattened illegal cell
    minDeterminant 0.001;

    //- minFaceWeight (0 -> 0.5)
    minFaceWeight 0.02;

    //- minVolRatio (0 -> 1)
    minVolRatio 0.01;

    //must be >0 for Fluent compatibility
    minTriangleTwist -1;


    // Advanced

    //- Number of error distribution iterations
    nSmoothScale 4;
    //- amount to scale back displacement at error points
    errorReduction 0.75;
}


// Advanced

// Flags for optional output
// 0 : only write final meshes
// 1 : write intermediate meshes
// 2 : write volScalarField with cellLevel for postprocessing
// 4 : write current intersections as .obj files
debug 0;


// Merge tolerance. Is fraction of overall bounding box of initial mesh.
// Note: the write tolerance needs to be higher than this.
mergeTolerance 1E-6;
Attached Images
File Type: jpg cubo_intero.jpg (36.3 KB, 352 views)
File Type: jpg x_slice.jpg (45.0 KB, 349 views)
File Type: jpg y_slice.jpg (36.0 KB, 319 views)

Last edited by elia87; October 6, 2011 at 10:24.
elia87 is offline   Reply With Quote

Old   October 6, 2011, 11:56
Default
  #12
Senior Member
 
Alberto Passalacqua
Join Date: Mar 2009
Location: Ames, Iowa, United States
Posts: 1,894
Rep Power: 26
alberto will become famous soon enoughalberto will become famous soon enough
It might not address your problem, but I would suggest to use the latest version of snappyHexMesh provided in OpenFOAM 2.0.1 (or 2.0.x). The management of surfaces improved greatly.

Best,
__________________
Alberto Passalacqua

GeekoCFD - A free distribution based on openSUSE 64 bit with CFD tools, including OpenFOAM. Available as live DVD/USB, hard drive image and virtual image.
OpenQBMM - An open-source implementation of quadrature-based moment methods
alberto is offline   Reply With Quote

Old   February 24, 2013, 16:50
Default
  #13
New Member
 
Bence Somogyi
Join Date: Mar 2009
Location: Graz, Austria
Posts: 6
Rep Power: 8
sbence is on a distinguished road
Quote:
Originally Posted by WalterW View Post
nihil,

how did you manage to get
1) sharp edges and
2) a visible boundary layer

at your inlet?
I had this problem recently and found out that bnd type shall be set to empty at the inlet for meshing.
sbence is offline   Reply With Quote

Old   April 9, 2013, 08:32
Default
  #14
s.m
Senior Member
 
saeideh mohamadi
Join Date: Aug 2012
Posts: 229
Rep Power: 5
s.m is on a distinguished road
hi ziad
would you please tell more about how using "refineWallLayer tool" in more details?
Regards.
s.m is offline   Reply With Quote

Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
SnappyHexMesh doesn't succeed in adding several layers eti0123456789 OpenFOAM Native Meshers: snappyHexMesh and Others 5 April 9, 2013 02:36
no boundary layers using snappyHexMesh thorsten OpenFOAM Native Meshers: snappyHexMesh and Others 1 October 22, 2009 06:01
Build a pipe with different layers Sun CFX 2 June 9, 2005 18:33
Terrible Mistake In Fluid Dynamics History Abhi Main CFD Forum 12 July 8, 2002 09:11
fluid flow fundas ram Main CFD Forum 5 June 17, 2000 21:31


All times are GMT -4. The time now is 20:06.