搜档网
当前位置:搜档网 › 基于VTK的OpenSees图形界面软件开发_常兆中

基于VTK的OpenSees图形界面软件开发_常兆中

[文章编号] 1002-8412(2005)05-0082-05

基于VTK 的OpenSees 图形界面软件开发

常兆中1

,周锡元

1,2

(1.中国建筑科学研究院,北京100013; 2.北京工业大学建工学院,北京100022)

[摘 要] 地震工程模拟与分析软件OpenSees 作为一个开放性的面向对象的通用软件框架很适合在研究工作中使用,但是由于缺乏图形界面软件,准备数据文件需要花费许多的时间。本文基于可视化图形工具(VTK)设计了和OpenSees 的中间层接口模块,并在此基础上应用Tcl Tk 语言编制了用于OpenSees 的图形界面软件OpenGUI,为OpenSees 的使用提供了一个很好的图形环境和用户界面。[关键词] VTK;OpenSees;图形界面软件;可视化[中图分类号] P315 69 [文献标识码] A

VTK -Based Development of A Graphical Interface Application for OpenSees

Chang Zhao -zhong 1

,Zhou Xi -yuan

1,2

(1.China Academy of Building Resea rch ,Bei j ing 100013,China ; 2.College o f Civil

Engineering ,Bei j ing University of Technology ,Bei j ing 100022,China )

Abstract :OpenSees being as general open object orien ted software is very adapted to be use in research.Due to shortage of graphical interface software frame,the work of i npu t data preparation was tes more ti me.On the base of the Visualization Toolki t (VTK),an interface module between VTK and Open Sees is designed,and then based on the interface module,a graphical interface application called Open GUI for OpenSees is implemented in Tcl Tk language,this provides a good graphical environment to use OpenSees.Keywords :VTK;OpenSees;graphical i nterface application;visualization

[收稿日期] 2005-03-02

[基金项目] 科技部科研院所科技开发项目

[作者简介] 常兆中(1970~),男,山西人,汉族,在读博士

1 前言

随着社会的发展,建筑结构变得越来越复杂,有限元分析已经成为结构工程师和研究人员分析和解决问题的重要手段,诸多商业软件如Sap2000,ETABS,ANSYS 等在地震工程中的应用发展很快。OpenSees (Open System for Earthquake Engineering Simulation)是一个面向对象的软件框架,由设立在美国Berkley 加州大学的太平洋地震研究中心(PEER)集成和开发的,作为地震工程基于性能的研究分析平台,它具有集成已有程序库和分析组件的能力,它易于改进和协同开发,研究人员可以通过协作开发来适时反映单元、材料和计算技术等新的发展,具有较强的地震工程分析模拟能力。然而和上述商业软件相比,OpenSees 并没有提供图形界面系统,用户使

用时,一般是借助文本编辑软件生成模型输入文件,然后再提交OpenSees 进行计算得到计算结果。由于缺乏图形界面系统的支持,使得用户不得不花费很大一部分精力来创建和维护输入文件,尤其在结

构复杂的情况下,没有直观的模型显示,输入文件很容易出错,降低了工作效率。

目前较为常用的OpenSees 前后处理软件有TclEditor [2]

和OSP (OpenSees Post -Processor )。TclEditor 是一个OpenSees 输入文件的文本编辑和运行环境,具有语法高亮显示功能,用来帮助用户检查输入命令的正确性,OSP 可以读入用户的输入文件,提供了计算结果的后处理功能和一些有用的工具,它内建了一个文本编辑器来编辑模型输入文件。除此之外,还有GID 和在Matlab 平台上开发的OpenSees 前后处理工具箱[4]

,通过在GI D 中安装geoOpenSees [3]

,可将GID 建立的模型脚本文件转换为OpenSees 的输入文件,但geoOpenSees 主要是处理二维问题,使用Matlab 工具箱时,用户需要事先用第

第27卷第5期2005年10月

工程抗震与加固改造

Earthquake Resistant Engineering and Retrofitting

Vol.27,No 5

Oct.2005

Earthquake Resis tan t Engineering and Retrofitti ng October 2005

三方软件如SAP2000和GID 等完成节点、单元和材

料等的建模过程,然后由工具箱读入,经处理后生成OpenSees 可执行的脚本文件。

除了本身的计算功能外,良好的图形环境亦是有限元应用软件的一个重要优势,为此,本文开发了一个用于OpenSees 的用户图形界面软件OpenGUI (Open Graphical User Interface),基本结构如图1所示,软件的可视化系统采用了VTK(The Visualization Toolkit),用Tcl 语言实现,选择Tcl 语言的理由是VTK 和OpenSees 都采用Tcl 作为解释器,同时Tcl 灵活和易于扩展,

可运行在不同的操作系统平台上。

图1 OpenGUI 的基本结构

2 VTK 简介

VTK [5]

(The Visualization Toolkit)是一个开放的

用于3D 图形和可视化的C++类库,提供了面向对象的应用程序接口,接口可以集成到许多开发环境中,同时支持目前流行的解释语言(如Tcl 、Python 和Java)作为它的解释器界面层。VTK 由两个主要的部分组成:图形(Graphics )模型和可视化(Visualization)模型。

2 1 图形(Graphics)模型

Graphpics 模型将几何体转换为图像,包括代表被显示对象的类和用于显示的方法,下面是Graphics 模型中几个主要的类。图2是可视化渲染窗口类(vtkRenderWindow)和渲染器类(vtkRenderer),它们可将可视化对象或角色(vtkAc tor)渲染到计算机屏幕上。

图2中的可视化工具箱渲染窗口vtkRenderWindow 管理着渲染过程,通过一个或多个渲染器可在渲染窗口中形成最终的图像,它具有以下功能:

vtkRenderer 控制物体的渲染过程,包括灯光、摄像机和特性等。

vtkActor

指在场景中渲染的对象或角色。

图2 图形生成(Graphics)

模型

图3 可视化(Visualization)模型

vtkMapper 指在场景中角色(Actor)的几何定义,和图形设备中的可视化管道相联系。它通过一个向上观察板(LookupTable)来映射数据。2 2 可视化(Visualization)模型

可视化工具箱VTK 使用数据流的方法将显示对象的信息转换为图像数据,这样的结构一般被称为可视化网络(或可视化管道),网络由一系列模块连接,当数据沿着网络流动时,模块就会对数据进行相应的运算,将数据处理为能够显示在屏幕上的图像。可视化模型由两种类型的基本对象组成:流程(process)对象和数据(data)对象。

数据对象代表信息,是沿可视化网络流动的实际数据,数据对象提供了创建、访问和删除信息的方法。VTK 中基本的数据对象是数据集(DataSect),图3表示数据集(dataset)在流程对象中的传递,其中的A 、B 和C 分别表示process A 、process B 和process C,连接对象之间的箭头表示数据流动的方向。

流程对象对输入数据进行处理并产生输出数据,是可视化网络的算法部分,流程对象可以对输入数据处理后输出新的数据,也可以是仅仅改变输入数据的格式而产生输出数据。流程对象可以是以下3种类型中的任一种:源(sources )对象、过滤器(filters)对象和映射(mappers)对象。

第27卷第5期常兆中,等:基于VTK 的Open Sees 图形界面软件开发 83

Earthquake Resistant Engineering and Retrofi tting Vol.27,No.5 2005

Sources 对象是可视化网络的起点,可以从特定类型的文件中读入数据,其本身也可生成数据,一个Source 对象的输出可以作为另一个process 对象(如过滤器)的输入,将一个process 对象的输入和另一个process 对象的输出连接就形成了VTK 的网络。Filters 对象位于网络的中间,可以接受一个或多个数据对象输入和产生一个或多个数据对象输出,Filters 对象不改变输入的数据。可视化网络的末端即为mapper 对象,mapper 对象可以接受一个或多个

数据对象输入并终止数据流,mapper 对象接受过滤器对象的输出,将数据映射为基本图元。3 OpenGU I 的实现方法

OpenGUI 由两部分组成:图形用户界面和OpenGUI 接口,这两部分都选择Tcl 作为开发语言,其中接口部分采用面向对象的技术进行设计,因此软件可以运行在不同的操作系统平台上,并且很容易进行扩展,图4

是程序的主界面。

图4 Open GUI 主界面

3 1 接口模型的设计与开发

接口在用户图形界面、OpenSees 和VTK 之间起连接和通信作用,由一系列类来实现,用户人机交互输入的模型数据或由其它前处理软件(如SAP2000,AutoC AD)生成的模型数据被保存在相应的对象(Object)中,然后调用VTK 接口函数将模型显示在屏幕上,当建模工作完成后,由接口类负责生成OpenSees 可以执行的Tcl 脚本文件,同时接口类可以读入和保存OpenSees 的计算结果,图5是OpenGUI 接口的部分类。

下面以节点Node 类加以说明,Node 类定义的节选见图6。

变量position 用于保存节点坐标,变量disp 、vel 和acc 分别用于保存读入的OpenSees 计算结果,

图5 OpenGUI 接口类

它保存节点质量、约束及荷载信息的变量在图6中未列出,这些变量被设计为私有的,也就是说对于其它类的对象来讲是不可见的。函数write tcl()的作用是将节点信息写入OpenSees 脚本文件,函数show()、hide ()、display ()和sho wRes ()是和VTK 的接口函

84 工程抗震与加固改造2005年10月

Earthquake Resis tan t Engineering and Retrofitti ng October 2005

class Node {

inherit Object

Private variable position private variable disp private variable vel private variable acc constructor {}{}destructor {}methoed show {}method hide {}method display {}method writetcl {filename}}

图6 Node 类定义

数,用来在窗口中显示和隐藏节点和节点约束,若要在屏幕上显示节点,仅仅需要做如下简单的函数

调用:

node show 3 2 图形用户界面

图形用户界面(见图4)提供了一个创建和维护OpenSees 可执行脚本文件的人机交互图形环境,具有建模、计算和保存计算结果的功能。图4中顶部是菜单和工具栏,左边是交互输入区,在此区域中可以输入OpenSees 的节点、约束、单轴材料模型、nD 材料模型、断面、几何转换、单元模型、荷载、输出文件和分析选项等数据,图4中的其它区域为模型显示区域。模型几何数据的输入可以在图形环境中直接进行,也可以输入其它软件(如SAP2000)生成的节点和单元数据。模型数据被定义为接口类的对象,存储在全局列表中,便于管理和维护,提供了语法检查功能,可发现常见的输入错误,对于节点、单元的信息,

还可通过右击鼠标即时查询。

图7 OpenGUI 渲染图例

3 3 实例应用经验和效率分析

过去曾用OpenSees 对一栋6层混凝土小砌块建

筑作为杆系结构进行非线性分析,模型见图4,最初是用文本编辑器来建立OpenSees 可执行脚本文件,由于非线性分析的要求,对于模型中的结构单元进行了较细的划分,当仅输入一层模型分析时,OpenSees 分析的结果出现异常,经过多次反复的检查,才发现原因是由于个别节点坐标输入有误,随着楼层数的增加,脚本文件增加至数千行,使得脚本文

件的输入和维护工作成了一项十分繁重的工作,耗费了大量时间,出错的概率大大增加,最终放弃了文本编辑和维护脚本文件的努力,决定开发OpenGUI 。尽管开发工作花费了一些时间,但实际应用获得的效果还是比较好的,使用SAP2000在较短的时间内建立了分析的弹性模型,然后由OpenGUI 读入模型,进行脚本文件的创建和维护工作,由于分析中需要输入诸多杆件的滞回模型,因此在OpenGUI 中开发了专用模块,可以很方便的生成杆件的滞回模型,最

第27卷第5期常兆中,等:基于VTK 的Open Sees 图形界面软件开发

85

Earthquake Resistant Engineering and Retrofi tting Vol.27,No.5 2005

后完成了这一实例的分析计算工作。

使用OpenSees 的实际经验表明,文本编辑维护脚本文件由于缺乏可视化系统的支持,在很大程度上影响了用户使用的信心和耐心,一些小的输入错误如输入了一个未定义的材料、断面等,虽然在结构规模小的情况下很容易解决,但结构规模大时是很不易发现和解决的,因此OpenSees 对于大型复杂结构的抗震分析,甚至对于处理研究工作中比较复杂的问题也是很不方便的。从而产生了为OpenSees 提供可视化系统支持,以促进OpenSees 的应用的想法,这正是开发OpenGUI 的目的。

4 结论

OpenSees 是可以无偿使用的开放性软件,它同时也是面向对象的框架性软件,其计算和仿真的功能都很强。但是由于缺乏强大的后处理功能和用户界面软件,使用这一软件时准备数据的工作量很大,无法适应求解复杂问题的需求。本文应用Tcl Tk 语言设计并实现了VTK 和OpenSees 的接口模块,并在此基础上开发了用于OpenSees 的图形用户界面软件。通过应用这一界面可以将VTK 的图形可视化功能和OpenSees 的计算功能相结合,大大减少了准备工作时间,从而能在很大程度上提高工作效率,实际上也是扩大了其适用范围。文中所提供的接口模

块灵活、机动,且便于扩充,是进一步研究的很好基础。

参考文献:

[1] M cKenna F,Fenves G L,et al.Open System for Earthquake

Engineering Si mulation User Manual[M ].Paci fic Earthquake Engineering Research Center,C A.2004.

[2] Kaul R and Deierlein G.An OpenSees Editor -T clEdi tor

[R].Access on July.25,2004,http: https://www.sodocs.net/doc/d17420705.html, OpenSees accessories.html 2001.[3] Changho choi and Ped ro Arduino.

GID Problem Type

geoOpenSees[R].Settle,WA.2001.

[4] Sun Waiching.Post and Pre Processing by using MATLAB

Graphic Interface for OpenSees Collaborative Framework[P].[5] William J Schroeder,Kenneth M M artin and William E

Lorensen.The design and implementation of an objectoriented toolkit for 3D graphics and visualizati on[R].In Roni Yagel and Gregory M.Nielson,editors,IEEE Visualizati on 96,1996,93~100.

[6] Brent B.Welch.Tcl Tk 编程权威指南[M ].北京:中国

电力出版社.2002.

[7] 吴海平,罗红兵,等.OpenGL 图形程序设计及应用环境

[C].北京:国防科技大学出版社.1999.

[8] 胡聿贤,周锡元.地震工程的跨世纪发展趋势[J].工程

抗震,1999,(

1).

86 工程抗震与加固改造2005年10月

Earthquake Resis tan t Engineering and Retrofitti ng October 2005

相关主题