当前位置: 首页 > 工具软件 > OpenSees > 使用案例 >

OpenSEES的命令流

米嘉禧
2023-12-01
OpenSEES的命令流一般可以划分为以下几个部分:
(1)结构模型定义,包括节点定义、约束定义、材料定义、截面定义、坐标轴定义及单元定义。
(2)结果输出定义,主要是定义OpenSEES里面记录数据的命令Recorder。
(3)荷载定义,包括力控制工况静力荷载,位移控制工况静力荷载,地震波时程等。
(4)分析定义,是指一些迭代算法与收敛参数的选取。
 
一、结构模型定义部分:
1、第一句命令:wipe,即清除程序之前的输入数据。
 
2、确立结构自由度规定:model basic -ndm 3 -ndf 6,指的是三维六节点自由度体系。
 
3、节点定义的命令流: node $nodeTag $posx $posy $posz 
其中$nodeTag为节点编号,$posx $posy $posz 代表该节点的坐标
 
4、弹性材料定义命令流:uniaxialMaterial Elastic $matTag $E
 
5、桁架单元命令流:element truss $eleTag $iNode $jNode $A $matTag
 
6、刚性隔板:rigidDiaphragm $perpDirn $masterNodeTag $slaveNodeTag...
其中$perpDirn表示刚性隔板的方法,如楼板刚性隔板的平移方向为U1、U2,即1-2平面,该值应该为3.
另外,还需要对刚性隔板的主节点只具有平面内的自由度(U1、U2和UR3),其他自由度需要被约束。
 
7、点约束:fix $NodeTag 0 0 1 1 1 0 (u1 u2 u3 ur1 ur2 ur3)
 
8、弹性梁柱单元:element elasticBeamColumn $eleTag $iNode $jNode $A $E $G $J $Iy $Iz $transfTag
 其中 $transfTag 代表局部坐标

9、局部坐标用截面2轴的方向来指代
geomTransf Linear $transfTag $x $y $z
 
10、Steel01:
uniaxialMaterial Steel01 $matTag $Fy $E0 $b <$a1 $a2 $a3 $a4>
其中,Fy—屈服强度,Mpa。E0—弹模,Mpa。b—硬化系数
 
11、
Concrete01:
uniaxialMaterial Concrete01 $matTag $fpc $epsc0 $fpcu $epsU
其中,fpc—28天混凝土抗压强度标准值,epsc0—最大强度所对应的应变,fpcu,epsU—破坏强度及其对应的应变。

Concrete02:
uniaxialMaterial Concrete02 $matTag $fpc $epsc0 $fpcu $epsU $lambda $ft $Ets
其中,fpc—28天混凝土抗压强度标准值,epsc0—最大强度所对应的应变,fpcu,epsU—破坏强度及其对应的应变,lambda——滞回特征参数,为在epscu处卸载刚度与初始刚度的比值,一般取0.1,ft——受拉极限强度,Ets——受拉开裂后的斜率
 
12、纤维截面定义:
section Fiber n{
fiber $yLoc $zLoc $A $matTag
......}
以上命令流表示,纤维截面编号为1,{}内部为子命令流,表示每一个纤维的信息。
其中 $yLoc $zLoc 分别表示每个纤维的Y、Z坐标,截面中心点为0。$A指每个纤维的贡献面积
 
13、非线性梁柱单元(基于柔度法):
element nonlinearBeamColumn $eleTag $iNode $jNode $numIntgrPts $secTag $transfTag <-mass $massDens> <-iter $maxIters $tol> <-integration $intType>
其中,$numIntgrPts积分点数量,即纤维单元的计算截面编号。
$secTag截面纤维编号
 
14、剪切本构和抗扭本构:
需要对已经定义的截面进行进一步的组装:
section Aggregator $secTag $matTag1 $dof1 $matTag2 $dof2 ....... <-section $sectionTag>
其中,dof:
此时mat的值,例如
uniaxialMaterial Elastic 201 1.5E+09 对应的是你这个dof的刚度。
<-section $sectionTag>指的是已存在的定义截面
单元的截面编号应采用这个组装后的截面编号。
 
15、质量源
OpenSees里面采用节点质量源,每个节点有6个自由度,每个自由度上都有广义质量。
put "mass"
mass $nodeTag (ndf $massValues)
普通节点的质量定义如下:
mass $nodeTag $M $M $M 0 0 0
 
16、OpenSees里结构采用的是瑞利阻尼:
Set xDamp 0.05     设置阻尼比
Set nEigenI 1     主振型1为第一振型
Set nEigenJ 2     主振型2为第二振型
set lambdaN [eigen [expr $nEigenJ]]; 求解两阶振型即可
set lambdaI [lindex $lambdaN [expr $nEigenI-1]];     提取第一阶特征值
set lambdaJ [lindex $lambdaN [expr $nEigenJ-1]];     提取第二阶特征值
set omegaI [expr pow($lambdaI,0.5)];      从特征值求圆频率1
set omegaJ [expr pow($lambdaJ,0.5)];      从特征值求圆频率2
set alphaM [expr $xDamp*(2*$omegaI*$omegaJ)/($omegaI+$omegaJ)];    质量相关系数α
set betaKcurr [expr 2.*$xDamp/($omegaI+$omegaJ)];     刚度相关系数β
rayleigh $alphaM $betaKcurr 0 0    定义瑞利阻尼,只需填写α和β,其他为0
 
17、单向地震波数据的设置:
set IDloadTag 1001;    给地震波工况编号
set iGMfile "GMX.txt";    
set iGMdirection "1";     地震波方向
set iGMfact "0.1";     地震波峰值放大系数
set dt 0.02;     地震波时间间隔
foreach GMdirection $iGMdirection GMfile $iGMfile GMfact $iGMfact { 
incr IDloadTag; 
set GMfatt [expr 1*$iGMfact]; 
set AccelSeries "Series -dt $dt -filePath $iGMfile -factor $GMfatt";
pattern UniformExcitation $IDloadTag $GMdirection -accel $AccelSeries; 
}    多维地震波的输入标准格式
 
其中pattern UniformExcitation $IDloadTag $GMdirection -accel $AccelSeries 为荷载工况的命令流

18、多维材料:
nDMaterial ElasticIsotropic 2 32500 0.2
#材料编号、弹模、泊松比
nDMaterial PlateFiber 601 2
#601表示该二维纤维的材料编号,2表示采用的材料编号,该命令采用了静态凝聚的方法将三维材料转换为二维材料
section PlateFiber 701 601 100
#701表示截面编号,601表示截面的材料编号,100表示板厚。

19、壳单元:
element ShellMITC4 $eleTag $iNode $jNode $kNode $lNode $secTag
#节点号按逆时针方向,截面类型必须为PlateFiberSection或者ElasticMembranePlateSection


二、结果输出定义部分:  
puts "recorder"
 
1、节点位移:
recorder Node <-file $fileName> <-xml $fileName> <-time> <-node ($node1 $node2 ...)> <-nodeRange $startNode $endNode> <-node all> -dof ($dof1....) $respType
其中:
<-file $fileName> <-xml $fileName>表示输出的文件格式。
<-time> 表示第一列输出荷载倍数或时程的时间值。
在基于位移控制的加载工况中,它表示的是达到每一步加载变形的荷载模式的倍数。
<-node ($node1 $node2 ...)> 表示输出的节点号,小括号不需要。
<-nodeRange $startNode $endNode> 表示输出一系列节点
<-node all> 全部节点
 -dof ($dof1....) 表示输出节点的自由度,全部自由度为 -dof 1 2 3 4 5 6
$respType 表示输出节点的内容 包括:disp、vel、accel、incrDisp(位移增量)、"eigen i"(振型值)、reaction(节点反力)
比如说
recorder Node -file node0.txt -time -nodeRange 1 18 -dof 1 2 3
表示输出1~18号节点的1、2、3三个平动自由度的位移值到文件node0.txt。
 
2、recorder Element <-file $fileName> <-time> <-ele ($ele1 $ele2 ...)> <-eleRange $startNode $endNode> <-ele all> $eleInfo
其中:
$eleInfo 表示单元输出结果的内容,包括globalForce,localForce
比如说
recorder Ele -file ele0.txt -time -eleRange 1 46 localForce
表示输出1~46号节点的局部坐标系下的单元内力到文件ele0.txt。
 
3、recorder Element <-file $fileName> <-time> -eleRange 1 6 section $SecPos deformation
$SecPos 为输出积分点号
 
4、
输出振型形状
recorder Node -file eigen1_node0.out -time -nodeRange 1 28 -dof 1 2 3 "eigen 1"

三、荷载定义部分:
1、集中力(点荷载)的荷载定义的命令流如下:
pattern Plain 1 Linear{
load $nodeTag $Fx $Fy $Fz $Mx $My $Mz 
}
 
2、均布荷载:
eleLoad -ele $eleTag1 <$eleTag2 ....> -type -beamUniform $Wy $Wz <$Wx>
-type -beamUniform表示均布线荷载。
$Wy(沿单元截面局部坐标Y/2轴) $Wz(沿单元截面局部坐标Z/3轴) <$Wx>(沿单元长度方向) 为三个轴方向的均布荷载值。
 
四、分析定义部分:
integrator LoadControl 0.01:荷载采用力控制模式,每级的荷载增量为0.01P
integrator DisplacementControl 5 3 -0.1:监测节点为5号,3自由度变形,每步位移为-0.1mm
 
system BandGeneral:矩阵带宽处理采用一般方法
 
test EnergyLncr 1e-10 200:收敛准则采用能量准则,容差为1e-10,最大迭代步为200
 
numberer Plain:节点自由度编号采用输入节点的顺序
 
constraints Plain:约束边界处理,采用小数或大数法等一般处理方法。
 
algorithm Linear:迭代算法采用线性法,适用于弹性分析。
 
analysis Static:表明为静力分析。
 
analyze 100:增量荷载的上限(100步)
 
Push-over:
两部分:
1、重力加载(力控制)
loadConst -time 0.0
# sets loads constant and resets time to be 0.0
2、水平位移加载(位移控制)
 
Modal Analysis:
set numModes 12 
set lambda [eigen $numModes] #表示计算n阶振型,将特征值计算结果保存为lambda数组。
set period “Periods.txt” #保存计算特征值
set Periods [open $period "w"] #代表打开文本文件进行记录
puts $Periods “$lambda” 代表记录特征值数据至文本中
close $Periods #表示记录完成,关闭文本文件
record
 
TimeHistory Analysis:
constraints Transformation; 
numberer Plain; 
system UmfPack; 
test NormDispIncr 1.0e-1 200; 
algorithm Newton 
integrator Newmark 0.5 0.25 
 类似资料: