Testing the conformity of hexahedral mesh

Hi Greg,

Hope all is well!

Is there any way/functionality to examine whether the generated hexahedral mesh is a conforming mesh?

Thanks for your help!
Karim

That’s a fantastic question! I’m not sure if Cubit has any built-in capabilities (though we should probably add some!) to verify conforming meshes directly. You can do things like draw surf with is_merged to find merged surfaces - which would then result in conforming meshes. Alternatively, you can export your mesh to an Exodus file and view it in ParaView using the GridConnectivity filter - which will find and color by connected (conforming) mesh regions:

Here’s an example:

Non-conforming

bri x 1
block 1 vol 1
webcut volume all with plane xplane offset 0 
webcut volume all with plane yplane offset 0 
webcut volume all with plane zplane offset 0 
mesh vol all

set exodus netcdf4 off
set large exodus file on
export mesh "./non_conforming_mesh.e"  overwrite 

Conforming

bri x 1
block 1 vol 1
webcut volume all with plane xplane offset 0 
webcut volume all with plane yplane offset 0 
webcut volume all with plane zplane offset 0 
merge vol all
mesh vol all

set exodus netcdf4 off
set large exodus file on
export mesh "./conforming_mesh.e"  overwrite 

Applying the GridConnectivity filter to both models, coloring by FragmentID shows us that there are 8 fragments (i.e. disconnected regions of conforming elements) on the non-conforming model, and only 1 fragment (i.e. one region of conforming elements) on the conforming model. Note that I’ve chosen to Interpret Volume As Categorization, but that’s not necessary.

Do you think this is a useful tool for visualizing & verifying conforming meshes? I think we could add this to our Mesh Quality tools pretty easily.

Post-script

As a side note, here’s what you’d get if you ran draw surf with is_merged in Cubit on the conforming model:

And here’s what you’d get if you did

draw block all
highlight surf with is_merged

But a shortcoming of these are that they only verify where the mesh is conforming, but don’t clearly identify where they are not conforming.

1 Like

Here a couple of other options as well.

  1. You can use Mesh/Node/Quality/Coincidence check. This will find nodes that are not within the given tolerance.

For example,

topology check coincident node node all tolerance 1e-06 draw brief result group

This image shows nodes within tolerance that are not merged. The model is the same 8 bricks as Greg’s above but with some surfaces that failed to merge correctly.
image

  1. You can use the highlighted toolbar icon to display curve valence or how many times a curve is connected to a surface. This is directly related to the merge status of the curves.
    image
  • Curves that are colored blue are connected to two surfaces. This is normal for curves on the exterior of a volume.
  • Curves that are white are connected to more than two surfaces. This will happen for merged curves.
  • Curves that are golden are non-manifold edges. There are used by only one surface. If you are doing volumetric modeling watch out for these!

The curve valence may be visualized best in wireframe graphics.
image image

1 Like

Thanks Greg and Karl for the insight!
Cheers
Karim

@karim_gmSim - I know this is a long-time coming, but we recently started up a public GitHub repository for adding helpful Cubit utilities (e.g. Python scripts): https://github.com/coreformllc/coreform-cubit-utilities

I’ve added a script that goes through a volumetric mesh and finds connected (i.e. conforming) regions. The core functionality is pretty fast, though the final step of creating groups in Cubit for each region is a bit slow.

The result of the script is the construction of groups for each connected mesh region, which you can then select in the model-tree to highlight and/or draw. This will form the basis for a future built-in mesh-quality check, but wanted to get your feedback on the functionality. Does this (effectively) answer your original question?

Thanks so much Greg for your efforts! Much appreciated!
I will give it a try in the coming weeks and will let you know if something is not clear for me.

Cheers
Karim