OpenSees allows you to use *both* modal damping *and* stiffness proportional damping in a dynamic analysis. This combination of damping models is useful when you want to control damping in the low frequency modes and not let undamped high frequency response tarnish the analysis.

Consider a simplified model of a 40 story building. The story stiffness varies linearly from 900 at the base to 600 at the top. The mass of each floor and the roof is 1.0. The model is from the Hjelmstad structural dynamics book and the OpenSees model definition is shown in another post.

The first three modes have over 90% mass participation, so let’s specify damping ratios in only these modes and not worry about the higher modes–not yet.

```
Nmodes = 3
w2 = ops.eigen(Nmodes)
zeta = 0.025
damping = [zeta]*Nmodes
ops.modalDampingQ(*damping)
```

Note that we’re using *quick* modal damping because the computational expense of regular modal damping is pretty high in a response history analysis, even for this simple 40 DOF model.

With this assignment of damping, you get the target damping ratio in the first three modes and no damping in higher modes, as shown in the damping spectrum for the 40 story model.

To add damping to the higher modes, you can assign stiffness proportional damping. Choose a target damping ratio to be met at a target frequency or period, e.g., 2.5% damping at a period of 0.1T_{1} where T_{1} is the fundamental period.

```
Nmodes = 3
w2 = ops.eigen(Nmodes)
damping = [zeta]*Nmodes
ops.modalDampingQ(*damping)
ws = 10*w2[0]**0.5
a1 = 2*zeta/ws
ops.rayleigh(0,0,0,a1)
```

This gives the following damping spectrum.

But now you’ve added more damping to the first three modes. Damping sticklers don’t panic, you can adjust the modal damping ratios by subtracting the stiffness proportional contribution.

```
Nmodes = 3
w2 = ops.eigen(Nmodes)
ws = 10*w2[0]**0.5
a1 = 2*zeta/ws
ops.rayleigh(0,0,0,a1)
damping = [0]*Nmodes
for i in range(Nmodes):
damping[i] = zeta - a1*w[i]/2
ops.modalDampingQ(*damping)
```

Now you get a damping spectrum where you have the target damping ratio in the low modes and some damping to get rid of the high frequency response.

The vertical profiles of peak floor displacement and peak floor acceleration of the simple 40 story model are shown below for the Tabas fault normal ground motion.

Higher mode damping does not affect the peak floor displacements for this model, not to any great extent. However, adding stiffness proportional damping to the higher modes makes a significant difference in the peak floor accelerations.

For this model, adjusting the modal damping ratios to account for stiffness proportional damping contributions has a slight effect on the peak floor displacements but not on the peak floor accelerations.

Adapt these damping approaches to *your* models and see what makes sense.

This post remembered me some thoughts I had one day.

Initial stiffness damping is considered inappropriate since the damping forces increase too much when the system yields. Tangent stiffness is criticized because when the system yields the damping forces decreased considerably. What if I define an average between both models?

Virtue is the happy medium between two extremes?

LikeLike

You can use a combination of the two, plus last committed stiffness, with the `rayleigh` command in OpenSees

https://openseespydoc.readthedocs.io/en/stable/src/reyleigh.html

LikeLike