Good evening everyone. I am struggling to reach convergence in an axisymmetric model having rubber gasket in contact with rigid bodies. I try to explain myself as concisely as possible:
STEP1: Gasket interference (image left, near symmetry axis) with rigid body is resolved (contact without adjustaments).
STEP2: upper rigid bodies are moved downward by 0.1mm in order to reach contact (but not compress) gasket
STEP3: central rigid body is moved upward, by means of a reference point to which a spring is connected. This phase is needed in order to preload the spring which compress the gasket towards upper rigid bodies.
At Step3 analysis crashes as reported in the image:
At this preliminary stage, I didn’t use truly hyperelastic material but a linear one with low Young modulus and nearly incompressible behaviour (E=7 MPa, n= 0.48).
The contacts must consider friction (I tried with a coefficent of 0.2): in any case I was able to reach convergence in the latest step. I tried with finer mesh for gasket part as well as different types of elements (CAX4, CAX4R, CAX8, CAX8R) in order to avoid/understand shear and volumetric locking.
Surface interaction is set on “hard”, I tried “Exponential” without any success.
Any advice on how to proceed? Thank you all in advance!!
There might be a problem with this stage since that’s where the spurious deformation occurs in step 3. Did you try without the interference ? Do the results at the end of step 1 look normal ?
What’s the deformation scale factor ?
I would already use hyperelastic material to capture physical deformation.
This looks like severe hourglassing in contact. Too bad one can’t check the artificial energy in CalculiX. Is it the same with other element types ? You could add some significant local refinement there (even with second-order triangles - CAX6).
Did you try with different friction coefficients or without friction (just to see what happens) ? You can also request and check outputs related to contact (like CSTR).
Have you also tried it with linear behavior and a lower K value, maybe ~50-1000 N/mm^3 (respectively stick slope 0.1xK) ?
For nonlinear tasks combined with rigid body constraints + contact, calculix runs most stable using real 3D elements (means revolve the mesh at a small angle with creating maybe 1 - 10 layers of elements and use cyclic symmetry BCs).
For contact problems, try 1st order elements.
For the hyperelastic, make sure your coefficients are correct.
Start with zero friction or something like 1E-5 (I think below that is treated as zero in the code)- after these issues are resolved, you can bring it up.
Use linear behavior with a stiffness ~ 10 to 25X the stiffness of your softer material (the rubber). If your metal material is first in the deck, then ccx uses Young’s modulus and multiplies it by 50 to assign the contact stiffness K. So, check that since it can be too high.
Don’t refine the finer mesh more, and I think it looks okay.
Check your contact definition: surface to surface, node to surface, mortar, etc… Try different options.
They say the dependent slave surface mesh must be equal to or finer than the independent master surface mesh. Try with finer mesh on rigid bodies and coarse on the rubber gasket model.
Liner contact with K=35 could be a start. This value is 5 to 50 times the young modulus of the adjacent materials. When you get converges you can increase this on your future trials.
Try solving with both Nlgeom on and off.
Surface-on-surface gives more converges than the node-on-surface.
I don’t know if it’s the same in CalculiX but Abaqus users are only advised to avoid second-order elements with node-to-surface contact. There shouldn’t be any special issues with those elements with surface-to-surface contact.
Page 16 of the manual talks about some golden rules:
If you are dealing with a nonlinear problem, RUN A LINEARIZED VERSION
FIRST: eliminate large deformations (drop NLGEOM), use a linear elastic material and drop all other nonlinearities such as contact. If the linear version doesn’t run, the nonlinear problem won’t run either. The linear version allows you to check easily whether the boundary conditions are correct (no unrestrained rigid body modes), the loading is the one you meant to apply etc. Furthermore, you get a feeling what the solution should look like.
I personally take it to the element level (type), even though Guido discusses using quadratic elements on the next golden rule.
In my experience with elastomers and softer materials, this approach of linearizing everything has proven to be more effective in debugging issues, finding the proper parameters for contact, and so forth.