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
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:
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
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.
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.
Here a couple of other options as well.
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.
The curve valence may be visualized best in wireframe graphics.
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