Lesson learned Seismic N.º 08
Rayleigh with a fixed β: every model in your database gets different damping
Abstract. Copying the same damping coefficient into every model looks neutral, but it is not: a flexible structure ends up with 1.5% and a stiff one with 5%. I explain where that comes from and how to fix it.
Push a swing and let go. It goes back and forth a few times, each time with less energy, until it stops. What takes energy away on every swing is damping: friction in the chains, the air, your feet dragging. Structures have it too, and in structural dynamics we sum it up as a percentage, . For concrete we usually use between 2% and 5%.
That percentage matters a lot. Less damping means a stronger response to the earthquake. So if you want to compare many structures, they should all have the same . Otherwise, part of the difference is something you put into the model.
In this note we will see how OpenSees defines Rayleigh damping, why copying the same coefficient into every model breaks that comparison, and how to fix it. At the end I share an estimation mistake I made that taught me something else.
How Rayleigh works
Rayleigh damping builds the damping matrix by mixing the mass and stiffness matrices:
With those two coefficients, each vibration mode gets:
A very common choice is stiffness-only (). The formula then becomes:
Read that slowly: damping grows with frequency. If two structures vibrate at different frequencies, the same gives them different damping.
What happens in a study with many models
Say you study structures of different heights. Short ones are stiff and vibrate fast; tall ones are flexible and vibrate slowly. Paste the same rayleigh(0, 0, beta, 0) into every model, with , and you get:
| First-mode frequency | Damping it gets |
|---|---|
| 1.5 Hz | ≈ 1.5% |
| 2 Hz | ≈ 2% |
| 3 Hz | ≈ 3% |
| 4 Hz | ≈ 4% |
| 5 Hz | ≈ 5% |
Stiff structures end up three times more damped than flexible ones. If your conclusion is “tall structures get damaged more”, part of that effect may come from giving them less damping.
How to fix it
Choose the you want and compute for each model from its own frequency:
In OpenSees:
import math
import openseespy.opensees as ops
w1 = math.sqrt(ops.eigen(1)[0]) # first-mode angular frequency
xi = 0.05 # the damping you want
ops.rayleigh(0.0, 0.0, 0.0, 2 * xi / w1) # β on committed stiffness
If more than one mode matters, use both coefficients and fix at two frequencies. For nonlinear analysis, apply to committed or tangent stiffness: with initial stiffness, yielding produces damping forces that do not exist in reality.
What I learned by estimating wrong
In a study of my own I wanted to know how much my results would move if I fixed the damping. First I measured how much drift changed with . The relationship was moderate: raise damping by 10% and drift drops a bit over 2%.
I used that to estimate how much my fragility curves would move, and I fell short by a factor of three. The reason: fragility was defined with a damage threshold (the structure cracked or it did not). In the most affected group, drift dropped only 8%, but the fragility median rose more than 40%. A small change in demand pushes many cases across the threshold at once.
A continuous demand and a threshold damage do not react the same way. If you change the model, rerun the database instead of extrapolating.
Educational, reference-only content. Opinions are my own and do not represent any employer. On a real project, the engineer of record and the governing code decide.
← Back to notes