图1 分析回滚实现高效的主余震分析
分析回滚机制
proc GM_Analyze { Damping GM_Name dt PGA is_X { Model_Descp "" } {commitTag 0} } {
#Input Model
source "Model\0_Main.tcl"
#Damping Ratio Define
Rayleigh_Proc 1 2 $Damping
#Gravity_Analysis
Gravity_Proc 10
#Define Recorder
DefineRecorder $GM_Name $PGA $is_X
#Load Case Name
set lc_name [GetLoadCaseName $GM_Name $is_X ]
#Ground Motion Analysis
set TimeCost [GroundMotionAnalysis $GM_Name $PGA $is_X $dt $Model_Descp 1000]
#Analysis Time
puts "*$Model_Descp $lc_name $PGA Finish with [format "%.0f" $TimeCost] second."
#Save Model
if { $commitTag > 0 } {
#Remove old recorder
remove recorders
#Time back to Zero
loadConst -time 0.0
#Remove LoadCase
remove loadPattern 1000
remove loadPattern 1001
#Create New Directory for database
file mkdir "Database"
#Save Model
database File "Database//$lc_name"
save $commitTag
}
#Clear All
wipe All
#Return
return 0
}
在余震分析中,通过restore命令即可恢复模型并回滚至主震完成时的状态。save及restore的实现依赖于节点、单元、约束及荷载的“sendSelf”及“recvSelf”方法,该方法继承于基类MovableObject。
如本推送算例,发现ElementLoad的“sendSelf”及“recvSelf”未正确重写,因此等效为节点荷载进行模拟。感兴趣的读者可自行对源码进行补充,难度系数低。“sendSelf”及“recvSelf”除用于保存及恢复模型外,还用于并行计算。
proc GM_Analyze_Restart { GM_Name dt PGA is_X commitTag { Model_Descp "" } } {
#Load Case Name
set lc_name [GetLoadCaseName $GM_Name $is_X ]
model basic -ndm 3 -ndf 6
#Input Model
database File "Database//$lc_name"
restore $commitTag
source "Model\1_Function.tcl"
source "Model\9_Region.tcl"
source "Model\11_Recorder.tcl"
#Define Recorder
DefineRecorder $GM_Name $PGA $is_X
#Ground Motion Analysis
set TimeCost [GroundMotionAnalysis $GM_Name $PGA $is_X $dt $Model_Descp 2000]
#Analysis Time
puts "*$Model_Descp $lc_name $PGA Finish with [format "%.0f" $TimeCost] second."
#Clear All
wipe All
#Return
return 0
}
主余震分析时,先进行$PGA_Main等级的主震分析,通过标签commitTag保存模型,再通过“GM_Analyze_Restart”回滚至主震,完成不同等级的余震分析。
#Model Descp
set Model_Descp "OpenSEES"
#Damping Ratio
set Damping 0.05
#Ground Motion Descp
set GM_Name "GM1"
#Digital Interval
set dt 0.02
#PGA
set PGA_Main 0.600
set PGA_List { 0.400 0.600 0.800 }
set commitTag 6
#Input TCL
source "Model\12_OSM.tcl"
#Main GM
GM_Analyze $Damping $GM_Name $dt $PGA_Main "true" $Model_Descp $commitTag
#GM Series Analysis
foreach PGA $PGA_List {
GM_Analyze_Restart $GM_Name $dt $PGA "true" $commitTag $Model_Descp
}
分析实例
可见,结构经历0.6g主震后存在显著的残余变形;在余震作用下,构件塑性逐步发展,导致结构呈现更为显著的残余变形:0.4g余震作用下,结构个别首层柱发生严重损坏;0.6g余震作用下,结构首层柱全部失效;0.8g余震作用下,结构损伤由首层发展至结构二层,首层及二层柱均失效。
图4 结构响应与首层构件损伤
点击“阅读原文”可查看并下载本推送相关的算例模型。
精彩回顾:
【会议总结】OpenSEES Days Eurasia 2019 in PolyU
【PBSD】【OpenSees】在2019日本E-Defense盲测比赛的表现
-
PBSD
【PBSD】超限工程好助手:结构抗震性能设计软件PBSD功能简介
【PBSD】【OpenSEES】智能化的结构弹塑性分析全套解决方案
【PBSD】性能前馈集中塑性单元PFLPH与纤维单元力学性能对比
-
PBSD工程应用
【PBSD工程应用】广东美术馆“三馆合一”项目——岭南文化新地标
【PBSD工程应用】佛山天珺秀台——2021新广东省《高规》项目
-
OpenSees
【OpenSees】应力元纤维单元的Localization Issues
【OpenSEES】FiberSection3D新变化:-Gj必选项始末
【OpenSEES】浅析迭代(二):基于LineSearch优化迭代算法
【OpenSEES】浅析迭代(三):基于Krylov优化迭代算法
【OpenSees】SecAggregator为DispBC赋予剪切刚度乃无用功
-
WSAP
-
编程与工具
【工具】OSRun [OpenSees运行辅助工具][开源]
【工具】FSV [OpenSees纤维截面可视化工具][开源]