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!
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:
step2.inp: transient dynamic response with damping enabled
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.
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.
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.
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.
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.
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.
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.
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.
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