I am working through a buckling example in the ASME PTB-2022. I seem to be having issues properly constraining my model, but I cannot figure out why. I am using shell elements (converting from solid stl file in prepomax). It is a pressure vessel column with a skirt attached at the bottom. My goal is to find a eigen value buckling multiplier similar to the number in ASME PTB-2022 (around 8 when using 14.7 psi external pressure). Attached picture below is from abaqus solution. I’ve linked my step file and my prepomax file via google drive. Any help is appreciated! I am getting approx. double the correct answer. The example has been verified with Abaqus as well as Ansys, so I feel like the answer is correct and my model is incorrect.
Can you provide the relevant information from that code ? I don’t have access to it so maybe you could at least explain how it describes the load case (including BCs) under consideration.
You could share the Abaqus file too if you have it. In fact, you may want to try converting it to CalculiX input deck and running directly.
Why two layers ? Shouldn’t it be just the midsurface like in most cases ? Normally, you would extract the midsurface in some CAD software (even FreeCAD) and then import it as a STEP file to PrePoMax. This conversion might be the source of the problem here (also notice the tiny offset and perpendicular surface between the dome and the cylinder).
Thanks for the prompt reply! I figured out a few things based on your comment. I converted the solid to shell in prepomax but perhaps that is not the proper usage of that tool (that’s what created to the two surfaces). I extracted midsurfaces and reran the analysis – after working on my surface contacts and boundary conditions I got much closer, but still not exact (got 11.8 this time).
Strangely, the results are exactly 1.5x the abaqus results (I do not have the abaqus file). I am looking into alternative sources of a 1.5 multiplier, but have not found it yet. Perhaps if I could have feedback on if my model appears to be correctly setup based on these parameters.
Attached most recent PrePoMax model here: https://drive.google.com/file/d/1ob7Ck70c4CkOyGHAbzrFH34LDixMq9ce/view?usp=sharing
The parameters from the document are:
Gravity is not mentioned here, are you sure it should be applied in this case for comparison with the reference solution ? Also, your pressure load seems inconsistent. In the first step, it’s applied to the cylinder and top dome, while in the second (buckling) step, it’s applied to the cylinder and bottom dome.
You may want to reduce the Accuracy of the buckling step (e.g. to 0.0001) to avoid skipping the first eigenvalue (quite common problem in CalculiX).
Just in case, double-check all the input values. I’m not familiar with imperial units so I’ll leave that to you.
Good catches, I fixed the pressures and removed gravity just for sake of comparison. It dropped to 11.67. This is interesting because its in the ballpark of ansys.
On mode 1 it shows this – could this hint at a model issue? Mode 2 appears to be correct shape.
Yeah, it tends to show something like this as the 0 buckling factor, and it can be ignored as long as you get correct/reasonable further buckling factors. Check the solution from the first (preload) step too.
You could also try changing the mesh. Not just refining it, but also using different element types. Currently, you have S3 and S4 elements. The Abaqus reference mentions S4R, this can be changed after right-clicking on each part and choosing Edit. You may try to generate a full quad mesh too (likely the best way is to add a Shell Gmsh item in the Geometry tab and set the algorithm to Quasi-structured quad).
I would also have a closer look at the connections - tie constraints. They look good at first glance, but it’s always recommended to run a frequency analysis first and see if connections work as expected everywhere. It’s better to use a continuous mesh instead to prevent stress concentrations and other undesirable behavior, but tie constraints often prove necessary.
Wow, the S4R element was the difference. Nearly matches Abaqus dead on. Is there anywhere I can learn more about this type of mesh and what meshes to use for types of analysis? For example, it seems critically important to use this mesh on a linear buckling analysis.
In addition, if I decrease mesh size, this outputs lower eigen factors (like 4 vs 7-8). Is there a convergerence practice for buckling simulations? Or is it dependent on overall part size?
Element selection is a complex topic, there’s a whole 2-day course about it for Abaqus. But if you are looking for some recommendations, check the documentation of CalculiX and Abaqus. The latter also includes several benchmark problems showing how different element types (and mesh densities) perform in various cases.
Just keep in mind that shells in CalculiX aren’t true shells, they are internally expanded to equivalent solid elements. For example, S4 becomes C3D8I while S4R becomes C3D8R. The former is good for bending, but there were some issues with its implementation in CalculiX (should be fixed in the newest 2.23 release published in October). The latter is probably the best choice in most cases (default in Abaqus), but may exhibit spurious bending deformation mode called hourglassing.
I see thank you. So when I decrease mesh I get substantial differences:
Mesh size, Eigen Buckling Factor
4.0, 7.30
3.0, 4.00
2.0, 1.90
1.0, 1.19
Do you have any feedback on this? It seems like as the mesh gets smaller it gets overly conservative just from my knowledge that this vessel should have a higher tolerance to full vacuum then a multiple of ~1.
Does the mode shape look similar or does it become some localized buckling or a different form of it ? Check the neighboring buckling factors and their corresponding mode shapes too. How about the static step - do the results change significantly ? Perhaps some concentrations start growing in the connection areas, for instance.
Of course, you could also try a coarser mesh of second-order elements.
Okay, so when switching to the second-order elements, still quad dominated mesh (S8R), the mesh stabilizes around 4” and below that not much change occurs - this gives a eigen factor of about 11.9. This is still higher than the abaqus example, but not I am beginning to wonder about the example results model accuracy. For example, when I refine the mesh using the same mesh as the abaqus model, it becomes drastrically different.
Does that make sense on what is happening?
Are you running thise analyses with reduced accuracy setting as I recommended before ? This can be really important and you may decrease it even further making it very low as mentioned here: Changes in *BUCKLE definition · Issue #57 · Dhondtguido/CalculiX · GitHub
CalculiX has known issues with LBA, but mostly when using matrix solvers other than Pardiso and when the specified load is close to or higher than the critical load. However, there may still be some other less common issues. Just in case, you could even try using solid elements directly (there’s a Thicken Shell Mesh tool that may help with this in PrePoMax) since shells are sometimes problematic.
Yes, I used .000001. The first mode shape is the same throughout all simulations.
I imported my original solid model and used that. The meshing settings I used were: second order quad dominated, CD310T
For 4 inch mesh, mode buckling was 11.3.
For 3 inch mesh, mode buckling was also 11.3
It appears that a solid model and the shell model (using S8R) showed similar results somewhere in the 11 range. An ansys comparison also showed in the 11 range.
Unless you have any other ideas, I am going to ask someone to perform an abaqus comparison to see if there are any difference that are not outlined explicitly in the guide.
One last follow up on this… I am also trying the gmsh shell thickening on my surface model. Does this usually take a very long time to run? I have not gotten it to complete a runtime yet. I will let it go overnight if it is normal. I chose to make the thickness 1” and 2 shell elements. I selected the C3D20.
It would be much better to use hexahedral elements, especially for such a thin-walled structure. There are 4 Gmsh algorithms for that in PrePoMax - Extrude, Revolve, Sweep and Transfinite. However, they all have quite strict requirements for the geometry (listed in the documentation).
If you share the .pmx file with the corrections made since your original post (or just the exported Abaqus .inp file - PrePoMax can export in Abaqus format too) for the mesh you want to verify, I could submit it in Abaqus. This would provide direct comparison and show if the discrepancies are the fault of the CalculiX solver and its limitations.
Hello,
Here is the solid model link (inp):
Submitting it (without any changes) in Abaqus yields 8.5465 as the first eigenvalue. The second eigenvalue is very close: 8.5887.
That is very close to the technical bulletin, even though that is a solid model vs shell. That is unfortunate that calculix is 35% higher. I assume there is a solver related issue?
CalculiX might be less accurate in some cases, but let’s keep in mind this version of the model uses C3D10 elements, so not really the recommended type for thin-walled parts. It would be better to try with hexahedral or shell elements (although the latter are clearly superior in Abaqus due to the way they are implemented in CalculiX).
Okay, I will try hex elements. Does prepomax have the ability to mesh them or do I need to use another meshing software and import back?








