1 问题的提出
有限元方法是一种解决复杂工程实际问题的有效手段,广泛应用在土木建筑、航空航天、铁道隧洞,水利工程等各个领域中。然而,对于有成千上万个自由度的复杂结构,使前处理技术成为有限元技术应用的瓶颈。近年来,许多科研人员致力于自动网格的生成,取得了卓有成效的进展。基于Delaunay的三角化的自由网格生成方法是较为成熟的方法,但不足的是只能生成三角形单元,影响有限元的精度。四边形技术有:一类以任意三角形网格为基础,通过Zienkiewicz1方法,形成三角形、四边形共存的网格,显然不易作为一种好网格,另一类则直接生成四边形单元,如Paving2方法,模板法3等,然而过多的限制条件影响了通用性。
尽管以上的方法能满足一些较为简单的结构设计,然而这些软件尚不成熟,生成的网格仍难以广泛应用,重要的是无法满足大型复杂结构的设计,尤其针对大型及特大型的地下厂房和隧洞中,地形、地貌、地质、地下水、混凝土支护、锚索、开挖顺序以及厂房中主要结构的优化布置等诸多因素,同时对于大型调压室中还需要考虑机组负荷变化引起的水位变化,已经完全制约了网格自动剖分的发挥。为了工程的需要,设计人员不得不重新回到手工作图的初始状态。
本文采用AutoCAD进行网格半自动剖分,然后利用DXF文件完成高级语言与AutoCAD的接口,索取图形的基本数据,利用高级语言处理后,得到所需要的有限元数据。与此同时,利用AutoLISP语言进行图形显示,初步完成前处理的主要数据的提取任务。这样就满足了工程需要,保证了网格剖分的科学性和准确性,方便了网格的检查与修改,加快了有限元分析的周期,不失为一种实用、高效的前处理方法。有效地解决了CAD图形与有限元网格数据转换之间的矛盾,将AutoCAD系统和有限元计算程序有机地结合。
2 AutoCAD图形的数据化方法
2.1 结构的半自动离散及DXF文件
利用AutoCAD4 进行网格剖分仅需要完成主要结构的网格细分,对于占多数区域的其它部分完全可以通过AutoCAD强大的编辑功能实现结构的半自动离散,极大地加快了结构的离散过程,而且在结构的离散过程中远远超过了绝大多数自动剖分软件对边界条件的限制,尤其是极大的方便了工程界的需要,为有限元的主体计算打下了良好的基础。
利用DXF图形"接口"文件,用户可以实现图形与高级语言程序之间的数据交换。DXF图形文件中的实体段包含着绘制有限元网格时所形成的线段信息。直线LINE用组代码10、20、30代表起始点(X1,Y1,Z1),组值为该点的坐标;用组代码11、21、31来说明终点(X2,Y2,Z2),组值为该点的坐标。使用DXFOUT命令即可形成DXF图形文件。
2.2 图形数据的处理方法
2.2.1 数据分析
我们仅需要绘制六条线段,即AB,BC,CD,DA,EF和GH就能形成四个单元。因此,在DXF文件中,所能够获取的信息就只有六条线段和八个点。在有限元计算中,为了形成四个单元,我们需要有12条线段(AH,HB,BF,FC,CG,GD,DE,EA,EK,KF,GK,KH),9个节点(A,B,C,D,E,F,G,H,K)。所以,AutoCAD中绘制的线段所获取的信息,无法自动形成有限元计算所需要的线段,不能构成有限元结构计算的拓扑信息。
2.2.2 打破网格
为了获取有限元所需要的独立线段,必须要把相连接的线段截断,成为独立的线段,即打破网格。分析平面内两条线段的相对位置,排除线段的平行情况后,我们发现线段的虚交(两线段的沿长线有交点)情况不能影响有限元的单元构成,对于其它的线段相交进行研究和分析,总结出线段相交的三种联接方式。为方便计,我们称由DXF文件所获取线段信息中的起点和终点均为有效点。
对于任意线段AB和线段CD,设交点为P 。根据点P与点A,B,C,D的相对位置来划分为三种不同情况分别处理, 最终将把由AutoCAD绘制的网格图"打破"为有限元所需要的结构离散图。
1.完全铰接…点P与相交线段中的两个有效点相重合;线段和节点数目没有增加,不再另行处理。
2.滚动铰接…点P仅与相交线段中的一个有效点相重合;线段AB被 点P划分为线段AP和PB。将线段的数目增加一条,节点的数目不变。
3.固定端…点P与相交线段中的有效点无一重合;线段AB和CD被 点P划分为四条线段AP,PB,CP和PD。将线段的数目增加二条,节点的数目增加一个。
2.3.3 相关线分析----单元的构成
当得到结构离散图时,为了对单元的构成进行搜索和判断,引进相关线的概念。对于任意线段AB,我们称与线段AB任一端点相连的线段为该直线的相关线,并称由A端点引起的相关线为A相关线,由B端点引起的相关线为B相关线。同时,我们称任一独立的线段为有效线段。
对于线段AB,设由端点A引起的A相关线总共为m条,对于任一线段mI,其两端点分别为A和AI;由端点B引起的B相关线总共为n条,对于任一线段nJ,其两端点分别为B和BJ。对平面上由AI、BJ点所连成的线段进行搜索,如果线段AIBJ是平面上存在的某一有效线段,那么由四个端点A、B、BJ、AI所组成的四边形必定构成有限元所需的有效单元。由此,平面上单元的识别就转化为对平面上的所有线段进行相关线搜索的过程。
2.3 图形的显示
利用AutoLISP5程序直接调用AutoCAD的命令,使得科学计算和数据处理达到了有机的结合。因此,对于所形成的单元信息,直接运用LISP语言进行编程,完成了结构网格的显示,同时标注了单元号和节点号,以供进一步的分析,极大地方便了图形的修改与分析。以下是图形显示的部分程序:
(defun C:YLINE() (setq t () st () sst () )
(setq fn (getstring "Filename of MESH to read:"))
(setq l (open fn "r"))
(setq ne (atoi (read-line l)))
……
(setq st (reverse st)) (setq t (cons st t))
(setq st () ) ) (setq t (reverse t)) (close l)
(setq a 0)
(while (< a ne) (setq st (nth a t))
(command "LINE"
(car st)(cadr st) (cadddr st) (caddr st)
"c") (setq a (+ 1 a))))
3 结束
本文在NDP-FORTRAN386平台上实现了上述功能,并且顺利地完成了AutoLISP加载,成功地实现了有限元结构的AutoCAD(R12 for Dos&Win同样实现)半自动网格剖分,达到了预期目的。同时,基于大多数的三维问题均是直接由平面网格推求而成,所以本文在一定程度上也可用于三维网格的数据形成。因此本程序也具有一定的通用性。