|||
Implementing Monte Carlo Simulation Method forStructural Reliability Assessment in OpenSees
在OpenSees中实现结构可靠度分析的Monte Carlo方法
----Implemented by Chao Dang1
(1.党超,湖南大学,土木工程学院,E-mail: chaodang@outlook.com)
OpenSees的全称是Open Systemfor Earthquake Engineering Simulation(地震工程模拟的开放体系),它是由美国国家自然科学基金(NSF)资助、西部大学联盟“太平洋地震工程研究中心”(Pacific EarthquakeEngineering Research Center,简称PEER)主导、加州大学伯克利分校为主研发而成的、用于结构和岩土方面地震反应模拟的一个较为全面且不断发展的开放的程序软件体系。该程序正在引起世界各国结构工程领域众多研究人员的关注和重视,而在国内也开始有少数学校开展了一些初步的学习和相关的研究工作。
经过多年的发展,OpenSees中的可靠度分析模块也在不断完善。为了帮助科研人员更好地使用OpenSees进行结构可靠度分析,本文在综合了其他参考资料的基础上,以一个简单的算例阐明在OpenSees中实现Monte Carlo模拟的编程方法。读者仅需稍微掌握OpenSees有限元分析的基本方法和Tcl语言的简单应用,便可以将本文提供的程序应用于其他随机有限元的分析当中。
算例:一个经典的9杆桁架模型将作为本文的算例(如图1所示),考虑的随机变量如表1所示。结构功能函数定义为,2、3、4和5节点的竖向位移最大值不超过一限值,
图1 9杆桁架模型
表1 随机变量信息
随机变量 | 分布类型 | 均值 | 变异系数 |
截面面积A | 正态分布 | 2500 mm2 | 0.2 |
弹性模量E | 正态分布 | 206000 Mpa | 0.2 |
荷载F1 | 对数正态分布 | 3000 kN | 0.2 |
荷载F2 | 对数正态分布 | 4000 kN | 0.2 |
程序:
# Model Created by Chao Dang 22/06/2017
# The script creates a static model of a nine-bartruss structure
# Monte Carlo methods are used for ReliabilityAssessment
wipe
model BasicBuilder -ndm 2 -ndf 2
reliability
# define node
node 1 0.0 0.0
node 2 4000.0 0.0
node 3 4000.0 3000.0
node 4 8000.0 0.0
node 5 8000.0 3000.0
node 6 12000.0 0.0
# define boundary condition
fix 1 1 1
fix 6 0 1
# define material
set E 2.06E5
uniaxialMaterial Elastic 1 $E
# define element
set A 2500
element truss 1 1 2 $A 1
element truss 2 2 4 $A 1
element truss 3 4 6 $A 1
element truss 4 1 3 $A 1
element truss 5 2 3 $A 1
element truss 6 3 4 $A 1
element truss 7 4 5 $A 1
element truss 8 5 6 $A 1
element truss 9 3 5 $A 1
# define load
set F1 3000000
set F2 4000000
pattern Plain 1 "Linear" {
load 20 [expr -$F1]
load 40 [expr -$F2]
}
# define random variable
randomVariable 1 normal -mean $A -stdv [expr0.2*$A]
randomVariable 2 normal -mean $E -stdv [expr0.2*$E]
randomVariable 3 lognormal -mean $F1 -stdv [expr0.2*$F1]
randomVariable 4 lognormal -mean $F2 -stdv [expr0.2*$F2]
# define parameter
set eleNum 9
parameter 1 randomVariable 1
parameter 2 randomVariable 2
for {set i 1} {$i <= $eleNum} {incr i} {
# addeara of all elements to parameter 1
addToParameter1 element $i A
# addmodulus of all elements to parameter 2
addToParameter2 element $i E
}
# define nodal load as parameter
parameter 3 randomVariable 3 loadPattern 1loadAtNode 2 2
parameter 4 randomVariable 4 loadPattern 1loadAtNode 4 2
# define the nodal deflections as parameters
parameter 5 node 2 disp 2
parameter 6 node 3 disp 2
parameter 7 node 4 disp 2
parameter 8 node 5 disp 2
# Monte CarloSimulation
set Ntrials 100000
set Nfail 0
for {set i 1} {$i <= $Ntrials} {incr i} {
reset
foreachrvTag [getRVTags] {
setp [expr rand()]
updateParameter$rvTag [getInverseCDF $rvTag $p]
}
constraintsPlain
numbererRCM
systemBandGeneral
testEnergyIncr 1.0e-6 200
algorithmNewton
integratorLoadControl 1
analysisStatic
analyze1
updateParameter 5 [nodeDisp 2 2]
updateParameter 6 [nodeDisp 3 2]
updateParameter 7 [nodeDisp 4 2]
updateParameter 8 [nodeDisp 5 2]
sets(1) [expr abs([getParamValue 5])]
sets(2) [expr abs([getParamValue 6])]
sets(3) [expr abs([getParamValue 7])]
sets(4) [expr abs([getParamValue 8])]
for{set j 1} {$j < 4} {incr j} {
if {$s($j) < $s([expr $j+1])} {
set d $s([expr $j+1])
} else {
set d $s($j)
}
}
set g[expr 800-$d]
if {$g<= 0} {incr Nfail}
puts$i
}
puts "pf = [exprdouble($Nfail)/$Ntrials]"
nine_bar_truss.tcl (转载、引用请注明出处)
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-30 07:45
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社