Viscous layers failure for hex mesh

Hello to you all!

I have a very simple model that I am able to mesh using tetra and hex cells. The problem appears when I am trying to generate viscous layers. For tetra cells everything works fine, not for hexa.

I am trying to attach some pictures.

Viscous layers for tetra mesh

Viscous layers for hex mesh

Error in hex mesh generation.

Thank you!

P.S. Sorry for the mess in adding pictures, but as I am a new user I can only add one per post.

Hi, please upload the HDF file study such that we can try to reproduce the issue and escalate it to developers.

hello nabil,
I think it is exactly the same error as in the case of my post
what samarul mentionned, I was able to reproduce it (not the same errors) in the following file
errorHex.hdf (1,7 MB)

Mesh_1 (with the correct blocking structure for the hex meshing) meshes correctly but nevertheless the boundary layer has issues. (same as my other post)

Mesh_2 (with what looks like the blocking done by samarul) meshes corretly but neverthless the boundary layes has issues (not exactly the same errors as him)

hope this helps.

I’m sorry but right now I can not check it directly, but I was wondering whether an option could be:

  1. to cut the fluid domain in two, horizontally
  2. create a compound of solids.
  3. mesh the compound, by starting either from the top (or bottom) partition, (sub mesh —> geometry top fluid
  4. apply viscous layers on the body and the interface
  5. Submesh the missing faces (bottom)
  6. Submesh geometry bottom fluid, Import 1D / 2D), and apply viscous layers also to the bottom.

The pros of such approach (if it is manageable by salome), would be that the quality (I.e. skewness) of the inflation layer would increase consistently. It is a “quasi” structured mesh approach, that will therefore suffer should the flow not follow the inflation layers at the interface (dissipation).

it almost work, if the BL hypothesis is defined for each solid that is created in a submesh. but if an edge is shared it still collapses.

@cbourcier could you enlighten us if something like this is feasible? (I also tried by creating a sub mesh in the last block (the one where it is collapsing on) and adding the hypothesis but it does not help)
here is the example from the screenshot
BLofCompound.hdf (355,3 KB)
any input would be great.

Just for the sake of clarity, I was referring to something like the picture below:

Which I obtained through the “compound” / interface strategy I was commenting in a previous post.


The fact is that I suspect that the collapsing penta or pyramids could very well impair the quality of the overall mesh where the two ducts intersect. I’ve added the hdf file (I did not included the mesh, but it should only need to image compute the mesh to have the results above).

TestQuasiStructured_justMesh.hdf (615.4 KB)

I used NETGEN, but I’d say that a similar approach shall be compatible also with other algorithms (hence HEXA).

Yeah I know that this works but this gives you cells in the middle of your flow which is highly undesirable… This for me was a simple example of what I am looking to solve that is: convace angles over multiblock bodies… In any case thanks :grin:

Indeed, @franco.ota, it is definitely a sub-optimal solution (still, depending on the grading and flow conditions, it may be handled by the solver).

Salome is a very powerful platform, nevertheless it would be great to have features such as boundary layer collapsing, exclusion and normal vector treatment ( ).

What I noticed is that with an inflation layer thickness that ensures good grading with the surrounding tetra volume mesh, if the inflation layer is interrupted (viscous layers hypothesis applied only to part of the surface), the algorithm collapses everything on very skewed pyramids, therefore hindering the computation on the solver side.

Nevertheless, now that I read the link you provided in a previous reply, I understand your convex angle/multiblock bodies problem, I can’t think about a viable solution in Salome, honestly.


the splitting made to get an hexahedral mesh by blocks creates internal shared faces. The current viscous layer algorithm collapses the elements on the shared faces where a transition would have occured, because we can’t at the same time enforce face elements on these faces and put a transition just after.

A workaround would be to add the viscous layers as new blocks on the shape and not use additional hypothesis on the mesh.

Or create a shape with reduced size (the part without boundary layers) and add the prismatic layers with Extrusion by normals (3rd mode of extrusion).

In the next SALOME version, a new feature will allow to apply viscous layers on an existing mesh. It may work better in this use case.

Best regards,



Hello Christophe,
Thanks for the answer,
For the first option, yes it is the best by far as you have a perfect control over the BL nevertheless for complex geometries it becomes fast too complex.

For the second option could you give an small simple example? I am way les familiar with mesh module. I actually tried something similar but in geometry using a reduced geometry and use ing thickening towards the outside can help generate the first idea (blocks for the BL) nevertheless it also begins to fail for more complex geometries.

Regarding the post addition of BL, just for info regarding this approach, OpenFOAM had since long time this approach of adding the BL at last. I don’t know the implementation that will be available in Salome, but the one from OF results in quiet bad BL… The mesher is known for this “defeature”. What I heard that they are working on is the other way around, doing firstly the BL and then the rest as this will not deform the internal mesh and will allow the BL to growth correctly (this is the approach of BL creation in starccm also). One mesher that uses this post BL approach in a more successfully way is helyx OS which have modified the mesher from OF to improve this having in general 80 to 90% of bl coverage.

Hello Franco,

thank you for your insights on boundary layers of other meshing tools.

Here is an example of extrusion by normal done on the mesh of a shrunk shape.

And the corresponding python script: (2,9 Ko)


1 Like