OpenSees学习记录【二】:柱构件的Pushover分析

引言

不管是静力或是动力分析,OpenSees基本都遵循:系统设置——节点——支座——质量——材料——截面——单元——荷载——分析,这一流程。本文将根据OpenSees官方的例子Example 1a介绍对一个柱构件进行Pushover分析,在此之前会介绍需要用到的命令及其用法。

命令

TCL命令

file mkdir

创建目录。

file mkdir Data;  # 创建目录Data

puts

输出字符串,注意要用双引号。

OpenSees > puts "hello world!"
hello world!

set

定义变量,注意在tcl中调用变量要加$号。

OpenSees > set a 1
1
OpenSees > puts $a
1

OpenSees命令

wipe

该命令用于销毁所有构建的对象,即模型的所有组件、分析的和记录器。

model

该命令用于定义模型的空间维度和节点的自由度数量。

model basic -ndm 2 -ndf 3;  # 二维三自由度

node

该命令用于构造一个节点对象。

node 1 0.0 0.0;  # 坐标为(0,0)的节点1
node 2 0.0 120.; # 坐标为(0,120)的节点2

fix

该命令用于构建单点齐次边界约束。

fix 1 1 1 1;  # 节点 1: 全部固定
fix 2 0 1 0;  # 节点 2: 只固定Y方向

mass

该命令用于设置一个节点的质量。

mass 2 2.5 0.0 0.0;  # 节点2在X方向的质量为2.5

geomTransf Linear

该命令用于构造线性坐标变换对象,该对象执行梁柱单元刚度和抗力从局部坐标系到全局坐标系的线性几何变换。假设有两个单元分别为element1和element2,其模型如图所示,两个单元对应不同的坐标变换。

geomTransf Linear 1 0 0 -1;  # 编号为1的坐标转换,局部Z轴 = - 全局Z轴
geomTransf Linear 2 0 1 0;  # 编号为2的坐标转换,局部Z轴 = 全局Y轴

坐标转换1用于element1,坐标转换2用于element2。

element elasticBeamColumn

该命令用于构造弹性梁柱单元对象。构建弹性梁柱单元的参数取决于问题的维度。

对于二维问题:

element elasticBeamColumn $eleTag $iNode $jNode $A $E $Iz $transfTag

下述命令构造了编号为1的单元,两端节点分别为节点2和节点4,横截面积为5.5,弹性模量为100,惯性矩1e6,使用编号为1的坐标转换。

element elasticBeamColumn 1 2 4 5.5 100.0 1e6 1;

recorder Node

节点记录器可以记录在每次收敛后节点的响应。

recorder Node -file nodesD.out -time -node 1 2 -dof 1 2 disp;  # 记录节点1、2在X、Y方向的位移到nodesD.out

nodesD.out文件中第1列是时间,第2列是节点1在X方向的位移,第3列是节点1在Y方向的位移,以此类推。

disp可更换为下列选项:

disp位移
vel速度
accel加速度
incrDisp位移增量
eigen i模态i的特征向量
rayleighForces阻尼力

pattern Plain

构建静力荷载工况。每个静力荷载工况都与一个时间序列相关联,可以包含多个节点荷载、单元荷载和单点约束。在该命令后面的{}中包含了生成该工况所需的所有荷载和单点约束。

pattern Plain 1 Linear {
   load 2 0. -2000. 0.;
   eleLoad -ele 1 -type -beamUniform 2000.;
   eleLoad -ele 2 -type -beamUniform 0 2000.;
   eleLoad -ele 3 -type -beamUniform 0 0 -2000.;
};

上述命令创建了编号为1的静力荷载工况,时间序列为线性的时间序列,该工况包含了一个节点荷载(节点2在Y方向上的荷载为-2000),3个单元荷载(单元1在局部Y方向上的均匀荷载为2000,后面两个分别是单元2、3在局部Z、X方向的荷载)。

constraints

该命令用于构造约束处理器对象。约束处理器对象决定了在分析中如何强制执行约束方程。

constraints Plain;

Plain可更换为下列选项:

Plain
Lagrange
Penalty
Transformation

numberer

该命令用于构造一个自由度编号对象,以提供节点上的自由度和方程编号之间的映射。

numberer Plain;

Plain可更换为下列选项:

Plain
RCM
AMD

system

该命令用于构造系统的线性方程组和线性求解器对象,以存储和求解分析中的方程组。

system BandGeneral;

BandGeneral可更换为下列选项:

BandGeneral
BandSPD
ProfileSPD
SparseGEN
UmfPack
FullGeneral

test NormDispIncr

该命令用于构建收敛测试,当分析的位移增量与应用于模型的位移增量相差小于设定值时,认为分析模型收敛。

test NormDispIncr 1.0e-8 6;

algorithm

该命令用于构造一个求解算法对象,它决定了求解非线性方程的步骤顺序。

algorithm Newton;

Newton可更换为下列选项:

Linear
Newton
NewtonLineSearch
ModifiedNewton
KrylovNewton
SecantNewton
BFGS
Broyden

integrator LoadControl

该命令用于构造一个位移控制器,根据设定值在一步分析中施加位移增量。

integrator LoadControl 0.1;

analysis Static

该命令用于构建一个静力分析对象。

analyze

该命令用于执行分析,可以设定执行多少步。每一步中通过integrator命令施加增量,用algorithm命令定义的算法求解新的非线性方程,通过test命令定义的收敛测试判断求解是否收敛,如果收敛则执行下一步。

analyze 10;  # 执行10步

loadConst

该命令用于设置当前分析的时间。

loadConst -time 0.0;  # 重置分析时间

例子

对下图所示的柱构件进行建模并执行Pushover分析。

wipe;
model basic -ndm 2 -ndf 3;
file mkdir Data;

# 建模
set LCol 400;
node 1 0 0;
node 2 0 $LCol;
fix 1 1 1 1;
mass 2 5. 0. 0.;

geomTransf Linear 1;
element elasticBeamColumn 1 1 2 3600000000 4227 1080000 1;

# 设置记录器
recorder Node -file Data/DFree.out -time -node 2 -dof 1 2 3 disp;
recorder Node -file Data/DBase.out -time -node 1 -dof 1 2 3 disp;
recorder Node -file Data/RBase.out -time -node 1 -dof 1 2 3 reaction;

# 重力分析
pattern Plain 1 Linear {
   load 2 0. -2000. 0.;
};
constraints Plain;
numberer Plain;
system BandGeneral;
test NormDispIncr 1.0e-8 6;
algorithm Newton;
integrator LoadControl 0.1;
analysis Static;
analyze 10;
loadConst -time 0.0;

# Pushover分析
pattern Plain 2 Linear {
	load 2 2000. 0.0 0.0;
}
integrator DisplacementControl 2 1 0.1;
analyze 1000;

puts "Done!"

参考资料

[OpenSEES]超简单易懂的入门第一课

Command Manual

OpenSees从零开始

欢迎关注作者

@zouxlin3

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酒桶在你野区

感谢支持!????

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值