- 1 -
GID用户界面的定制
吴盖,游启升,周晓明,陈浩
河海大学水利水电工程学院,南京 (210098)
摘 要:利用 GID 提供的用户定制功能,结合有限元计算程序,开发了数据自动处理模块。
该模块有效的解决了手工填写数据文件繁琐易错的问题,提高了效率,使得 GID 能够同时解
决有限元建模、数据处理、计算、结果分析等一系列过程。
关键词:有限元,GID,用户定制
1 引言
在当今有限元计算中,由于求解问题的不同,每个用户都会有自己的一套建模、求解问
题的方法,大致归类可以分为以下几种:(1)从建模到计算完全使用自己开发的程序,这样做
的优点是可以完全按照问题的类型自己的想法来进行,但是缺点也很明显,那就是需要花费
很长时间来编写建模以及求解程序;(2)采用商业软件来进行建模、计算,这样做可以节省编
程的很多时间,但在进行具体问题计算的时候,有时不能实现自己预想的要求;(3)再一个就
是采用现有的有限元前后处理软件,然后将自己的计算程序加入其中。本文正是基于第三种
思路,来进行有限元程序的开发。
西班牙巴塞罗那数值研究中心开发的有限元前后处理软件 GID 为解决这个问题提供了途
径,GID 是一个通用的、适应性强和用户界面友好的有限元前后处理软件,对许多类型的数
值仿真都适用。GID 用户界面友好,在用户准备输入数据和可视化的结果方面简单、快速、
高效和精确。GID 的输入输出格式能被定制,并会同已存在的内部软件兼容。根据数据输入
和显示结果的不同菜单可以被修改以符合专门的需求和用户的需要。
2 典型问题
本文将通过一个具体的问题来分析 GID 是如何来实现用户界面的定制的。下面是一个在
弹性力学中常见的问题“三维梁一端固定,另一端加集中力” ,要对这一问题进行求解首先就
要建立有限元模型,用 GID 的前处理功能来建模,将模型划分为六面体单元,建好模型后就
要用有限单元法对模型进行计算,GID本身并不提供计算程序,这就
需要将自己的有限元计算程序与 GID 相结合,下面就要介绍一下如何将计算程序整合到 GID
中。
3 GID程序运行流程
简介
GID 作为一款有限元前后处理软件,提供了强大的前后处理功能,但是要实现对有限元
网格模型的计算还需要单独编写计算程序并将其整合到主程序中。用户可以通过 GID 前处理
中建立有限元网格,然后利用 GID提供的用户自定制功能和脚本语言 TCL/TK[1]对其进行了二
次开发,定制出新的图形化用户界面,使得用户在 GID 中可以直接定义模型的基本信息、进
行网格剖分、指定边界条件和载荷、定义材料参数及其它计算程序所必需的数据,最后由用
户自己编写的求解器计算之后生成的结果又会在 GID的后处理中以图形化的方式显示出来。
- 2 -
运行流程
图 1 GID运行流程
运行流程如
图 1所示,先将所需的各种文件通过.bas 文件定义输出成.dat 文件,但是有些用户在使用
时可能会有自己的数据文件格式,这时候单一的.dat 文件不能够满足用户的要求,所以在 bat
文件中加入一个 FEMPRE前处理程序[2],将.dat文件修改为求解器(Solver)所要求的格式类
型,最后由求解器生成.和.两个结果文件,在后处理中就可以以图形化的形
式显示出。
所需文件
利用 GID 提供的用户自定制功能,可以定义不同的问题类型以解决不同的问题。对于每
一种问题类型都要建立一个名为 的文件夹(Problem-type-name可以为任
意其它名称),该目录放在 GID安装目录下的 problemtypes子目录中。此文件夹下包含边界条
件()、材料()、控制数据()、
单位系统()、求解器、批处理文件()、扩展 GID功
能的 TCL文件()及生成数据文件的模板文件()等配
置文件,其中 Problem-type-name的名称要一致。
GID内部控制功能命令(. process, . info)
在操作 GID 的时候,需要自动的运行一些操作或者获取某些网格或几何信息,那么就需
要用到 GID 的内部控制功能命令,其中可分为运行控制命令(. process)和信息显示
命令(. info)两类
运行控制命令
格式:. process command_1 command_2 ...
这个命令可以实现 GID 中右侧工具栏的所有操作,命令后面的 command_1 command_2
就是在 GID中右侧工具栏所显示的单词。
举个简单的例子:
. process escape escape escape escape \
geometry create line 0,0,0 10,0,0 escape
这一命令就是绘制了一条端点为(0,0,0) (10,0,0)的直线
- 3 -
信息显示命令
格式:. info option
这一命令可以显示 GID 模型的某些信息(单元信息,结点信息,自定义的荷载、边界信
息等),显示信息的内容就取决于后面的 option选项。
举几个例子:
输入:. info materials
返回值:"Steel Concrete Water Sand"
说明:这个命令列出了建立模型时所定义的几种材料
输入:. info materials Steel
返回值:"1 Density 7850"
说明:这个命令列出了材料 Steel的参数信息
输入:. info Mesh Elements Hexahedra
返回值:"1 14 23 26 17 12 22 25 16 5"
说明:返回值的第一个数表示单元号,随后的八个数表示单元的结点号最后一个数表示
单元所属材料信息。
在 GID中还有很多“option”参数,具体的用法可以参考 GID帮助文档。
4 界面设计
主界面
主界面的设计可以在扩展 GID功能的 TCL文件()中编写[3],
proc InitGIDProject { dir } {
CreateMenu "Problem" "PRE"
InsertMenuOption "Problem" "Problem Data" 0 [list datawin::init] "PRE"
InsertMenuOption "Problem" "Materials" 1 "" "PRE"
InsertMenuOption "Problem" "Materials>Material Window" 0 \
[list materialwin::init ] "PRE"
…
}
这里"CreateMenu"表示在 GID 的主菜单添加一项 Problem 条目;"InsertMenuOption"表示
在主菜单的条目中添加下一级菜单,后面的数字表示菜单的位置,数字越大位置越靠下;"PRE"
表示菜单在前处理中出现,如果是"POST"则表示在后处理中出现;"Materials>Material Window"
其中的">"表示Materials还有下一级菜单Material Window。
子窗口(基本信息窗口、分组信息窗口、材料信息窗口、边界约束窗口等)
子窗口可以根据问题类型的不同建立不同的窗口,但大部分问题都包含有一些基本的窗
口,比如基本信息窗口、分组信息窗口、材料窗口、边界约束窗口、荷载信息窗口等。我们
可以利用TCL/TK语言中的TK工具来编写各种窗口,这些文件可以放在
目录下的 scripts 文件夹中,这样不同文件中的子程序就可以互相很方便的调用。例如我们可
以建一个输入材料信息的窗口,在 scripts 文件夹中新建一个后缀名 tcl 的文件,我们取名为
,用文本编辑器对其进行编辑,程序大体结构如下所示:
- 4 -
namespace eval materialwin {
variable material_name
variable density_s
…
}
proc materialwin::init { dir } {
…
}
生成的窗口如图 2所示,在程序中,子程序名称为 materialwin::init,那么在主界面菜单设
计中已经加入了Material Window子菜单,在 GID主菜单中点选Material Window子菜单就会
调用程序弹出材料窗口。
在 GID 中定制好这些窗口就可以在窗口中输入模型的各种参数,而不用再去填一些繁琐
的数据文件了,这样更加方便直观。
图 2 材料信息窗口
结果输出
GID在计算之前会调用.bas文件并输出数据生成.dat文件,编写.bas文件可以有两种方法,
一种是用 GID提供的内部命令生成数据,这些内部命令前带有“*”,如*npoin(显示总结点数)、
*ndime(显示维数)、*nelem(显示单元总数);另一种是在.bas 中写入*tcl,然后就可以调用
scripts文件夹中的子程序了,例如:
在.bas文件中:
*set var num=1
*tcl(WriteSurfaceInfo *num)
在.tcl文件中:
proc WriteSurfaceInfo { num } {
return [. info list_entities surfaces $num]
}
当生成.dat文件后,GID就会调用.bat文件按照预先编好的批处理的顺序对计算程序进行
- 5 -
调用,然后计算程序再根据 GID 后处理文件格式的要求生成. 和. 两个结果
文件。
5 计算结果
利用开发好的用户定制界面进行计算:三维梁一端固定约束另一端加 Y 向集中力点荷载
(只有一组),大小为-1000N,无自重,密度 1900kg/m3,弹模 ×106Pa,泊松比 ,静力分
析。采用 8结点六面体等参单元,共剖分了 125个单元,216个结点。计算后梁的第一主应力
及其变形情况如图 3所示。理论解与计算解基本吻合。
图 3 计算结果
6 结论
GID 是一款通用的有限元前后处理软件,通过 GID 的用户定制,可以开发出满足用户要
求的模块界面,这就大大节省了繁琐的前处理建模、数据文件的准备以及后处理中的图形显
示,使用户可以更加专注于有限元计算程序的开发。
参考文献
[1] Brent B. Welch著 王道义,乔陶鹏等译.Tcl/Tk组合教程(第二版)〔M〕.北京:电子工业出版社,
[2] 吕艳萍等.在 GID程序内整合有限元本体程序的研究〔J〕.福建工程学院学报,2005,3(4):315-318
[3] 姚纬明,牛志伟,李同春.基于 GID 的程序界面设计及应用〔J〕.水利水电科技进展,2003,23(3):22-
24
Customization of GID
Wu gai,You Qisheng,Zhou Xiaoming,Chen hao
College of Water Conservancy and Hydropower Engineering,Hohai University,Nanjing (210098)
Abstract
Using customization provided by GID and combining finite element calculation procedures to develop
automatic data processing module solve effectively for data files of the tedious error-prone
manual filled and improve the efficiency,and making GID can simultaneously solve the finite element
modeling, data processing, calculation, the result of a series of analysis process.
Keywords:FEM,GID,Customization
作者简介:吴盖(1982-),男,河北景县人,硕士,主要从事水工结构数值模拟的研究。