Mesh Refinement based on results

Hi everyone,
i am currently tinkering on a python interface for cubit’s calculix component to get access to the results after a run.

i made a quick try to do a automated mesh refinement based on the values from the error estimator output in the .frd. which gets me the element quality ugly pretty fast.

a picture how the error changes with each ref level

so i was wondering.
how do you all do your mesh refinement? what are your criterias based on the results?

1 Like

CalculiX has a simple built-in mesh refinement. Check the *REFINE MESH keyword. Unfortunately, it’s limited to C3D4 and C3D10 elements. There are multiple available criteria (output variables) though.


I made a first run with a not so fine mesh (I measure the minimun interest wall thickness and divide by two or three, three elements in small radius…), and then based on stress hot spot results I select the geometry faces and apply a refinement there. Normally with two or three runs is enough to converge the stress results.

I use Mecway for preprocessing, most of the cases with bc based on geometry faces, so no need to update the bc to make the next iterations on the same geometry, pretty straighfor. Sometimes I work with orphan meshes from Salome, or some hexas meshes made by extrusion, so there is no geometry to select faces, but Mecway can refine directly the selected elements, so I select a bunch of elements near the hot spot, refine by two or three and again run without need to adjust the bc. I found the Mecway algorithm for refining meshes good enough to create a smoth transition in size without too much skewed elements.

Have tried in the past the *REFINE MESH card, but it give me more problems than solutions, at least in my workflow.


Thanks for the answers! I will try to create something similar to the refinement keyword for hex meshes too.

i made now a method that writes out the elements where the difference of the nodal values exceeds a limit. Those elements can then be used for refinement.

i will see if can do something similar for the .dat results too before i push it on github.

1 Like

works now for .dat results too.
the same limit as above is used on the integration point results to get the elements for the refinement.

1 Like