opensees解题技巧 下载本文

内容发布更新时间 : 2024/5/8 20:53:20星期一 下面是文章的全部内容请认真阅读。

OpenSEES解题一般规律、技巧总结

单位

OpenSEES中是可以用公制单位(N,m)的(而并不是像某些文章中说的“OpenSees默认为英制单位”)。实际上我认为OpenSEES中并没有什么默认单位,只要编程者自己保持单位一致就行;这点类似于SAP2000的风格。

建模顺序

做事要讲究顺序,OpenSEES建模亦如是:必须先定义材料才能离散截面(因为离散截面时要对所划分的截面指定材料属性)。

与之类似的,必须先定义(离散)截面,才能定义非线性梁柱单元(因为定义非线性梁柱单元时要指定单元截面)。

关于BandSPD求解方式

官网关于BandSPD方程形式的评价:

\

并且后面紧跟了一句:

\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)Tcl语言对命令名、变量名区分大小写。

(4)一行一般只写一条语句;若想写多条,则各语句间应用分号隔开——当一行只有一条语句时,句末分号可有可无。

同时还有一种特殊情况,就是当在一条命令后(同一行中)加注释时,该命令末尾必须有分号以告知编译器该命令结束,否则编译器会认为该注释也是前面的命令的一部分,导致编译出错。

(5)引用变量时,要在变量名前加上$(美元符号)!这个步骤非常琐碎,不如C语言编程简洁。大家就忍着点吧!

运行方法

目前我知道至少有两种:

方法一:直接运行OpenSEES,在 \提示符后输入“source *.tcl”(“*.tcl”是提前编写好的命令流),然后回车。

优点:个人认为没有;

缺点:命令流编辑时易犯格式错误,每次运行都需运行OpenSEES,再在那个黑框里敲命令流,各种不方便!(其实这个方法只是说说而已,实际我从来没用过。)有的童鞋用Ultra Editor之类的通用文本编辑软件写程序再导入OpenSEES运行,我没试过,估计应该没有下面说的第二种方法好。

方法二:借助第三方专用编译环境。

我目前一直用的是Tcl Editor。它的优点有:可以用不同颜色区分不同功能语句;还有“查找”、“加注释”、“取消注释”等基本常用功能;更好的是菜单栏有个按钮直接与OpenSEES关联,点击就可以调用OpenSEES求解,比较方便(当然,比起Visual Stidio之类的还是差远了!可惜谁叫OpenSEES是这么小众呢?)。

但这个软件有个非常大的缺点——编程者无法获知当前所编辑文档的路径!如果你需要在编程时参考其他文件夹下同样名字的文件(这样的情况在我这次做作业时经常发生,因为我