Damping for Inelastic SDOF
Moderators: silvia, selimgunay, Moderators
Damping for Inelastic SDOF
Hi there,
1. How does Opensees handle Rayleigh damping for single degree of freedom system? Rayleigh damping requires two frequencies to be completely defined.
2. Both posted examples and some of the answers to forum posting uses Rayleigh damping for SDOF systems.
3. Most recommended Rayleigh damping setup (by this i mean the most encountered on forum) ascribes value only to the tangent-stiffness, and sets the rest equal to zero. How does opensees handle a combination of mass-proportional and tangent-stiffness proportional damping scenario versus only tangent-stiffness proportional damping for SDOF. does the program do some sort of weighing (50% - 50% if both values are specified)?
4. Is using Rayleigh damping and specifying only mass-proportional to be "2*damping coef* omega" similar to using the mass-based viscous damping for SDOF system?
5. For INELASTIC SDOF system, is it recommended to use Rayleigh damping instead of viscous damping model? Again, if so, then please elaborate how it is possible to fully define the values for the mass and stiffness coefficients in Rayleigh damping when the equation is under-constraint.
regards,
amin
1. How does Opensees handle Rayleigh damping for single degree of freedom system? Rayleigh damping requires two frequencies to be completely defined.
2. Both posted examples and some of the answers to forum posting uses Rayleigh damping for SDOF systems.
3. Most recommended Rayleigh damping setup (by this i mean the most encountered on forum) ascribes value only to the tangent-stiffness, and sets the rest equal to zero. How does opensees handle a combination of mass-proportional and tangent-stiffness proportional damping scenario versus only tangent-stiffness proportional damping for SDOF. does the program do some sort of weighing (50% - 50% if both values are specified)?
4. Is using Rayleigh damping and specifying only mass-proportional to be "2*damping coef* omega" similar to using the mass-based viscous damping for SDOF system?
5. For INELASTIC SDOF system, is it recommended to use Rayleigh damping instead of viscous damping model? Again, if so, then please elaborate how it is possible to fully define the values for the mass and stiffness coefficients in Rayleigh damping when the equation is under-constraint.
regards,
amin
Re: Damping for Inelastic SDOF
1. In a SDOF system c is proportional to mass only ("Dynamics of Structures" by A. Chopra is a good reference). In this case, you need to define mass proportional coefficient only. (Note: full Rayleigh damping model combines the two: mass and stiffness proportional terms. However, what we call Rayleigh damping in OpenSees gives you the option of specifying both or only one of them.)
3. If both terms are specified it follows the formula for the Rayleigh damping: C= aoM+a1K, where the user specifies ao and a1. In OpenSees these coefficients are called $alphaM and $betaK (or $betaKinit or $betaKcomm).
4. Yes. For this case alphaM="2*damping coef* omega"
5. SDOF system (linear or nonlinear) needs only mass proportional damping. Full Rayleigh damping is applicable to systems with at least 2 inertial DOFs.
3. If both terms are specified it follows the formula for the Rayleigh damping: C= aoM+a1K, where the user specifies ao and a1. In OpenSees these coefficients are called $alphaM and $betaK (or $betaKinit or $betaKcomm).
4. Yes. For this case alphaM="2*damping coef* omega"
5. SDOF system (linear or nonlinear) needs only mass proportional damping. Full Rayleigh damping is applicable to systems with at least 2 inertial DOFs.
Re: Damping for Inelastic SDOF
thanks for you quick response. But how come I have seen codes for SDOF posted by Silvia (http://opensees.berkeley.edu/community/ ... php?p=4014) which specifies tangent-stiffness damping only for SDOF (i.e., no mass-proportion). Also i thought if i only specify tangent-stiffness proportional coefficient, Opensees recognizes it as
c = 2*mass* omega-initial * damping_coef * (k-tangent / k-initial) which becomes c = ((2* damping_coef)/omega-initial)*k-tangent
For inelastic response, mass-proportional damping stays constant during the inelastic cycles and exaggerates the damping which results in underestimation of displacement.
Is it not possible to specify Kcommit coefficient only instead of mass coefficient in case of SDOF?
regards,
amin
c = 2*mass* omega-initial * damping_coef * (k-tangent / k-initial) which becomes c = ((2* damping_coef)/omega-initial)*k-tangent
For inelastic response, mass-proportional damping stays constant during the inelastic cycles and exaggerates the damping which results in underestimation of displacement.
Is it not possible to specify Kcommit coefficient only instead of mass coefficient in case of SDOF?
regards,
amin
-
- Posts: 58
- Joined: Sat Sep 20, 2008 11:13 pm
- Location: Tehran-Amir Kabir University of Technology (Tehran Polytechnic)
- Contact:
Re: Damping for Inelastic SDOF
Hi...
I have a few questions about Rayleigh damping.
1-In a dynamic nonlinear analysis do I need to define damping parameters more than once?I mean do i need to change the parameters in each step of the analysis?
In the following code which I find in: http://opensees.berkeley.edu/community/ ... mic#p52838
#define damping
set xDamp 0.05; # damping ratio
set MpropSwitch 1.0;
set KcurrSwitch 0.0;
set KcommSwitch 1.0;
set KinitSwitch 0.0;
set nEigenI 1; # mode 1
set nEigenJ 3; # mode 3
set lambdaN [eigen [expr $nEigenJ]]; # eigenvalue analysis for nEigenJ modes
set lambdaI [lindex $lambdaN [expr $nEigenI-1]]; # eigenvalue mode i
set lambdaJ [lindex $lambdaN [expr $nEigenJ-1]]; # eigenvalue mode j
set omegaI [expr pow($lambdaI,0.5)];
set omegaJ [expr pow($lambdaJ,0.5)];
set alphaM [expr $MpropSwitch*$xDamp*(2*$omegaI*$omegaJ)/($omegaI+$omegaJ)]; # M-prop. damping; D = alphaM*M
set betaKcurr [expr $KcurrSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # current-K; +beatKcurr*KCurrent
set betaKcomm [expr $KcommSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # last-committed K; +betaKcomm*KlastCommitt
set betaKinit [expr $KinitSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # initial-K; +beatKinit*Kini
rayleigh $alphaM $betaKcurr $betaKinit $betaKcomm; # RAYLEIGH damping
2-These parameters seem useless.
"MpropSwitch 1.0;
KcurrSwitch 0.0;
KcommSwitch 1.0;
KinitSwitch 0.0"
I have a few questions about Rayleigh damping.
1-In a dynamic nonlinear analysis do I need to define damping parameters more than once?I mean do i need to change the parameters in each step of the analysis?
In the following code which I find in: http://opensees.berkeley.edu/community/ ... mic#p52838
#define damping
set xDamp 0.05; # damping ratio
set MpropSwitch 1.0;
set KcurrSwitch 0.0;
set KcommSwitch 1.0;
set KinitSwitch 0.0;
set nEigenI 1; # mode 1
set nEigenJ 3; # mode 3
set lambdaN [eigen [expr $nEigenJ]]; # eigenvalue analysis for nEigenJ modes
set lambdaI [lindex $lambdaN [expr $nEigenI-1]]; # eigenvalue mode i
set lambdaJ [lindex $lambdaN [expr $nEigenJ-1]]; # eigenvalue mode j
set omegaI [expr pow($lambdaI,0.5)];
set omegaJ [expr pow($lambdaJ,0.5)];
set alphaM [expr $MpropSwitch*$xDamp*(2*$omegaI*$omegaJ)/($omegaI+$omegaJ)]; # M-prop. damping; D = alphaM*M
set betaKcurr [expr $KcurrSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # current-K; +beatKcurr*KCurrent
set betaKcomm [expr $KcommSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # last-committed K; +betaKcomm*KlastCommitt
set betaKinit [expr $KinitSwitch*2.*$xDamp/($omegaI+$omegaJ)]; # initial-K; +beatKinit*Kini
rayleigh $alphaM $betaKcurr $betaKinit $betaKcomm; # RAYLEIGH damping
2-These parameters seem useless.
"MpropSwitch 1.0;
KcurrSwitch 0.0;
KcommSwitch 1.0;
KinitSwitch 0.0"
Re: Damping for Inelastic SDOF
Hi Amir,
When you define your Rayleigh damping, then the damping setup will be imparted to all previously defined elements. If you want your damping to be calculated as the stiffness is changed (during the inelastic cycles), then you use the Kcommit stiffness and set the other stiffness quantities equal zero.
As for your second question, those "switches" are not useless. Based on the code you posted, they decide which stiffness is being used to calculate your eigenvectors (mode shapes). In this case you are using the tangent-stiffness (Kcommit is non-zero), and the other two, the initial stiffness, and current stiffness is zero.
When you define your Rayleigh damping, then the damping setup will be imparted to all previously defined elements. If you want your damping to be calculated as the stiffness is changed (during the inelastic cycles), then you use the Kcommit stiffness and set the other stiffness quantities equal zero.
As for your second question, those "switches" are not useless. Based on the code you posted, they decide which stiffness is being used to calculate your eigenvectors (mode shapes). In this case you are using the tangent-stiffness (Kcommit is non-zero), and the other two, the initial stiffness, and current stiffness is zero.
Re: Damping for Inelastic SDOF
Let me first answer Amin's question. Yes, you can specify $betaKcomm instead of $alphaM. But in case of SDOF you can specify only one of them. Your understanding (formula) for c is wrong. What OpenSees does is to calculate damping as:
c=$alphaM*$M or c=$betaKcomm*$Kcomm, where the user provides alpha or beta coefficients.
Amir,
In the code you have shown the damping is defined only once. Based on the code, the damping matrix is updated for each step of analysis based on the tangent stiffness of the system.
The switches:
"MpropSwitch 1.0;
KcurrSwitch 0.0;
KcommSwitch 1.0;
KinitSwitch 0.0"
are not useless. The ones set to 1.0 designate what is your damping matrix going to be proportional to. For this setup, it is proportional to mass and tangent stiffness. What Amin sad about eigenvectors is not true. You do not calculate eigenvectors from these switches. For the selected modes (1st and 3rd) in this example, you use their eigenvalues to calculate alpha and beta coefficients, and then apply swiches to them to decide which one will be part of the rayleigh damping model.
c=$alphaM*$M or c=$betaKcomm*$Kcomm, where the user provides alpha or beta coefficients.
Amir,
In the code you have shown the damping is defined only once. Based on the code, the damping matrix is updated for each step of analysis based on the tangent stiffness of the system.
The switches:
"MpropSwitch 1.0;
KcurrSwitch 0.0;
KcommSwitch 1.0;
KinitSwitch 0.0"
are not useless. The ones set to 1.0 designate what is your damping matrix going to be proportional to. For this setup, it is proportional to mass and tangent stiffness. What Amin sad about eigenvectors is not true. You do not calculate eigenvectors from these switches. For the selected modes (1st and 3rd) in this example, you use their eigenvalues to calculate alpha and beta coefficients, and then apply swiches to them to decide which one will be part of the rayleigh damping model.
-
- Posts: 58
- Joined: Sat Sep 20, 2008 11:13 pm
- Location: Tehran-Amir Kabir University of Technology (Tehran Polytechnic)
- Contact:
Re: Damping for Inelastic SDOF
Thank you
Your post was very helpful.
I need a source that explains how to use Rayleigh damping and how to determine its parameters practically.
I did not find information about "$betaKinit $betaKcomm" in chopra's book
For example how can I decide which of the following parameters are need to be used.
"MpropSwitch 1.0;
KcurrSwitch 0.0;
KcommSwitch 1.0;
KinitSwitch 0.0"
Also I do not know how to calculate damping as the stiffness is changed.( in a nonlinear dynamic or static analysis)
Do I need to use a loop in which the damping is calculated for each step of the analysis?or does Opensees automatically calculate damping parameters in each step (like the above code)?
Your post was very helpful.
I need a source that explains how to use Rayleigh damping and how to determine its parameters practically.
I did not find information about "$betaKinit $betaKcomm" in chopra's book
For example how can I decide which of the following parameters are need to be used.
"MpropSwitch 1.0;
KcurrSwitch 0.0;
KcommSwitch 1.0;
KinitSwitch 0.0"
Also I do not know how to calculate damping as the stiffness is changed.( in a nonlinear dynamic or static analysis)
Do I need to use a loop in which the damping is calculated for each step of the analysis?or does Opensees automatically calculate damping parameters in each step (like the above code)?
Re: Damping for Inelastic SDOF
Hi Vesna,
I beg to differ: if you look at my formulation, it exactly ends up with beta coefficient being 2 * damping coef / omega, and then the damping is that quantity times the tangent stiffness (or Kcommit). which ends up exactly as "c=$betaKcomm*$Kcomm" with $betaKcomm = 2 * damping coef / omega
i wrote:
c = 2*mass* omega-initial * damping_coef * (k-tangent / k-initial) which when one substitutes the value for m in terms of k and omega (m = k / omega squared), one gets 2 * damping coef / omega
regards,
amin
I beg to differ: if you look at my formulation, it exactly ends up with beta coefficient being 2 * damping coef / omega, and then the damping is that quantity times the tangent stiffness (or Kcommit). which ends up exactly as "c=$betaKcomm*$Kcomm" with $betaKcomm = 2 * damping coef / omega
i wrote:
c = 2*mass* omega-initial * damping_coef * (k-tangent / k-initial) which when one substitutes the value for m in terms of k and omega (m = k / omega squared), one gets 2 * damping coef / omega
regards,
amin
Re: Damping for Inelastic SDOF
Amir,
Once you assign damping to in terms of kcommit (which is the tangent stiffness changing according to the time series (as load) in your dynamic nonlinear analysis), the code itself changes it at every time step after it converges. once the convergence is achieved, then the program uses this stiffness as the stiffness for the next time step so on and so forth.
so you don't need a loop. just define your rayleigh damping in terms of kcommit rather than kinit, and that is all.
i am not sure if i am allowed to respond to other users' inquiries, so take my comments with a grain of salt. but in this case, i am sure about what i commented on.
regards,
amin
Once you assign damping to in terms of kcommit (which is the tangent stiffness changing according to the time series (as load) in your dynamic nonlinear analysis), the code itself changes it at every time step after it converges. once the convergence is achieved, then the program uses this stiffness as the stiffness for the next time step so on and so forth.
so you don't need a loop. just define your rayleigh damping in terms of kcommit rather than kinit, and that is all.
i am not sure if i am allowed to respond to other users' inquiries, so take my comments with a grain of salt. but in this case, i am sure about what i commented on.
regards,
amin
Re: Damping for Inelastic SDOF
Amin, what you sad previously is that "OpenSees recognizes the damping as c = 2*mass* omega-initial * damping_coef * (k-tangent / k-initial) which becomes c = ((2* damping_coef)/omega-initial)*k-tangent"
What I wanted to stress out is that OpenSees recognizes the damping as c=$alphaM * M + $betaK * Kcurrent +$betaKinit * Kinit + $betaKcomm * KlastCommit. A user is the one that specifies coefficients $alphaM $betaK $betaKinit $betaKcomm. You can set them to anything you believe is reasonable.
What I wanted to stress out is that OpenSees recognizes the damping as c=$alphaM * M + $betaK * Kcurrent +$betaKinit * Kinit + $betaKcomm * KlastCommit. A user is the one that specifies coefficients $alphaM $betaK $betaKinit $betaKcomm. You can set them to anything you believe is reasonable.
Re: Damping for Inelastic SDOF
Dear All,
Please review these papers regarding the damping in the nonlinear analysis of structures in addition to what Vesna introduced before:
- Petrini, Lorenza , Maggi, Claudio , Priestley, M. J. Nigel and Calvi, G. Michele(2008) 'Experimental Verification of Viscous Damping Modeling for Inelastic Time History Analyzes', Journal of Earthquake Engineering, 12: S1, 125 — 145
- Hall, J. F. [2006] ‘‘Problems encountered from the use (or misuse) of Rayleigh damping,’’ Earthquake Engineering and Structural Dynamic, 35, 525–545.
Bests,
---
Mostafa
Please review these papers regarding the damping in the nonlinear analysis of structures in addition to what Vesna introduced before:
- Petrini, Lorenza , Maggi, Claudio , Priestley, M. J. Nigel and Calvi, G. Michele(2008) 'Experimental Verification of Viscous Damping Modeling for Inelastic Time History Analyzes', Journal of Earthquake Engineering, 12: S1, 125 — 145
- Hall, J. F. [2006] ‘‘Problems encountered from the use (or misuse) of Rayleigh damping,’’ Earthquake Engineering and Structural Dynamic, 35, 525–545.
Bests,
---
Mostafa
Mostafa Tazarv
Re: Damping for Inelastic SDOF
Dear all,
In addition to recommendations of vesna, I would like to say important issue about SDOF systems. It is true that the users must specify only one of c=$alphaM*$M or c=$betaKcomm*$Kcomm. However, in some case that stiffness matrix has big element, the results of time history will be wrong. Moreover, in these cases the time history behavior of structure can be greater than monotonic curve of pushover. In fact, elastic beam column element with high module of elasticity or rigid element in stiffness matrix bring about this deficiency in damping calculation and consequently in solving time history analysis. I strongly recommend researchers to use just c=$alphaM*$M istead of c=$betaKcomm*$Kcomm in such cases. If you have any question or advice about this case. I would be glad to pool our experience to reach superior idea.
Best,
Rouzbeh
In addition to recommendations of vesna, I would like to say important issue about SDOF systems. It is true that the users must specify only one of c=$alphaM*$M or c=$betaKcomm*$Kcomm. However, in some case that stiffness matrix has big element, the results of time history will be wrong. Moreover, in these cases the time history behavior of structure can be greater than monotonic curve of pushover. In fact, elastic beam column element with high module of elasticity or rigid element in stiffness matrix bring about this deficiency in damping calculation and consequently in solving time history analysis. I strongly recommend researchers to use just c=$alphaM*$M istead of c=$betaKcomm*$Kcomm in such cases. If you have any question or advice about this case. I would be glad to pool our experience to reach superior idea.
Best,
Rouzbeh
Re: Damping for Inelastic SDOF
Very nice discussion!
I would also like to add that (it might already be obvious to many people), when using Rayleigh or Stiffness proportional damping, the option for element's contribution to rayleigh damping (due to element's mass and stiffness) must be turned on (i.e., doRayleigh must be 1), otherwise you won't get the damping you intended for a particular mode.
For mass proportional damping, doRayleigh can use either 1 or 0, you would get the damping what you intended.
It took me some time to figure out by calculating alphaM and betaK after assigning certain damping values to particular modes and then using free vibration with initial displacement condition to calculate the damping from amplitude ratios and comparing it to the assigned damping.
I would also like to add that (it might already be obvious to many people), when using Rayleigh or Stiffness proportional damping, the option for element's contribution to rayleigh damping (due to element's mass and stiffness) must be turned on (i.e., doRayleigh must be 1), otherwise you won't get the damping you intended for a particular mode.
For mass proportional damping, doRayleigh can use either 1 or 0, you would get the damping what you intended.
It took me some time to figure out by calculating alphaM and betaK after assigning certain damping values to particular modes and then using free vibration with initial displacement condition to calculate the damping from amplitude ratios and comparing it to the assigned damping.
Manish Kumar
Department of Civil, Structural and Environmental Engineering
University at Buffalo, The State University of New York
http://www.manishkumar.org
Department of Civil, Structural and Environmental Engineering
University at Buffalo, The State University of New York
http://www.manishkumar.org