I do not remember why I was searching the internet for “damping” a couple weeks ago, but I came across this document on constructing a Rayleigh damping matrix, .
But instead of taking the usual approach of specifying damping ratios for exactly two frequencies of vibration, the document describes how to formulate a least squares problem where you specify damping ratios in more than two frequencies. The formulation is a simple extension of the “exactly two” frequencies case:
where is the frequency at which damping, , is specified. Note that i=1…n does not necessarily correspond to natural frequencies (modes) of the model.
The solution to this overdetermined system, , can be obtained from the normal equations, :
Just like traditional Rayleigh damping, solving the normal equations for the mass and stiffness proportional coefficients is straightforward after performing an eigenvalue analysis in your OpenSees script. But, because it’s least squares, you won’t obtain the specified damping ratio in any target frequency. Instead, you will get damping that should be close to what you specified.
The numerical example in the document uses a Jim Beam structure to demonstrate this approach to Rayleigh damping. As you might imagine, searching the internet for “Jim Beam structure” was not fruitful. Despite the odd name, I have no reason to believe the document was some sort of farcical take on Rayleigh damping. Although, given how much the structural engineering community obsesses over damping, a parody would not be uncalled for. To exhaust my due diligence, I also checked for an April 1 publication date; however, there is no date printed in the document but the PDF file properties show a creation date of January 25, 2019.
Hjelmstad demonstrates Rayleigh damping for a “40 story shear frame with unit mass on each level and story stiffness varying linearly from 900 at the bottom to 600 at the top”, a good candidate to dig deeper into this least squares approach. The OpenSees definition of this model is every bit as economical as Hjelmstad’s description.
import openseespy.opensees as ops Nstories = 40 m = 1.0 kbottom = 900 ktop = 600 ops.wipe() ops.model('basic','-ndm',1,'-ndf',1) ops.node(0,0) ops.fix(0,1) for i in range(1,Nstories+1): ops.node(i,0) ops.mass(i,m) k = kbottom + (ktop-kbottom)*(i-1)/(Nstories-1) ops.uniaxialMaterial('Elastic',i,k) ops.element('zeroLength',i,i-1,i,'-mat',i,'-dir',1,'-doRayleigh')
Note that the
'-doRayleigh' option is required for the zero length elements to use stiffness proportional damping.
Constructing a Rayleigh damping matrix with in modes 1 and 20 and with least squares targeting in all 40 modes gives the damping spectrum shown below.
Across the frequency range, there’s not much difference in damping between the two approaches. But locally, there’s a huge problem with the LSQ–the damping ratio for the first mode, the most important mode, is about 0.17 instead of 0.1.
So, what can be done to fix this problem? We can solve a constrained least squares problem with a constraint on the first mode damping ratio, . This leads to an extra unknown Lagrange multiplier, .
Note that I use n to mean two things: one as the limit of summation and other to indicate natural frequency in the constraint equation.
Now, solving the least squares problem with in all modes but with the hard constraint that the first mode damping is gives the following damping spectrum.
The first mode has the target damping ratio and, compared to the unconstrained least squares solution, there’s not much difference in damping for the higher modes.
Of course this was not an exhaustive example. You can play with the damping ratios in the least squares formulation, i.e., specify different damping ratios for different frequencies. But you’ll still get a Swoosh-shaped Rayleigh damping spectrum no matter what you do. Also, if you specify a second constraint in the least squares formulation, you’ll recover the 2×2 solution. Going higher than two constraints is not possible because you can’t have more constraints than unknowns in a constrained least squares problem.
You could go for Caughey damping to peg damping ratios in more than two modes, but I won’t go there because Caughey damping would be next to impossible to implement in OpenSees. So, if you really want to control damping in more than two modes, you should use modal damping.
This post was much ado about nothing. I’m sure this least squares solution is known and was piled onto someone’s compost heap long before the Jim Beam structure. If you have seen the least squares approach to Rayleigh damping somewhere, or recognize the Jim Beam structure, please let me know in the comments section below.