Last Committed Stiffness

With the rayleigh command, OpenSees allows you to input three stiffness proportional damping factors: 1) the current tangent stiffness, 2) the initial stiffness, and 3) the last committed stiffness. Each option has drawbacks.

The current tangent stiffness is problematic because the tangent stiffness can change significantly at each iteration of the equilibrium solution algorithm. The damping force will change accordingly and you’ll likely experience convergence issues.

The initial stiffness is also problematic because it can overestimate damping forces in yielding elements where the stiffness is reduced and the velocities increase.

The last committed stiffness is generally thought to be the best option because it has the most up to date information on the stiffness. Here’s the source code for what is stored as the last committed stiffness:

The last committed stiffness is actually just the element’s tangent stiffness when commitState() is called at the end of a time step. This could be a little concerning because the last committed stiffness is not necessarily the stiffness that was used to find equilibrium in the global solution algorithm.

In fact, the tangent stiffness may not even be a good stiffness at all. What if Concrete23 returns a bad tangent? What if Concrete23 always returns the initial stiffness because the author of Concrete23 expected the global solution algorithm, e.g., KrylovNewton, to clean up the mess?

All that aside, for the last committed stiffness to work, each element needs to call the base class commitState(). For example, here are the first few lines of commitState() for the force-based beam-column element:

You’ll see similar calls in the commitState() implementation for other elements. So, be sure to make a call to Element::commitState() in your element implementation if you want the last committed stiffness proportional damping to work. If your element doesn’t call the base class Element::commitState(), the last committed stiffness will be the tangent stiffness at the time the rayleigh command was invoked–most likely the initial stiffness, which got us here in the first place.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.