OpenSees自学笔记.doc
- 文档编号:134164
- 上传时间:2022-10-04
- 格式:DOC
- 页数:35
- 大小:838.02KB
OpenSees自学笔记.doc
《OpenSees自学笔记.doc》由会员分享,可在线阅读,更多相关《OpenSees自学笔记.doc(35页珍藏版)》请在冰豆网上搜索。
OpenSEES自学笔记
(一)
“博主按”:
本文是我第一次用OpenSEES做仿真分析作业(基于OpenSEES的方钢管混凝土柱抗震性能分析)过程中点滴记录的自学笔记,发表出来既是和各位(尤其是OpenSEES初学者)交流,同时也算作个自我小结以备日后查阅。
尽管我力求完美,但这些习得中仍然极有可能存在错误!
请注意甄别!
同时也衷心希望各位高手不吝赐教!
另外,由于时间仓促,本人又是初学OpenSEES,所以文章内容上比较零散,见谅!
初识OpenSEES
我是在《钢筋混凝土结构非线性分析》这门课上第一次听说这个软件的。
老师说(均为个人理解,可能不是老师原话)这个软件能够用纤维单元做有限元分析,在模拟大型结构上比ANSYS、SAP等利用实体单元的有限元程序有优势;经常用于抗震分析科研中;不是一个“设计型”软件(如SAP、PKPM、桥博等);还要求我们用它做两个大作业。
在SilviaMazzoni,FrankMcKenna,MichaelH.Scott,GregoryL.Fenves等人编写的OpenSEES的UsersManual(v2.0)开篇,是这样回答"WhatisOpenSEES?
"这个问题的:
·Anobject-orientedsoftwareframeworkforsimulationapplicationsinearthquakeengineeringusingfiniteelementmethods.OpenSeesisnotacode.
·AcommunicationmechanismwithinPEERforexchangingandbuildinguponresearchaccomplishments.
·Asopen-sourcesoftware,ithasthepotentialforacommunitycodeforearthquakeengineering.
好吧,既然是专业软件,那咱就在接下来的使用中逐渐熟悉吧!
软件下载与安装
OpenSEES和Tcl的下载页面链接在OpenSEES官网首页左侧的栏目里,点击“Download”即可进入下载页面(下载之前需要注册(新用户)或填写电邮(已注册用户))。
我的电脑用的是64位的Win7(2012年5月23日11:
44:
48更新:
Win7旗舰版SP1),"ActiveTcl8.5.11.0.295402-win32-ix86-threaded"安装成功。
安装路径按照官网说明手动作了修改(即将安装路径由默认的C:
\Tcl改为C:
\ProgramFiles\Tcl)。
注意:
必须以管理员身份运行ActiveTcl安装程序(在安装包上右击,选择“以管理员身份运行”),否则会安装失败!
OpenSEES的运行界面如下图所示。
小技巧:
可能由于TclEditor(下文将介绍)是绿色软件,系统默认并没有把tcl文件和TclEditor关联起来,而且一般也没有建立tcl文件的其它关联方式,所以如果直接双击tcl文件不仅无法打开它,还会弹出错误提示对话框(提示无法识别该tcl文件头几行)!
如果你想实现双击tcl文件调用TclEditor进行编辑的话,可以自行更改文件关联。
具体操作就是在任意一个tcl文件上右击,选择打开方式,然后通过“浏览”找到TclEditor.exe这个可执行文件(一般应该是在C:
\TclEditor\bin\下),并勾上始终用该程序打开此类文件选项,确认。
以下大致总结下自行摸索的OpenSEES一般编程规律、技巧。
关于这次作业具体的心得在这篇博文里:
《OpenSEES自学笔记
(二)》。
(两篇写一起既乱且长。
)
OpenSEES解题一般规律、技巧总结
单位
OpenSEES中是可以用公制单位(N,m)的(而并不是像某些文章中说的“OpenSees默认为英制单位”)。
实际上我认为OpenSEES中并没有什么默认单位,只要编程者自己保持单位一致就行;这点类似于SAP2000的风格。
建模顺序
做事要讲究顺序,OpenSEES建模亦如是:
必须先定义材料才能离散截面(因为离散截面时要对所划分的截面指定材料属性)。
与之类似的,必须先定义(离散)截面,才能定义非线性梁柱单元(因为定义非线性梁柱单元时要指定单元截面)。
关于BandSPD求解方式
官网关于BandSPD方程形式的评价:
"Thisisagoodchoiceformostsmallsizemodels."
并且后面紧跟了一句:
"TheequationshavetobenumberedsothewidelyusedRCM(ReverseCuthill-McKee)numbererisused."
可见numberer类型不是随便选,而是要根据方程类型来决定的!
(不过直到作业做完,我对numberer,system,test,algorithm,analysis(还包括geomTransf,constraints)等求解控制命令还是一知半解!
我觉得要想弄明白这些命令——得先回头好好翻翻有限元和数值分析的书了!
)
OpenSEES中默认的计算精度比较高!
“0.1000000000000001≠0.1”:
(自行总结,未找到官方说明)这是一个真实的故事:
我曾在程序中自以为是的将一连串相邻均只有0.1左右的数的差强行赋值为0.1,而没有采用循环命令将两数作差并将结果赋给新变量——其中即有这样的强行截断!
我以为小数点后都n位了,即使我带着它最后也会被系统截断,还不如我直接预处理来得清爽!
没想到这样做直接导致计算不收敛!
真是失之毫厘谬以千里!
可见在OpenSEES中默认的计算精度比较高!
后来我还在老师给的一份范例程序(SilviaMazzoni&FrankMcKenna,2006)中发现了这么一段:
……
setUbig1.e10;#areallylargenumber
setUsmall[expr1/$Ubig];#areallysmallnumber
……
可见系统并未认为Usmall=0!
再一次印证了这一点!
划分纤维截面时角点坐标输入的门道
划分纤维截面时角点坐标输入非常有讲究!
为了说的直白,我把要点放到下面这张图中了:
数据文件处理
OpenSEES运行中是可以生成并读写txt文档的!
注意我说是“读写”哦!
(生成txt文档的好处是方便运行完后双击生成的数据文件读取数据,你懂的。
)
Tcl编程语法
(1)命令流中不能出现中文标点(这一点和C语言编程类似)!
(否则运行时DOS窗会停住,给出警告,表明不识别命令流中的中文标点。
)
(2)if-else语句中if和后面紧跟的大括号之间、else和前后大括号之间都要空一格。
如:
if{$a>0}{
setb3}else{
setb-3};#如果a大于0,则令b等于3,否则等于-3。
类似的,相邻的两个大括号(一个反大括号和一个正大括号)之间也必须有一个空格。
(3)Tcl语言对命令名、变量名区分大小写。
(4)一行一般只写一条语句;若想写多条,则各语句间应用分号隔开——当一行只有一条语句时,句末分号可有可无。
同时还有一种特殊情况,就是当在一条命令后(同一行中)加注释时,该命令末尾必须有分号以告知编译器该命令结束,否则编译器会认为该注释也是前面的命令的一部分,导致编译出错。
(5)引用变量时,要在变量名前加上$(美元符号)!
这个步骤非常琐碎,不如C语言编程简洁。
大家就忍着点吧!
运行方法
目前我知道至少有两种:
方法一:
直接运行OpenSEES,在"OpenSees>"提示符后输入“source*.tcl”(“*.tcl”是提前编写好的命令流),然后回车。
优点:
个人认为没有;
缺点:
命令流编辑时易犯格式错误,每次运行都需运行OpenSEES,再在那个黑框里敲命令流,各种不方便!
(其实这个方法只是说说而已,实际我从来没用过。
)有的童鞋用UltraEditor之类的通用文本编辑软件写程序再导入OpenSEES运行,我没试过,估计应该没有下面说的第二种方法好。
方法二:
借助第三方专用编译环境。
我目前一直用的是TclEditor。
它的优点有:
可以用不同颜色区分不同功能语句;还有“查找”、“加注释”、“取消注释”等基本常用功能;更好的是菜单栏有个按钮直接与OpenSEES关联,点击就可以调用OpenSEES求解,比较方便(当然,比起VisualStidio之类的还是差远了!
可惜谁叫OpenSEES是这么小众呢?
)。
但这个软件有个非常大的缺点——编程者无法获知当前所编辑文档的路径!
如果你需要在编程时参考其他文件夹下同样名字的文件(这样的情况在我这次做作业时经常发生,因为我编辑的文档和模板文档文件名相同),把两个文件都用TclEditor打开后,你稍一不留神,就会忘了你当前编辑的文档到底是哪里的文件!
那时可真是麻烦!
所以我总结,这就要求编程者:
1、每次在TclEditor里打开文件时,不要一看文件名对就急忙打开——还要看看这个文件是不是在正确的文件夹下面;
2、编程时最好一气呵成;长时间休息时最好把TclEditor关掉。
说句题外话,我认为一个好的专业软件应该做到让用户大部分时间只需要考虑专业相关的东西,而不必操心其他。
所以我想,如果以后自己需要经常用OpenSEES的话,看能不能用其他的编译器,不用这个TclEditor了。
计算不收敛,怎么办?
可以考虑如下几点:
1、材料本构设定是否正确?
——材料本构参数是否合理?
而且有时steel01比steel02、concrete01比concrete02好收敛,如果可以的话不妨改改材料模型。
2、是否极限位移给的过大,柱子已经破坏?
——把极限位移改小一点试试。
(这是针对我这次作业而言)
3、是否收敛容差太苛刻?
——把容差改大一点试试。
(尽管这也许并不是真正解决问题的办法!
)
调试程序的技巧:
控制变量法
控制变量法大家应该很熟悉了。
调试程序中我的经验是:
一次改动的参数不要太多,改动的是哪些变量自己要记得。
最好一次只改一个变量。
然后根据运行结果随所作改动变化的规律,及时将变量修改到合适的值。
这样做看起来慢,其实我觉得是步步为营,效率比较高。
(这些其实应该是编程的通用技巧,经常编程的朋友们应该都有体会。
)
建议在程序中多用公式
一个比较好的编程习惯是,程序里能输公式的地方就输公式,让用户只需要给定几个基本参数。
不要自己事先把中间量在草稿纸上算出来然后输到程序里——这样不仅程序通用性不高,而且计算精度也没有电脑算的高(我前面已经说过,OpenSEES中默认计算精度是非常高的!
),真是“吃力不讨好”!
关于wipe命令后面的分号
上文说过,如果一条命令后面(同一行中)没有其他命令或注释,那么该命令末尾既可以带分号,也可不带。
但是我发现对于wipe命令则不然:
因为在TclEditor中可以发现,如果wipe末尾带了分号(该行再无其他字符),wipe这个单词是黑色的;但若去掉该分号,wipe就变成了绿色——从颜色变化上猜测,莫非加了分号导致wipe命令不被识别?
再考虑到下文将提到的“OpenSEES似乎存在计算不稳定现象”与wipe命令间千丝万缕的暧昧关系,对于wipe这个“黑匣子”我还是保守处理
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OpenSees 自学 笔记