Help Troubleshooting Simple Compression Test

Hi everyone, I have a feeling I’m missing something obvious in my simulation (or in the behaviour I’m expecting to simulate). I’ve simplified the problem to the maximum so hopefully that makes it easier for someone else to check it.

Basically, I’m using non-linear geometry in the solver and loading a stubby cylinder of a linear elastic material with a tabular forced displacement. I’m expecting the force needed to compress the cylinder to increase as the cylinder becomes more compressed. The diameter of the cylinder increases as it is compressed, making it it harder to further compress. I’m getting the opposite behaviour in CalculiX with the stiffness lowering with further displacement.

I’ve tried multiple different boundary condition scenarios. Using rigid body constraint for the top surface tied to a point with forced displacement, picking the top and bottom nodes and constraining them in X and Y, loading with contact and plates. The current boundary conditions I’m using are a bit odd but I think simulate a scenario where there would be no friction effect at the top and bottom when loading the cylinder. So there’s no barreling behaviour. But ultimately, all of them give me the same behaviour and very similar values. I also tried loading a cube with C3D8R elements and was getting the same general behaviour.

Running various versions of this problem in OpenRadioss, I get the expected behaviour where the cylinder stiffens as it is loaded. The values in the early linear region are similar though.

I’m not terribly concerned that the simulation can’t complete the full 5mm of displacement and fails to converge at some point. I typically use OpenRadioss for large displacement problems. This just felt like unexpected behaviour in CalculiX/PrePoMax. I’d love your insight why I’m getting these results. Or even if I’m wrong to be expecting the cylinder to stiffen up as it is loaded.

Here is a link to the file (I can’t upload to the forum yet as a new user):

https://storage.googleapis.com/storage.lbnc.ca/20260601-10xCylinder-STEPIMPORT.pmx

1 Like

Linear elasticity is often not appropriate for such nonlinear simulations with significant deformations. Theoretically, one should switch to nonlinear elasticity if the strain is higher than 5%, even for steel. CalculiX has a few hyperelasticity models, some can be easily calibrated from linear elastic constants. You should give it a try, starting from the Neo-Hookean model. It has to be added via Keyword Editor. This thread on the CalculiX forum provides a lot of advice on this material model: Hyperelastic Pipe - CalculiX (official versions are on www.calculix.de, the official GitHub repository is at https://github.com/Dhondtguido/CalculiX).

I would also try with nearly incompressible material (PR close to 0.5) and frictional contact supports.

However, you could replace the 3D model with an axisymmetric one. Or at least use hex elements in the 3D model (reduced integration to avoid locking behavior).

It could be set up similarly to rubber compression tests. You can find information about them in Abaqus documentation and elsewhere online. There are even pretty good books on this subject.

3 Likes

Your model is currently free to rotate around the z-axis, which can slow down the solution. The 3D solid elements have no rotational DOFs, so they cannot be constrained.

But probably the linear elastic model is the problem.

1 Like

Right, that 3rd BC is probably left from the approach with rigid body constraint whose reference node has rotational DOFs. The model is indeed unconstrained (frequency analysis can show it). Utilizing symmetry would simplify BC assignment.

cylinder rot

2 Likes

Thanks for the detailed response! Linear elasticity was absolutely the problem here.

I had been using the same advanced material for several studies in the last several months. I started a new problem with a basic elastic material since I don’t have testing data yet for a new material. I completely forgot the basic linear material wouldn’t handle these kinds of strains.

Yes, the BC aren’t good in this model. This started out as a reasonable model. I was starting to pull my hair out and trying just about anything to see if I could change the behaviour. (Ultimately the issue was the linear material, as noted above).

Yeah, linear elasticity can provide unrealistic results and even cause convergence issues for larger strains. Fortunately, the Neo-Hookean model can easily replace it. Newer versions of Abaqus even have a Hencky hyperelasticity model that takes the linear elastic constants as inputs directly.

1 Like