Only a few years ago I realized that you do not have to use natural frequencies–you know, the ones you obtain from an eigenvalue analysis–to compute Rayleigh damping coefficients.

This may not be news to some of you–I am often a little slow on the uptake. But I actually read a couple papers (here and here) and realized I didn’t need to be limited by eigenvalues.

The typical approach to compute Rayleigh damping coefficients is shown below.

#
# Define your model
#
Nmodes = 4 # or whatever
w2 = ops.eigen(Nmodes)
# Pick your modes and damping ratios
wi = w2[0]**0.5; zetai = 0.03 # 3% in mode 1
wj = w2[2]**0.5; zetaj = 0.02 # 2% in mode 3
A = np.array([[1/wi, wi],[1/wj, wj]])
b = np.array([zetai,zetaj])
x = np.linalg.solve(A,2*b)
# M KT KI Kn
ops.rayleigh(x[0],0.0,0.0,x[1])

But, there’s nothing wrong with using the fundamental frequency and twice the natural frequency as the two frequencies of choice, i.e., replace lines 9 and 10 with the following.

wi = w2[0]**0.5; zetai = 0.03 # 3% in mode 1
wj = 2*wi; zetaj = 0.02 # 2% at 2*w1

Then proceed with computing the Rayleigh damping coefficients. If nothing else, this scenario guarantees you don’t attempt to compute Rayleigh damping coefficients using repeated or very closely spaced eigenvalues, which can occur in 3D models of building with symmetric distributions of mass and stiffness.

To account for loss of stiffness and period elongation during a nonlinear response history analysis, you can use a frequency lower than the fundamental natural frequency, along with a higher mode. Something like this is recommended in ASCE 41-17.

wi = 0.67*w2[0]**0.5; zetai = 0.03 # 3% at 1.5*T1
wj = w2[2]**0.5; zetaj = 0.02 # 2% in mode 3

You could also peg damping ratios to specific periods–not necessarily natural periods. Compute the frequencies of choice from selected periods, e.g., 2.0 sec and 0.4 sec.

wi = 2*np.pi/2.0; zetai = 0.03 # 3% at T=2.0 sec
wj = 2*np.pi/0.4; zetaj = 0.02 # 2% at T=0.4 sec

Then go on and compute the mass and stiffness proportional Rayleigh coefficients.

But, no matter what you do, you’re going to get the signature “swoosh” when you plot the damping ratio as a function of natural frequency.

I have been involved in the development, maintenance, and growth of OpenSees since its early days. I am interested in learning Python and improving my academic writing.
View all posts by Michael H. Scott