OpenSees Cloud

OpenSees AMI

Negative Feedback Loop

Original Post - 17 Jul 2022 - Michael H. Scott

Visit Structural Analysis Is Simple on Substack.


Although it has its proper uses, I’m not a fan of the linear algorithm. I’m even less of a fan of modal damping. However, it’s totally reasonable to use these two analysis options together–and if you do, watch out!

I’ll walk you through a recent encounter with this lethal combination, experienced during a live presentation on response history analysis of linear frame models.

Here is the displacement response history for bidirectional excitation of a 3D linear-elastic frame model. All elements are elasticBeamColumn and there is no damping.

3D frame response with no damping

Someone asked, “What do the results look like with damping?” Put on the spot, I didn’t have time to find, copy, and paste into the script the code for computing the Rayleigh damping coefficients. Instead, I did modal damping by adding two lines to the script.

ops.algorithm('Linear')

# Simple addition to demonstrate damped response
ops.eigen(4)
ops.modalDamping(0.03)

For a quick demonstration, 3% damping in the first four modes of vibration seemed reasonable. But the results were totally unreasonable.

3D frame response with modal damping and linear algorithm

After panicking for a few seconds, I remembered that modal damping messes with the topology of the effective stiffness matrix. And the linear algorithm is explicit, doing one linear solve then carrying any equilibrium error to the next time step. And there will be equilibrium error after one solve because modal damping makes the effective stiffness inconsistent with the residual force vector. And repeat.

With this negative feedback loop of modal damping and the linear algorithm, the computed response history becomes numerically unstable. There are two simple options to close the loop:

  1. Change the system to FullGeneral; or
  2. Change the algorithm to Newton (or some variant)

Choose either option and the damped response history looks much better. I chose option 2 during the presentation.

3D frame response with modal damping and Newton algorithm

The advantage of option 1 is you can keep the linear algorithm; however, the FullGeneral solver can get expensive for larger models. With option 2, you can continue using a sparse solver, which can be relatively fast despite multiple Newton iterations; however, convergence with Newton is not guaranteed when using modal damping on linear models.

With either option, remember I’m talking about the analysis of linear models. For nonlinear models, you have to use Newton or one of its variants and this post is a non-issue.