“振型参与质量系数计算”
振型参与质量系数
先简单回顾下振型质量、振型参与系数、振型参与质量、振型参与质量系数及累积振型参与质量系数的计算方法。可见,为计算振型参与质量系数,节点在各自由度下的质量及振型位移为仅有的未知量。
OpenSees实现计算振型参与质量系数的代码如下。首先通过getNodeTags命令获得所有节点,通过nodeEigenvector命令获得节点在不同振型下的振型位移,通过nodeMass命令获得节点不同自由度下的质量。
proc ProModeAnalyze_Proc { ModeNum } {
#Get Nodes
set Lnode [getNodeTags]
#EigenAnalysis
set Llam [eigen $ModeNum]
set pi 3.1415926
#Dofs
set Ldof { 1 2 3 4 5 6 }
#Accumulate Participation Mass Ratio List
set LAccMFactor { 0.0 0.0 0.0 0.0 0.0 0.0 }
#Each Mode
for { set modei 1 } { $modei <= $ModeNum } {incr modei } {
#Generalized mass of mode
set Mn 0
set LLn { 0.0 0.0 0.0 0.0 0.0 0.0 }
#Total Mass
set LMass { 0.0 0.0 0.0 0.0 0.0 0.0 }
#Participation Mass Ratio List
set LMFactor { 0.0 0.0 0.0 0.0 0.0 0.0 }
#Foreach Node
foreach nodei $Lnode {
#Get Eigen Vector
set LeigenV [nodeEigenvector $nodei $modei]
#Each Dof
foreach Ln $LLn eigenV $LeigenV accMass $LMass dofi $Ldof {
#Get Node Mass
set mass [nodeMass $nodei [expr $dofi]]
#Sum
set Ln [expr $Ln + $eigenV * $mass ]
set Mn [expr $Mn + pow($eigenV, 2) * $mass ]
set accMass [expr $accMass + $mass]
#Modify value in List
lset LLn [expr $dofi - 1] $Ln
lset LMass [expr $dofi - 1] $accMass
}
}
#Each Dof
foreach Ln $LLn mass $LMass dofi $Ldof accMfactor $LAccMFactor {
#Modal Participation Factor
set pFactor [expr $Ln / $Mn]
#Participation Mass
set pMass [expr pow($pFactor, 2) * $Mn]
#Participation Mass Ratio
set massFactor 0
if { $mass != 0 } {
set massFactor [expr 100 * $pMass / $mass]
}
#Accumulate Mass Factor
set accMfactor [expr $accMfactor + $massFactor]
#Modify value in List
lset LMFactor [expr $dofi - 1] $massFactor
lset LAccMFactor [expr $dofi - 1] $accMfactor
}
#Period
set lam [lindex $Llam [expr $modei - 1]]
set period [format "%.3f" [expr 2*$pi / sqrt($lam)]]
#Participation Mass Ratio
set PMRX [format "%.2f" [lindex $LMFactor [expr 0]]]
set PMRY [format "%.2f" [lindex $LMFactor [expr 1]]]
set PMRZ [format "%.2f" [lindex $LMFactor [expr 5]]]
puts "Mode $modei: Period=$period t PMRX = $PMRX% t PMRY = $PMRY% t PMRZ = $PMRZ%"
}
#Accumulate Participation Mass Ratio
set AccPMRX [format "%.2f" [lindex $LAccMFactor [expr 0]]]
set AccPMRY [format "%.2f" [lindex $LAccMFactor [expr 1]]]
set AccOMRZ [format "%.2f" [lindex $LAccMFactor [expr 5]]]
puts "nTotalPMRX= $AccPMRX% t TotalPMRY= $AccPMRY% t TotalPMRZ= $AccOMRZ%"
}
分析实例
source "Model\0_Main.tcl"
ProModeAnalyze_Proc 5
wipe all
图2 genBandArpack错误
点击“阅读原文”可查看并下载本推送相关的算例模型。
精彩回顾:
-
PBSD
【PBSD】超限工程好助手:结构抗震性能设计软件PBSD功能简介
【PBSD】【OpenSEES】智能化的结构弹塑性分析全套解决方案
-
PBSD工程应用
【PBSD工程应用】中新广州知识塔——330m知识城在建第一高楼
【PBSD工程应用】珠海万菱环球中心——300m拱北摩天新地标
【PBSD工程应用】广东美术馆“三馆合一”项目——岭南文化新地标
【PBSD工程应用】佛山天珺秀台——2021新广东省《高规》项目
-
小迅智能设计
-
OpenSees
【OpenSEES】FiberSection3D新变化:-Gj必选项始末
【OpenSEES】浅析迭代(二):基于LineSearch优化迭代算法
【OpenSEES】浅析迭代(三):基于Krylov优化迭代算法
【OpenSees】SecAggregator为DispBC赋予剪切刚度乃无用功
【OpenSees】在2020日本E-Defense盲测比赛的表现
【OpenSees】2021日本E-Defense盲测比赛:底部带摩擦摆的足尺钢框架结构