How to include damping in the second step of a two-step simulation (static → dynamic)?

Dear all,

I’m running a two-step simulation in CalculiX, where:

  • The first step is a static step (using *STATIC), to establish initial deformation for boundary conditions.
  • The second step is a dynamic step (using *DYNAMIC), where I want to include damping effects.

I understand that damping (e.g., Rayleigh damping via *DAMPING, ALPHA=..., BETA=...) must be defined before any *STEP keyword, and that *DAMPING is not effective in a static step. However, when I try to define *DAMPING in the second step, I get the error:

*ERROR reading *DAMPING: *DAMPING should be placed before all step definitions

So my question is:

How can I properly define damping so that it is active only during the second (dynamic) step, while still using a static first step?

Or more generally:

Is it possible in CalculiX to apply damping only in a specific step (e.g., dynamic), but not in the earlier static step?

Any suggestions or workarounds would be greatly appreciated!

Best regards,
Yang

What if you define it on the model level (before any step definitions) ?

Thank you for the reply.

Yes, I did try defining *DAMPING at the model level, before any *STEP definitions. The simulation runs without errors, but based on the output (e.g., .dat file), it seems that damping is not actually applied in either step.

My guess is that since the first step is a *STATIC analysis, damping is naturally ignored because no velocity is involved. However, in the second *DYNAMIC step, which starts from a restart (continuing from the end of the static step), damping still doesn’t seem to be active—even though it was defined globally at the beginning of the file.

As a follow-up, I tried switching the first step from *STATIC to *DYNAMIC in order to enable damping from the very beginning. This indeed allows damping to be considered in the second step, as expected.

However, I encountered a new issue:
In the first step, I need to stretch a flexible membrane to three times its original diameter. When this step is modeled using *DYNAMIC (instead of *STATIC), the simulation consistently diverges, likely due to the large deformation involved.

I’ve attached the input file for this two-step simulation, where:

If there is any way to stabilize this large-deformation process using *DYNAMIC—such as reducing the time step, adding artificial damping, or any other settings—I would be very grateful for your suggestions or insights.

My ultimate goal is to include damping in step 2, by whatever means necessary. This step will later be part of an FSI simulation, which must use solid elements due to coupling code limitation. Without damping, the FSI coupling becomes highly unstable and tends to diverge easily. This is why incorporating damping is essential for my case.

Thank you in advance for your time and help!

Where is the include *INCLUDE,INPUT=solid/boundary.inp?

If you are including *DAMPING the manual states

For explicit dynamic calculations without massless contact (i.e. there is no card of the type *CONTACT PAIR,TYPE=MASSLESS in the input deck) only mass proportional damping is allowed, i.e. β must be zero.

but you have BETA = 0.1;

Thank you very much for your feedback, and apologies for forgetting to include boundary.inp. Please find the file at the link.

As for the damping issue, I believe the current setup is not an explicit dynamic calculation. I’ve just tried setting BETA=0 as well as using STRUCTURAL DAMPING, but unfortunately, in this two-step simulation (*STATIC*DYNAMIC), damping still doesn’t seem to take effect.

I’d appreciate any thoughts or suggestions you might have on how to make damping work properly in this type of setup.

As an additional note:

Since my ultimate goal is to include damping in step 2, using a *STATIC step at the beginning is not strictly necessary, it was mainly chosen to help stabilize the initial deformation. However, if CalculiX currently does not support damping in a two-step simulation where the first step is *STATIC and the second is *DYNAMIC, then using *DYNAMIC for step 1 seems to be the only viable solution I can think of at the moment.

The main issue now is how to stabilize step 1. In this step, I need to stretch a flexible membrane to three times its original diameter. I’ve already tried refining the mesh, reducing the time step size, and applying damping, but the simulation still diverges in all cases.

Do you have any further suggestions or techniques that might help improve the stability of this large-deformation *DYNAMIC step?

Just to clarify, due to FSI code limitations, I’m currently unable to use shell or 2D elements, the membrane must be modeled using 3D solid elements.

Any advice would be greatly appreciated!

Can you pick a result and share the input file to reproduce?

Thank you very much for your reply.
Please find the attached files needed to reproduce the case.
The main file is step1.inp, and it also requires boundary.inp to run properly.

Below are the results from step 1 using a static calculation.
step1

However, when I switch to a dynamic calculation for step 1, the simulation consistently diverges.

Follow-up update:

step1-new.inp
step2-new.inp

I just ran a new test where step 1 is calculated using *DYNAMIC with damping defined at the model level. The output log confirms that damping is active and doing work during step 1, as expected.

In step 2, I continued with another *DYNAMIC step using *RESTART,READ, without redefining damping (as it’s not allowed after any *STEP). Surprisingly, in step 2, damping appears to have no effect—the work done by damping remains zero throughout the simulation. This suggests that even if damping is active in step 1, it is somehow ignored in step 2 if the step is restarted.

Given that we cannot redefine *DAMPING in step 2, this behavior makes it effectively impossible to apply damping in a restarted *DYNAMIC step.

Has anyone else encountered this behavior? Any workarounds or insights would be much appreciated.

Further update:

Based on the series of tests I’ve conducted, I’ve come to the following observation:

For version ccx-2.15, damping is always ignored in a restarted step (step 2), regardless of whether *DAMPING is defined at the top level, and regardless of whether step 1 is *STATIC or *DYNAMIC.

In other words, as soon as *RESTART,READ is used, damping appears to be deactivated. The log shows that the work done by damping remains zero throughout step 2, even though damping was correctly activated in step 1.

To work around this issue, a temporary solution would be to manually modify the main source code to include damping parameters and control variables directly within the dynamic solver, so that damping is enforced in restarted steps.

This is not the ‘current’ version of ccx. Latest is 2.22-dev on GitHub or latest 2.22 from the main website.

Thank you very much for the correction! I’ve now updated the information in the post above.

By the way, may I ask if the latest version (2.22-dev) addresses this issue? If it has already been resolved, that would be excellent news!

I have not tested your input files. The first step for you would be to test it with at least the 2.22 version.

How do you check if damping is active in a step ? I submitted your last shared input files using ccx 2.22 and got work performed by the damping forces at the level of e-11 in final increments of both steps.

Same as you. I check whether work performed by the damping force is zero.

By the way, in the latest version, is damping properly accounted for in a two-step setup (static → dynamic)?

If I replace *DYNAMIC with *STATIC in your first .inp file and extend it with content from the second .inp file (apart from *RESTART, READ of course), I still get damping work on the level of e-11. For example, the last entry is:

work performed by the damping forces = -2.474714e-11

1 Like

That’s great to hear. The latest version resolves this issue perfectly.

So what values did you have in previous version ? Exact zeros ?