Damping contact in dynamic implicit simulation

Hello together,

currently I’m trying to get a dynamic implicit 2D simulation to converge. I want so simulate the press in of a copper pin into a plastic cavity. I have set the K-Value to 100000 MPa/mm³ that isn’t that stiff and a quite fine mesh but the sim fails right after 5% of time. Is there a way to add contact damping or is there just the possibility to add global damping?

I always use this approach to adjust the contact stiffness in CalculiX: Snap-fit contact snagging problem - #17 by JuanP74 - Analysis issues - CalculiX (official versions are on www.calculix.de, the official GitHub repository is at https://github.com/Dhondtguido/CalculiX).

You will also find other tips regarding contact in rhat thread. And in this thread as well as the one linked there: Selection master and slave in contact

Contact damping is available in CalculiX (but not implemented in PrePoMax so requires the use of the Keyword Editor). It’s limited to implicit dynamics. This step type quite often has convergence issues in CalculiX, especially without appropriate global damping.

Contact damping syntax is described here: https://www.dhondt.de/ccx_2.23.pdf#subsection.7.19

Non-convergence in contact is often caused by initial rigid body motions in underconstrained models. Using symmetry (if applicable) and displacement control often helps.

1 Like

I switched to static step and played around with the contact stiffnes. Now it converges.

But now I’ve got the problem that I want to add a second step to simulate a second load after the insertion. So I created a second step, deactivated the displacement boundary condition from the step before and added a traction load of 250N. The second step doesn’t want to converge. Is it to abbrupt to press with 250N right after insertion? Incrementation with enough steps is on. But I also see, that the Pin loses contact to the ground face that it has been pressed on in the step before. Could that be the reason? Is there a best practice to handle such situations?

And do I always have to recompute the first step if the second step fails? It would safe a lot of time, If I just could simulate the second step.

Thanks in advance!

Check this thread for the details on how the solver treats multiple steps: Understanding multistep analyses

Wasn’t the BC that you deactivated in the second step also constraining the model ? Even if you release just one DOF and added force there, load control may cause convergence issues.

What you did is similar to the common approach of establishing contact with displacement control in the first step and then switching to force control in the second one. This involves some special considerations mentioned in the last point of the thread linked above as well as here: Hertz contact with force control - CalculiX (official versions are on www.calculix.de, the official GitHub repository is at https://github.com/Dhondtguido/CalculiX).

CalculiX has the *RESTART feature for that, but it’s not supported in PrePoMax and has to be used by submitting the model outside of it with some input deck modifications: How to use the *Restart command in my case? - CalculiX (official versions are on www.calculix.de, the official GitHub repository is at https://github.com/Dhondtguido/CalculiX).

1 Like

Thanks for the fast reply.

My model is already reduced with symmetry constraints. I just managed to add a bit of load (150N) with two extra steps. Now I will try to define an amplitude to initiate the load more precise and slow.

Amplitudes may indeed help with convergence. They are especially crucial in dynamic analyses where the default time variation for loads and BCs is immediate application:

In a dynamic step, loads are by default applied by their full strength at the start of the step.

Ok so I’ve got to the point, where the simulation seems quite stable. But now out of a sudden the sim stops at 1000 Iterations, although I set the max iterations to 10.000.000.

The Error output is:

increment 1000 attempt 1
increment size= 1.000000e-04
sum of previous increments=9.990000e-02
actual step time=1.000000e-01
actual total time=2.100000e+00

iteration 1

*ERROR in gencontelem_f2f: no more than 1000
steps/increments/cutbacks/iterations
allowed (for output in
contactelements.inp)

I hope it is ok to ask further questions in this topic. Didn’t know if I should open new topics for these kind of questions.

Many thanks in advance!

It seems that you actually mean increments (the nomenclature is that analysis is divided into steps which are solved in increments within which iterations are performed to find the equilibrium).

1000 increments is a lot, especially if it’s a static analysis. What is the increment size (watch the Status tab in the Monitor) ?

It will be better to stay in this topic. Or we can discuss the details via private messages if you want more in-depth consultation.

Ah, yes I mixed up the nomenclature.

I would just add a screenshot of my settings, but I can’t upload files.

So here are the Settings for the Steps:

Step1:

  • Max Increments: 10.000.000
  • Time period: 1s
  • Initial time increment: 0.0001s
  • Min time increment: 1E-09s
  • Max time increment: 0.01s

Step2:

  • Incrementation: default

Step3:

  • Max Increments: 10.000.000
  • Time period: 1s
  • Initial time increment: 0.0001s
  • Min time increment: 1E-09s
  • Max time increment: 0.0001s

Now you should be able to upload files. The settings are ok (although reducing the max increment size is only necessary if you want to resolve some small variations in amplitudes or capture transient phenomena in a dynamic analysis). Initial increment size is usually 0.1 or 0.01, but the solver can adjust it - it’s just a suggestion for it. Minimum increment size can be 1e-6 in most cases - if it drops lower, it won’t converge anyway. And there’s a hard coded limit: Minimum time increment can't be lower than 1e-5 - CalculiX (official versions are on www.calculix.de, the official GitHub repository is at https://github.com/Dhondtguido/CalculiX).

A screenshot of the Status tab of the job monitor would also help (or analysis/model file if you can share it).