OpenSees自学笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OpenSees自学笔记
OpenSEES自学笔记(一)
“博主按”:本文是我第一次用OpenSEES做仿真分析作业(基于OpenSEES 的方钢管混凝土柱抗震性能分析)过程中点滴记录的自学笔记,发表出来既是和各位(尤其是OpenSEES初学者)交流,同时也算作个自我小结以备日后查阅。
尽管我力求完美,但这些习得中仍然极有可能存在错误!请注意甄别!同时也衷心希望各位高手不吝赐教!
另外,由于时间仓促,本人又是初学OpenSEES,所以文章内容上比较零散,见谅!
初识OpenSEES
我是在《钢筋混凝土结构非线性分析》这门课上第一次听说这个软件的。
老师说(均为个人理解,可能不是老师原话)这个软件能够用纤维单元做有限元分析,在模拟大型结构上比ANSYS、SAP等利用实体单元的有限元程序有优势;经常用于抗震分析科研中;不是一个“设计型”软件(如SAP、PKPM、桥博等);还要求我们用它做两个大作业。
在Silvia Mazzoni, Frank McKenna, Michael H. Scott, Gregory L. Fenves 等人编写的OpenSEES的Users Manual (v2.0)开篇,是这样回答"What is OpenSEES?"这个问题的:
· An object-oriented software framework for simulation applications in earthquake engineering using finite element methods. OpenSees is not a code.
· A communication mechanism within PEER for exchanging and building upon research accomplishments.
· As open-source software, it has the potential for a community code for earthquake engineering.
好吧,既然是专业软件,那咱就在接下来的使用中逐渐熟悉吧!
软件下载与安装
OpenSEES和Tcl的下载页面链接在OpenSEES官网首页左侧的栏目里,点击“Download”即可进入下载页面(下载之前需要注册(新用户)或填写电邮(已注册用户))。
我的电脑用的是64位的Win7(2012年5月23日11:44:48更新:Win7 旗舰版SP1),"ActiveT cl8.5.11.0.295402-win32-ix86-threaded"安装成功。
安装路径按照官
网说明手动作了修改(即将安装路径由默认的C:\Tcl改为C:\Program
Files\Tcl)。
注意:必须以管理员身份运行ActiveTcl安装程序(在安装包上右击,选择“以管理员身份运行”),否则会安装失败!
OpenSEES的运行界面如下图所示。
小技巧:可能由于T cl Editor(下文将介绍)是绿色软件,系统默认并没有把tcl 文件和T cl Editor关联起来,而且一般也没有建立tcl文件的其它关联方式,所以如果直接双击tcl文件不仅无法打开它,还会弹出错误提示对话框(提示无法识别该tcl文件头几行)!如果你想实现双击tcl文件调用Tcl Editor进行编辑的话,可以自行更改文件关联。
具体操作就是在任意一个tcl文件上右击,选择打开方式,然后通过“浏览”找到T clEditor.exe这个可执行文件(一般应该是在C:\TclEditor\bin\下),并勾上始终用该程序打开此类文件选项,确认。
以下大致总结下自行摸索的OpenSEES一般编程规律、技巧。
关于这次作业具体的心得在这篇博文里:《OpenSEES自学笔记(二)》。
(两篇写一起既乱且长。
)
OpenSEES解题一般规律、技巧总结
单位
OpenSEES中是可以用公制单位(N,m)的(而并不是像某些文章中说的“OpenSees默认为英制单位”)。
实际上我认为OpenSEES中并没有什么默认单位,只要编程者自己保持单位一致就行;这点类似于SAP2000的风格。
建模顺序
做事要讲究顺序,OpenSEES建模亦如是:必须先定义材料才能离散截面(因为离散截面时要对所划分的截面指定材料属性)。
与之类似的,必须先定义(离散)截面,才能定义非线性梁柱单元(因为定义非
线性梁柱单元时要指定单元截面)。
关于BandSPD求解方式
官网关于BandSPD方程形式的评价:
"This is a good choice for most small size models. "
并且后面紧跟了一句:
"The equations have to be numbered so the widely used RCM (Reverse Cuthill-McKee) numberer is used. "
可见numberer类型不是随便选,而是要根据方程类型来决定的!
(不过直到作业做完,我对numberer, system, test, algorithm, analysis(还包括geomTransf,constraints)等求解控制命令还是一知半解!我觉得要想弄明白这些命令——得先回头好好翻翻有限元和数值分析的书了!)
OpenSEES中默认的计算精度比较高!
“0.1000000000000001≠0.1”:(自行总结,未找到官方说明)这是一个真实的故事:我曾在程序中自以为是的将一连串相邻均只有0.1左右的数的差强行赋值为0.1,而没有采用循环命令将两数作差并将结果赋给新变量——其中即有这样的强行截断!我以为小数点后都n位了,即使我带着它最后也会被系统截断,还不如我直接预处理来得清爽!没想到这样做直接导致计算不收敛!真是失之毫厘谬以千里!可见在OpenSEES中默认的计算精度比较高!
后来我还在老师给的一份范例程序(Silvia Mazzoni & Frank McKenna, 2006)
中发现了这么一段:
……
set Ubig 1.e10; # a really large number
set Usmall [expr 1/$Ubig]; # a really small number
……
可见系统并未认为Usmall=0 !再一次印证了这一点!
划分纤维截面时角点坐标输入的门道
划分纤维截面时角点坐标输入非常有讲究!为了说的直白,我把要点放到下面这张图中了:
数据文件处理
OpenSEES运行中是可以生成并读写txt文档的!注意我说是“读写”哦!(生成txt文档的好处是方便运行完后双击生成的数据文件读取数据,你懂的。
)
Tcl编程语法
(1)命令流中不能出现中文标点(这一点和C语言编程类似)!(否则运行时DOS窗会停住,给出警告,表明不识别命令流中的中文标点。
)
(2)if-else 语句中if和后面紧跟的大括号之间、else和前后大括号之间都要空一格。
如:
if {$a>0} {
set b 3} else {
set b -3}; #如果a大于0,则令b等于3,否则等于-3。
类似的,相邻的两个大括号(一个反大括号和一个正大括号)之间也必须有一个空格。
(3)T cl语言对命令名、变量名区分大小写。
(4)一行一般只写一条语句;若想写多条,则各语句间应用分号隔开——当一行只有一条语句时,句末分号可有可无。
同时还有一种特殊情况,就是当在一条命令后(同一行中)加注释时,该命令末尾必须有分号以告知编译器该命令结束,否则编译器会认为该注释也是前面的命令的一部分,导致编译出错。
(5)引用变量时,要在变量名前加上$(美元符号)!这个步骤非常琐碎,不如C语言编程简洁。
大家就忍着点吧!
运行方法
目前我知道至少有两种:
方法一:直接运行OpenSEES,在"OpenSees >" 提示符后输入“source *.tcl”(“*.tcl”是提前编写好的命令流),然后回车。
优点:个人认为没有;
缺点:命令流编辑时易犯格式错误,每次运行都需运行OpenSEES,再在那个黑框里敲命令流,各种不方便!(其实这个方法只是说说而已,实际我从来没用过。
)有的童鞋用Ultra Editor之类的通用文本编辑软件写程序再导入OpenSEES运行,我没试过,估计应该没有下面说的第二种方法好。
方法二:借助第三方专用编译环境。
我目前一直用的是T cl Editor。
它的优点有:可以用不同颜色区分不同功能语句;还有“查找”、“加注释”、“取消注释”等基本常用功能;更好的是菜单栏有个按钮直接与OpenSEES关联,点击就可以调用OpenSEES求解,比较方便(当然,比起Visual Stidio之类的还是差远了!可惜谁叫OpenSEES是这么小众呢?)。
但这个软件有个非常大的缺点——编程者无法获知当前所编辑文档的路径!如果你需要在编程时参考其他文件夹下同样名字的文件(这样的情况在我这次做作业时经常发生,因为我编辑的文档和模板文档文件名相同),把两个文件都用Tcl Editor打开后,你稍一不留神,就会忘了你当前编辑的文档到底是哪里的文件!
那时可真是麻烦!所以我总结,这就要求编程者:
1、每次在Tcl Editor里打开文件时,不要一看文件名对就急忙打开——还要看看这个文件是不是在正确的文件夹下面;
2、编程时最好一气呵成;长时间休息时最好把T cl Editor关掉。
说句题外话,我认为一个好的专业软件应该做到让用户大部分时间只需要考虑专业相关的东西,而不必操心其他。
所以我想,如果以后自己需要经常用OpenSEES 的话,看能不能用其他的编译器,不用这个Tcl Editor了。
计算不收敛,怎么办?
可以考虑如下几点:
1、材料本构设定是否正确?——材料本构参数是否合理?而且有时steel01比steel0
2、concrete01比concrete02好收敛,如果可以的话不妨改改材料模型。
2、是否极限位移给的过大,柱子已经破坏?——把极限位移改小一点试试。
(这是针对我这次作业而言)
3、是否收敛容差太苛刻?——把容差改大一点试试。
(尽管这也许并不是真正解决问题的办法!)
调试程序的技巧:控制变量法
控制变量法大家应该很熟悉了。
调试程序中我的经验是:一次改动的参数不要太多,改动的是哪些变量自己要记得。
最好一次只改一个变量。
然后根据运行结果随所作改动变化的规律,及时将变量
修改到合适的值。
这样做看起来慢,其实我觉得是步步为营,效率比较高。
(这些其实应该是编程的通用技巧,经常编程的朋友们应该都有体会。
)
建议在程序中多用公式
一个比较好的编程习惯是,程序里能输公式的地方就输公式,让用户只需要给定几个基本参数。
不要自己事先把中间量在草稿纸上算出来然后输到程序里——这样不仅程序通用性不高,而且计算精度也没有电脑算的高(我前面已经说过,OpenSEES中默认计算精度是非常高的!),真是“吃力不讨好”!
关于wipe命令后面的分号
上文说过,如果一条命令后面(同一行中)没有其他命令或注释,那么该命令末尾既可以带分号,也可不带。
但是我发现对于wipe命令则不然:因为在T cl Editor 中可以发现,如果wipe末尾带了分号(该行再无其他字符),wipe这个单词是黑色的;但若去掉该分号,wipe 就变成了绿色——从颜色变化上猜测,莫非加了分号导致wipe命令不被识别?
再考虑到下文将提到的“OpenSEES似乎存在计算不稳定现象”与wipe命令间千丝万缕的暧昧关系,对于wipe这个“黑匣子”我还是保守处理——去掉末尾的分号吧!事实证明去掉分号后貌似有几次曾经不收敛的计算神奇般的收敛了!
疑问:OpenSEES计算结果似乎不太稳定?
具体表现就是,你现在运行某个命令流算题,计算收敛,得到解了;然后你根本就不改程序,甚至连Tcl Editor都关了,更甚至连电脑都关了,等会再重新运行这个命令流,有可能不收敛!
我遇到过很多次这个现象,还有同学出现刚开始算不通过,后来啥也没改,重新运行——竟然顺利通过了!
难道是内存调用错误?可程序开头不是由wipe命令吗?或许这个wipe根本就不像官网上介绍的那样每次运行都能彻底destory内存中所有之前建的模型、对象?(当然也不排除我们在两次结果不同的计算中间无意改动了程序某个部分而自己又忘了——毕竟调试程序很复杂,控制变量法调n个参数,特别像我们这种初学者,一调就几个小时,最后是头晕眼花,腰酸背疼……所以偶尔忘记自己对程序细微的改动也是可能的……)
关于element recorder里轴力和剪力的正方向
element recorder里记录的轴力和剪力的正方向是怎样的?User Manual里的解释是:These forces correspond to the global coordinate axes orientation.
我的理解图解如下图所示(图中剪力和轴力都为正):
其他
两个英制单位换算:
1、kip——one thousand pounds force,千磅力,约相当于4,445.205226 N≈4.45 kN。
2、重力加速度g≈9.8 m/s^2≈385.8 inch/s^2。
在学习OpenSEES中常见的英文缩写、专业英语术语:
OpenSEES:Open System for Earthquake Engineering
Simulation
NSF:National Science Foundation
PEER:Pacific Earthquake Engineering Research Center(为什么不缩写成PEERC呢?)
NEES:Network for Earthquake Engineering Simulation
PBEE:Performance-Based Earthquake Engineering
portal frame:门式刚架,龙门架(planar portal frame:平面门式刚架)ndm:number of dimensions per node
ndf:number of degrees of freedom per node
translation:uniform motion of a body in a straight line刚体位移,线位移normal:【数】法线rotation about the plane's normal绕平面法线的转动prompt:提示。
(个人理解:指DOS窗中一闪一闪的光标,学名“命令提示符”。
)a-priori:先验的。
(be generated a-priori,个人理解:即“事先编辑好的”)geometry:几何尺寸
element:单元
component:(地面运动的)分量
drift (angle):位移角
uniaxial:of or relating to only one axis,单轴的
time series:a set of data collected sequentially usually at fixed intervals of time,时间序列
argument:one of the independent variables upon whose value that of a function depends,自变量,参数
nodal load:节点荷载(这个词组读起来有点绕口^_^)
flag:标志变量(学过C语言编程的同学应该知道!)
discretization:离散化
offset:偏移(量)
iteration:迭代(法)
SOE:system of linear equations,线性方程系统
Newton with Line Search Algorithm:线性搜索路线牛顿算法
(这个翻译可能不准确)
BandSPD:Banded Symmetric Positive Definite
map:映射
关于OpenSEES的学习资料:
来自官方:
1、OpenSees User(里面有详细的帮助文档)
2、Example Mannul(官网提供的帮助手册)
3、OpenSees官网提供的T cl编程教程
4、网页版用户手册(09年版)
5、OpenSeesNavigator
(OpenSeesNavigator is a matlab interface for OpenSees. It allows users to quickly create models, perform analysis, and look at the results. It runs on windows machines. )
6、Basic Examples Manual
(The objective of this primer is to provide new users of OpenSees (Open System for Earthquake Engineering Simulation) familiar structural engineering examples as a convenient method for learning how to use the software.)
原创教程及其他:
1、转[教程]OpenSEES超简单易懂的入门第一课
2、OpenSEES最好的介绍
(这个讲了一些数值模拟的本质,比较理论化。
)
3、结构艺术家_刘金成的博客
玩转opensees~ e.g.1
玩转opensees~ e.g.2 暨sap2000 vs opensees (IV)
4、(百度文库)L形钢管混凝土柱抗震性能非线性有限元分析
5、(豆丁)OpenSees 使用与教程
(一个豆单,里面有5篇文章。
其中:《OpenSees》这篇是节选自一篇重庆大学硕士论文中关于OpenSees的部分,个人感觉写得很好。
)
6、(中华钢结构论坛)用过OpenSees的前辈请进来帮帮我!
(顺便说一下,这个论坛话题讨论质量很高,经常有高手出没!)7、厦门大学建筑与土木工程学院古泉副教授创办的OpenSees学习网站
(以前印象中厦大只有文科,浏览了这个网站后我再不敢这么想了……)8、推荐一个QQ群:61667191(Opensees与地震工程2),感兴趣的话可以加入;里面都是OpenSEES高手与爱好者,讨论的基本都是学术方面的事情。
9、dinoChen的博客
(这是陈学伟博士的个人网站,他还有个QQ空间,两个网站上都有非常丰富的优质原创资源!陈博士实乃青年才俊!佩服!上面提到的QQ群也是他创建的!)
10、《TCL/TK编程实践》第四版……——icelamp的专栏——CSDN博客
11、Tcl简介——维基百科
最后,谨摘录两段高手的OpenSEES的学习心得,与君共勉。
感谢原作者!
ocean2000:
“我的当初毕业论文也是用os做试验仿真的,台湾有一篇砌体结构实验用os 来仿真的,可以google之,os有一些可以模拟的2D单元。
这个程序只要过一遍mannual,使用一点不难,而且资料也很多了,它的论坛不错,问题的讨论很积极。
要加新单元和新材料也不难,接口都给大家提供好了。
其实这个软件的一大优点是TCL/TK很容易上手,对于计算过程可以加入自己的判断和控制条件,所以可以做出很好的滞回曲线,还可以动态显示曲线发展过程。
非常难得的是在工作中居然看到单位的软件有与opensees的数据转化接口。
”
dinochen1983:
“学习OPENSEES要求一定的有限元知识及非线性理论,最好会编程,因为建模需要用编程的思想去简化重复输入,本人觉得OPENSEES
值得大家好好学习,
我学了半年,收获很多。
”
OpenSEES自学笔记(二)
2012-04-17 10:49:15| 分类:业务|字号订阅
下面要小结的是我在做第一次OpenSEES仿真分析作业中具体针对这次作业的疑问和收获,最后还将大致展示下分析结果。
这次作业是模拟位移控制下方钢管混凝土柱(取材于吕西林、陆伟东完成的一次试验[1]。
计算高度800mm,外围钢管宽200mm,厚4mm,轴压比0.5;钢材
,用steel02模拟;内填混凝土
,用concrete02模拟。
本构参数计算参考Mander[2]和蔡健等人[3]提出的公式)的抗震性能。
我先是做了模拟滞回曲线和试验滞回曲线的对比分析,然后又分别以轴压比、内填混凝土强度和宽厚比对柱抗震性能的影响为题做了参数分析。
先说遇到的疑问吧。
为什么模拟的滞回曲线经常不关于原点对称?
我的设计意图是给定一系列最大位移值,算出下每个最大位移值下从零→正向最大位移→零→负向最大位移→零的位移步序列,然后
用位移控制加载。
柱在加载正、反向尺寸、刚度、材性相同。
所以我认为滞回曲线应该是关于原点对称的。
可是模拟出来n个曲线,几乎都不符合我的预期!随便举一例:。