opensees解题技巧.docx
《opensees解题技巧.docx》由会员分享,可在线阅读,更多相关《opensees解题技巧.docx(20页珍藏版)》请在冰豆网上搜索。
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这个“黑匣子”我还是保守处理——去掉末尾的分号吧!
事实证明去掉分号后貌似有几次曾经不收敛的计算神奇般的收敛了!
疑问:
OpenSEES计算结果似乎不太稳定?
具体表现就是,你现在运行某个命令流算题,计算收敛,得到解了;然后你根本就不改程序,甚至连TclEditor都关了,更甚至连电脑都关了,等会再重新运行这个命令流,有可能不收敛!
我遇到过很多次这个现象,还有同学出现刚开始算不通过,后来啥也没改,重新运行——竟然顺利通过了!
难道是内存调用错误?
可程序开头不是由wipe命令吗?
或许这个wipe根本就不像官网上介绍的那样每次运行都能彻底destory内存中所有之前建的模型、对象?
(当然也不排除我们在两次结果不同的计算中间无意改动了程序某个部分而自己又忘了——毕竟调试程序很复杂,控制变量法调n个参数,特别像我们这种初学者,一调就几个小时,最后是头晕眼花,腰酸背疼……所以偶尔忘记自己对程序细微的改动也是可能的……
)
关于elementrecorder里轴力和剪力的正方向
elementrecorder里记录的轴力和剪力的正方向是怎样的?
UserManual里的解释是:
Theseforcescorrespondtotheglobalcoordinateaxesorientation.
我的理解图解如下图所示(图中剪力和轴力都为正):
其他
两个英制单位换算:
1、kip——onethousandpoundsforce,千磅力,约相当于4,445.205226N≈4.45kN。
2、重力加速度g≈9.8m/s^2≈385.8inch/s^2。
在学习OpenSEES中常见的英文缩写、专业英语术语:
OpenSEES:
OpenSystemforEarthquakeEngineeringSimulation
NSF:
NationalScienceFoundation
PEER:
PacificEarthquakeEngineeringResearchCenter(为什么不缩写成 PEERC 呢?
)
NEES:
NetworkforEarthquakeEngineeringSimulation
PBEE:
Performance-BasedEarthquakeEngineering
portalframe:
门式刚架,龙门架(planarportalframe:
平面门式刚架)
ndm:
numberofdimensionspernode
ndf:
numberofdegreesoffreedompernode
translation:
uniformmotionofabodyinastraightline 刚体位移,线位移
normal:
【数】法线 rotationabouttheplane'snormal 绕平面法线的转动
prompt:
提示。
(个人理解:
指DOS窗中一闪一闪的光标,学名“命令提示符”。
)
a-priori:
先验的。
(begenerateda-priori,个人理解:
即“事先编辑好的”)
geometry:
几何尺寸
element:
单元
component:
(地面运动的)分量
drift(angle):
位移角
uniaxial:
oforrelatingtoonlyoneaxis,单轴的
timeseries:
asetofdatacollectedsequentiallyusuallyatfixedintervalsoftime,时间序列
argument:
oneoftheindependentvariablesuponwhosevaluethatofafunctiondepends,自变量,参数
nodalload:
节点荷载(这个词组读起来有点绕口 ^_^)
flag:
标志变量(学过C语言编程的同学应该知道!
)
discretization:
离散化
offset:
偏移(量)
iteration:
迭代(法)
SOE:
systemoflinearequations,线性方程系统
NewtonwithLineSearchAlgorithm:
线性搜索路线牛顿算法(这个翻译可能不准确)
BandSPD:
BandedSymmetricPositiveDefinite
map:
映射
关于OpenSEES的学习资料:
来自官方:
1、OpenSeesUser(里面有详细的帮助文档)
2、ExampleMannul(官网提供的帮助手册)
3、OpenSees官网提供的Tcl编程教程
4、网页版用户手册(09年版)
5、OpenSeesNavigator
(OpenSeesNavigatorisamatlabinterfaceforOpenSees.Itallowsuserstoquicklycreatemodels,performanalysis,andlookattheresults.Itrunsonwindowsmachines. )
6、BasicExamplesManual
(TheobjectiveofthisprimeristoprovidenewusersofOpenSees(OpenSystemforEarthquakeEngineeringSimulation)familiarstructuralengineeringexamplesasaconvenientmethodforlearninghowtousethesoftware.)
原创教程及其他:
1、转[教程]OpenSEES超简单易懂的入门第一课
2、OpenSEES最好的介绍
(这个讲了一些数值模拟的本质,比较理论化。
)
3、结构艺术家_刘金成的博客
玩转opensees~ e.g.1
玩转opensees~e.g.2暨sap2000vsopensees(IV)
4、(XX文库)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年4月19日11:
26:
49更新)原文中所谓的“关于这次作业具体的心得”的博文链接已更新;本打算待该博文发表后及时回来更新的,结果忘了。
抱歉!
来源:
颜冬启
全文链接
20
10
《【转载】OpenSEES自学笔记
(一)》“博主按”:
本文是我第一次用OpenSEES做仿真分析作业(基于OpenSEES的方钢管混凝土柱抗震性能分析)过程中点滴记录的自学笔记,发表出来既是和各位(尤其是Open...http:
//163.fm/9qMUBJZ
全文链接
20
10
【转载】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窗会停住,给出警告,表明不