前处理的主要作用是为随后的有限单元分析准备数据。有限单元网格模型的建立主要有两种方式:①直接建立网格单元结点模型;②先建立实体模型,然后再离散该实体模型。第①种方式常常只在结构简单、工作量小的情况下使用,已逐渐被淘汰;第②种方式适用于所有情况,成为主流的建模方法,但需要一个强大的网格生成器。笔者采用的是第②种建立有限单元模型的方法。本节以可视化软件系统AFEAS为例,介绍系统的前处理模块。前处理的主要工作包括建立实体模型和有限单元网格模型,其中实体建模分为对象化建模和AutoCAD建模两种方式;网格模型通过自动离散实体模型获得。
一、实体模型
几何建模的主要任务是建立结构的几何信息数据库,并在屏幕上动态地显示相关图形。几何模型的建立一般有如下3种方法(关振群,1998):
(1)以文本方式输入或以非可视化编程方式生成数据文件,再以图形显示。
(2)应用绘图软件如AutoCAD等进行绘制,通过DXF或其他格式的数据文件进行接口,生成数据文件,计算后再将结果引入到AutoCAD等绘图软件中进行显示。
(3)自带绘图模块,交互式建立几何模型,并能与AutoCAD等软件进行数据交换。
第(1)种方法已逐步被淘汰。第(2)种方法虽能借助AutoCAD的功能,但由于有限单元模型的几何参数有其自身的特点,仅用AutoCAD并不能完整地建立有限单元模型,同时不能修改导入图形的物理属性,故也不是很理想。第(3)种方法是目前通用有限单元软件中使用最广泛的方法,由于它自带绘图模块,在不借助其他应用软件的前提下,能够完成有限单元分析与前后处理的全过程,使用十分方便,同时能与其他应用软件进行数据接口,集成化程度较高,代表了有限单元软件的发展趋势。按照第(3)种方法,软件系统的前处理建模需重点解决两个问题:
(1)编制功能较完备的图形绘制模块。该模块除具备类似AutoCAD中的设置、绘图、修改、视图变换等基本功能外,还应具备区域自动识别功能,定义域、边、关键点等图元物理信息的功能等,其中区域自动识别功能是方便、快捷形成正确模型拓扑信息的有力保证。
(2)实现与AutoCAD等其他绘图软件的数据交换。该功能模块有利于实际工程的快速建模。
(一)面向对象建模
实体模型由几何模型和物理模型共同构成,故在建模阶段得到的分析对象包含了几何和物理两方面的信息,如何组织好两种信息,并将两者有效地结合,是实体建模的关键。几何信息就是问题的几何表述,即几何形态和位置。物理信息就是这些几何元素被赋予的特定物理属性,具体来说,对于一个子域,需要确定它的材料参数、开挖与回填指标、锚杆信息;对于一条边,需要确定它的类型(是一般边、断层边还是辅助边等)、约束条件、荷载信息;对于一个点,需要了解它的约束信息和荷载信息。
如何组织和储存模型的数据,才能既便于分析模块使用,又便于修改,这是一个数据结构的问题。笔者利用面向对象中类的3种主要关系:关联关系、派生关系和组合关系来构建实体模型,以对象作为存储数据的单元和实体。模型的数据结构可以看作一种层次结构和聚集体。一方面,构成是典型的层次结构:一个实体模型由若干个子域构成,一个子域由若干条边构成,一条边又由若干个关键点构成;另一方面,实体模型对象又是一个聚集体,它直接以子域、边、关键点、材料等类对象作为成员变量。构成模型类的基本类对象有:域类、边类、关键点类、荷载类、材料类及锚索类等,其结构图如图1-10-7所示。
图1-10-7 模型类的数据结构图
模型类除了定义以上成员变量外,还定义了一些相关的操作:控制信息的操作,区域自动识别,增加、删除各实体以及显示实体,形成实体离散所需的数据等。模型类的定义充分体现了面向对象方法中数据和操作方法的统一。限于篇幅,简单定义如下:
根据MFC类的序列化机制(Serialize)和模板功能(CTemple),可以建立相应的类来实现类对象对数据的存储和管理。下面对各个类的设计进行详细说明,并给出各类的简单定义。
1.子域类(CSubDomain)
子域类通过边的序号与边类建立联系。封装的数据包括:材料号、开挖指标、锚杆信息及组成边的拓扑关系。成员函数包括:获取、修改各种数据成员,储存和获取数据的序列化功能等。定义如下:
2.边类(CEdge)
边类是模型类中最基本的组成元素之一。它被定义为基类(Base Class),表示子域组成部分的一种抽象。具体的边由其派生类(Derived Class)来表示,它们是直线边(CLine)、圆弧边(CArch)及插值曲线边(CCurve)等。边又和关键点相关联。边类的设计充分体现了面向对象中类的派生和关联原则。边类封装的数据成员包括:几何信息(坐标、线宽、颜色)和物理参数(荷载、约束信息)。根据数据和操作方法统一的原则,边类应包括操作数据成员的函数,例如,获取起点和终点、添加和删除荷载、设置约束、绘图、储存和获取数据的序列化功能等。定义如下:
3.关键点类(CVertex)
关键点是模型类中另一个最基本的组成元素,准确确定点的位置能保证精确建模。先确定点的位置,然后由这些关键点形成边,最终构成域。同时还有其他用途,例如,加集中荷载时,要先确定作用点的位置。此外很多判断工作可以很方便地用点类来实现。定义如下:
4.荷载类(CLoad)
荷载类是各种荷载对象的抽象表示,封装了常用荷载的数据信息,并作为其成员变量。荷载类是一个基类,具体的荷载由其派生的子类来表达。荷载类的派生类包括:集中荷载类、分布荷载类。体积力荷载、渗透荷载和温度荷载由于其特殊性,用结构体表示。分布荷载与边类的联系是边的序号;集中荷载和关键点通过点号建立联系。定义如下:
5.锚索边类(CCableEdge)
将锚索类单独作为一类,这样便于显示和修改锚索信息,并减少区域识别的困难。锚索类封装了锚索的几何信息(内锚段和外锚头的位置)和锚索材料信息。定义如下:
6.材料类(CMaterial)
材料类作为材料的集合,集中管理各种材料。材料类封装了岩石、节理的材料参数信息,通过材料号与子域类或节理边建立联系。
(二)AutoCAD建模
AFEAS软件系统自带的绘图和图形编辑功能,基本可以完成有限单元前处理的实体建模。然而,自带绘图系统目前某些功能(如截断、延伸、拷贝等)还无法与通用的绘图软件相匹敌;同时,很多工程单位采用了AutoCAD、3DMax等通用图形软件来提供工程图形资料。如能直接利用这些资料建立概化模型,或者在这些图形资料的基础上建模,将避免大量重复工作,从而降低有限单元实体建模的工作量。因此,充分利用通用绘图软件强大的图形绘制与编辑功能和应用广泛的优势,研究它们与面向对象技术建模之间的无缝连接有着重要的意义:一方面,可以作为已有建模方式的有益补充,快速完成建模;另一方面,有利于这些软件的高效使用和深入推广。
AutoCAD辅助建模的关键在于查清AutoCAD的图形交换文件——dxf文件格式和面向对象建立模型结构的关系。自适应有限单元分析软件AFEAS和ASAS在实体建模中得到的图形是以图元的形式存储的,最小的图元有点和线(包括直线、圆弧与圆等),且具有几何属性(线宽、线型、线色、空间位置等)和有限单元分析相关的物理属性(对点、边的约束和荷载等),而一般通用软件的图形则只具备几何属性。笔者在前面开发的实体模型软件体系的基础上,采用面向对象技术,运用类和对象的概念实现了两个系统的连接,保证了接口的无缝性,并便于接口部分的维护和扩充。下面以软件系统AFEAS和通用软件AutoCAD为例进行介绍。
AutoCAD是一种通用的图形软件,它的图形格式有dxf和dwg两种格式,而dxf格式是标准数据交换格式,其结构很清晰,由标题段、表段、块段、实体段、文件结尾5项组成,每个段由若干个组构成,而每个组占两行,第一行为组代码,第二行为组值,具体内容可参考相关文献(梁雪春等,2001)。实现接口的关键主要是提取描述实体的形体信息,故关键信息在实体段上。以一条直线的dxf文件来作进一步说明。(www.xing528.com)
在实现两者的连接时,在dxf文件中需要的信息只有图层和直线的X、Y坐标的信息。
在查清两个系统图形各自的组织结构后,即可讨论两者无缝连接的问题。其基本思路是:利用面向对象技术提取AutoCAD图元信息中有用的几何信息,赋予有限单元实体模型图元类(如Cline、CArch等)对象的各相应成员,生成相应的类对象,并存储,然后对该对象进行必要的操作,如设置物理属性,形成子域,离散形成网格模型等。实现这个目标的关键技术有:①获取图形几何信息;②自动识别区域。
1.获取图形几何信息技术
以直线段组成的图形为例,该技术实现的关键在于提取相关几何信息,形成相应的类对象,并存储该对象。具体实现由两个函数组成:①打开dxf文件的函数OpenDxf(Cstring&filename),其主要作用是确定所要交换的文件,并根据关键字来决定调用相关类的获取信息函数;②获取信息函数。下面以直线段为例给出两个函数的定义。
通过上述工作,即可以建立实体几何模型,然后在软件系统AFEAS中经过区域自动识别,并给该模型设置必要的物理信息,建立实体物理模型。该种建模方法简便、高效,是面向对象建模方式的有益补充。
2.自动识别区域技术
无论是面向对象建模还是AutoCAD辅助建模,都需要区域自动识别技术。在生成模型的过程中,子域是通过自动识别而形成的。为了顺利地进入有限单元网格自动生成模块,必须形成正确的模型拓扑信息:模型由哪几个子域构成、每个子域由哪些边构成、每条边又由哪些关键点构成等。然后定义子域、边等的物理信息。为了高效正确地进行子域的划分,需要有一套自动划分区域的算法,以辅助我们迅速获取网格模型。目前,划分区域的方法有两种:半自动和全自动。半自动指的是通过顺次指定各条边的方法来实现;全自动生成是指根据一定的规则,让计算机实现子域的自动划分,而用户所要做的仅仅是当想用某个子域的时候,将它选中(吴俊,陈胜宏,2001)。后者在计算岩体力学中有一定的优势,能够节省工作量,并能减少出错的可能性。
由于岩体不可避免地存在断层、节理等结构面,如果在建模时不小心画漏了一条,或者在初期提供的资料不充分,图纸经过修改后,条件也随之改变,这时往往要重新建立模型。如图1-10-8所示,当加入一条新的断层线段EF后,原来的矩形区域(Ⅰ)被分割成两个区域①和②,这样,原有的子域分布就要随之改变。如果前处理模块具有区域自动识别功能,则能够快速更新区域的组成信息。
图1-10-8 重新划分区域
(1)理论基础。笔者借助于矢体(Directed Body)理论实现区域自动识别。矢体是用一套矢量描述的块体(Ikegawa,Hudson,1992)。矢体中的面称为矢面(Directed Face),矢面中的边称为矢边(Directed Edge)。
图1-10-9 矢面的组成
每一个矢面向量的所有矢边向量之和等于零,称为矢面向量的完备性;每一个矢体向量的所有矢面向量之和等于零,称为矢体向量的完备性。其数学表达式为
在二维区域自动识别中应用的主要是矢面的完备性(式1-10-1)。有了矢面的概念,就可以方便地识别各平面区域。按照矢面的定义,即使两个区域具有相同边,但当它们的矢边不一样时,也不认为是相同的区域。
(2)实现细节。在进行矢面(子域)的自动识别中,应遵循的基本原则是:
1)矢面的完备性原则,即满足式(1-10-1)。
2)最小内角原则。
3)右手螺旋法则。
4)每条矢边只能使用一次。
图1-10-10 最小内角原则
(3)子域识别步骤。
1)将每条一般边存为两条矢边,它们大小相等,方向相反,对于N条边的模型,总共有2N条矢边,并令所有矢边的使用标志为0。
2)选择其中一条矢边作为初始活动边,令其使用标志变为1。
3)找出所有以活动边终点为起点的边,而且它们的使用标志必须为0,然后分别计算它们与活动边逆时针旋转所形成的内角。
4)根据最小内角原则选取下一条边,记下这条边,令它的使用标志为1,并将这条边记为新的活动边。
5)如果新活动边的终点与初始活动边的起点相同,则生成一个矢面,否则,返回到步骤3),继续寻找下一条边。
6)返回到步骤2),搜索所有剩下的矢边,重复步骤2)~5),寻找剩余的矢面,直到所有的矢边都被使用,即它们的使用标志均为1。
7)排除虚子域。虚子域的面积为负值,且在数值上等于其他子域的面积之和。从图形上看,它是由所有外边界构成的子域,面积为负。
二、网格模型
由实体模型到网格模型的离散采用行波法,其原理和技术已在本篇第二章作了介绍。
网格数据和模型数据是完全不同的两个概念。网格模型类是一个专门处理网格生成、显示和相关数据存储的类,并能辅助生成位移、应力等场值的等值线。本着自然的认知规律,采用面向对象技术,将网格类定义为单元类、结点类和荷载类等类对象的聚集,而单元类这个父类又可以派生出四结点单元类、八结点单元类等子类。相关数据和方法简单定义如下:
1.单元类(CElement)
单元作为有限单元分析的基本对象,聚集了结点的几何拓扑信息和材料信息。根据有限单元分析的需要,可以派生出不同形状的单元,如三角形单元和四边形单元;而各种单元又可按结点多少派生出数目不等的结点单元,如三结点单元、四结点单元、八结点单元等。下面给出单元父类CElement和四结点单元子类C4NodeElem的简单定义,其他单元子类可从父类派生。
2.结点类(CNode)
结点是网格的最小组成单位,聚集了单元的位置、约束、荷载和场值信息。结点类的设置可以方便网格变位图和场值等值线的绘制和显示。定义如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。