(4)当a=-1时,为一个圆,半径R=b/2.
以统一二次曲线作为拱的中心线,左、右2个半拱可分别表示为左半拱: x2=aL(y+B)2+bL(y+B)
右半拱: x2=aR(y+B)2+bR(y+B) (3)拱圈厚度在水平方向的变化有3种表达方式,分别随横坐标、厚度和弧长的变化而变化.本文采用随弧长s变化的计算方法,拱圈厚度方程为左半拱: t(x)=tc+(tAL-tc)ssALγ
右半拱: t(x)=tc+(tAR-tc)ssARγ(4)式中:tc为拱冠梁处的拱圈厚度;SAR和SAL分别为右拱座和左拱座的弧长;γ为设计常数.
2相关设计模式
2.1工厂方法模式
在拱坝参数化建模中,拱圈设计参数是最重要的几何参数之一.[3]统一二次曲线拱坝的拱圈线形可以是单心圆、抛物线、椭圆和双曲线等不同类型的曲线.在面向对象设计中,通常需要为每种拱圈线形建立一个类,将具体线形的拱圈派生于拱圈基类,可重用拱圈公有属性代码,系统根据用户的不同需求实例化不同的拱圈对象.在实际应用中,还会根据工程需要对拱圈线形种类进行扩展.按照常规方法进行设计时,每增加一个新的拱圈线形就需对原有系统进行大量修改,因此在进行软件设计时,应尽可能考虑后续可能产生的变化,即提高程序的可扩充性.工厂方法模式为该设计提供解决方案.
在工厂方法模式中,父类负责定义用于创建对象的接口,而子类负责生成具体的对象,由子类决定实例化哪个类.[8]工厂方法模式见图2,Arch是拱圈的基类,提供拱圈相关操作的公共接口,其子类包括圆形拱圈CircleArch和抛物线拱圈ParaArch等.子类与父类具有相同的操作方法,但方法的具体实现不同:拱圈工厂ArchFractory负责拱圈的创建,其Creat操作方法根据用户的不同需求实例化不同的子类,如圆拱圈工厂CircleArchFactory和抛物线拱圈工厂ParaArchFactory等.这样,当增加新拱圈线形时,只需让新的拱圈类型继承于Arch类,增加相应的拱圈工厂子类并实现基类提供的共有接口即可,系统其他部分无须任何修改.
图 2工厂模式
Fig.2Factory pattern
工厂模式根据不同的线形生成不同的拱圈实例,它封装拱圈的创建过程,实现层次之间的松耦合,提升系统的可维护性和可扩展性.
2.2策略模式
拱坝网格可采取不同的划分方式,而不同的划分方式对应于不同的划分工具,其实现程序也不同.由于划分方法的多样性,不可避免地需要扩展原系统以支持新的划分方式,可引入策略模式对各种不同划分算法进行封装,增强系统的可扩展性.
策略模式可对一系列算法进行封装,使其可以相互替换,使算法独立于客户而变化.[8]本文采用策略模式对各划分算法进行封装,每个封装后的划分工具成为一个策略.如图3所示,具体的划分工具类均派生于统一的拱坝划分方法接口DamMeshTool:如映射划分工具MapMeshTool将拱坝上(下)游坝面采用四边形网格映射划分;按拱梁划分工具ArchBeamMeshTool将上(下)游坝面网格的水平边和竖直边分别沿拱、梁方向设置;自适应划分AutoMeshTool工具将上(下)游坝面采用自适应方法划分.具体采用哪种方法,用户可根据需要自行选择.为方便参数化设计,本文采用映射划分和按拱梁划分这2种方式.
图 3网格划分工具的策略模式
Fig.3Strategy pattern of meshing tool
策略模式简化网格划分程序的单元测试,因为每个划分算法都有自己的类,可通过自己的接口进行单独测试.策略模式主要用于封装算法,但在实践中,可用于封装几乎任何类型的规则,如网格划分完成后的有限元计算可分为静力分析、模态分析和瞬态动力分析等.随着分析功能的完善,分析方式会不断增加,如热分析、流-固耦合分析等.如图4所示,策略模式也可为该问题提供解决方案.
图 4分析类型的策略模式
Fig.4Strategy pattern of analysis type
2.3外观模式
外观模式又称为门面模式,是软件工程中常用的软件设计模式之一.它为子系统中的一组接口提供一个统一的高层接口,使子系统更易使用.[8]在3层架构中,通常在数据访问层和业务逻辑层、业务逻辑层和表示层的层与层之间采用外观模式.
在拱坝有限元自动化建模系统中,可采用外观模式(见图5)将拱坝前处理部分、后处理部分以及文件操作部分集成为一个大的系统.系统为用户提供一个整体的接口ADMesh.客户通过发送请求给ADMesh的方式与子系统通信,ADMesh将这些消息转发给适当的子系统对象.在交互设计对话框中,用户可通过调用ADMesh实现整个建模与划分的过程.
图 5外观模式
Fig.5Facade pattern
使用外观模式后,用户程序既不需要直接访问子系统对象,也不需要了解具体的前处理或后处理系统的功能实现,只需了解ADMesh的调用方式即可.由此可见,外观模式提高前、后处理部分各子系统的独立性和可移植性.
2.4几何-网格分离模式
在前处理系统中,在未设置与有限元分析相关的参数前,通常会包括几何模型和网格模型2部分.根据前处理的不同阶段,可能会存在3种不同的情况:(1)只存在几何模型;(2)只存在网格模型;(3)几何模型与网格模型同时存在.几何-网格分离模式将几何模型与网格模型划分为不同的子系统,以脱离两者之间的耦合.
如图6所示,前处理系统中关于几何模型和网格模型的PreSystem分为几何模型Dam和网格模型MeshModal这2部分.几何模型负责拱坝的拱圈和梁等相关几何参数的管理,网格模型负责与有限元相关的节点和单元信息的管理.通过PreSystem建立Dam和MeshModal之间的联系.将两者解耦带来的好处包括:(1)模块独立化,拱坝几何管理系统可直接用于拱坝三维造型等功能,网格模型可直接用于进一步的有限元处理;(2)对拱坝模型的修改不影响网格模型,同样,对网格模型的修改也不影响拱坝模型.
图 6几何-网格分离模式
Fig.6Geometrymesh separation pattern
采用几何-网格分离增加几何模型和网格模型各自的独立性.该模式不仅适于本开发系统,而且适用于通用有限元软件系统.
2.5嵌入单元模式
单元类是有限元模型中最重要的数据结构之一,对于单元类的设计,在以往的有限元面向对象编程研究中常采用组合单元模式.[9]然而,有限元单元中除单元几何信息外,往往还包含大量的数据,如单元高斯点参数和单元属性等,后处理数据还包括温度和应力历程等.相对于这些数据,网格模型中的几何信息较少.在网格划分环节,若网格模型中的对象包含所有的数据成员,很容易给系统接口带来复杂性,需要在网格划分环节尽量将这些多余的数据分离出来.另一方面,用户在有限元处理过程中有时也需要对网格模型进行查看或编辑.因此,可采用嵌入单元模式解决该问题.
嵌入单元模式将网格模型中的单元嵌入到有限元模型的单元中,即在有限元模型的单元类中包含网格模型中单元对象的指针,见图7.用户若需要在非网格划分环节查看或编辑前处理网格模型,只需调用有限元模型中相关类的接口即可实现.嵌入单元模式可有效降低该问题的复杂性.与单元类相似,节点类以及整体模型管理类均可采用嵌入单元模式.图 7嵌入单元模式
Fig.7Embedded element pattern
3系统开发
3.1网格参数化划分方案
实现拱坝与地基全自动划分所需的参数为拱坝体形参数、拱坝网格划分参数、地基断面尺寸参数和地基网格划分参数等.
拱坝主体部分采用六面体网格划分.其中,映射划分需要的参数为拱圈厚度方向划分数,高程方向网格尺寸控制参数,左、右岸拱圈网格划分数等,对于V形河谷,拱坝底部采用五面体单元过渡;按拱梁划分需要的参数为拱圈厚度方向划分数、高程方向网格尺寸控制参数、沿山体方向网格尺寸控制参数等,拱端采用五面体单元过渡.
图 8地基断面形状
Fig.8Shape of foundation
section地基采用全六面体网格划分.对于均匀河道的地基,其设计参数可通过某具体河道的断面给定,地基断面形状见图8.
3.2系统开发实例
基于VC++编程环境,依据上文提出的开发思路和原理编制统一二次曲线拱坝自动化建模与划分程序,并开发相应的参数交互输入与图形显示系统,其中图形显示采用OPENGL函数库.
该系统可使用户直观、方便、快捷地建立拱坝模型并生成拱坝网格.首先,用户可通过对话框读入已有的拱坝数据文件,或直接填写各个高程拱圈的参数,这样可通过各层拱圈的参数计算每层拱圈上的关键点坐标;然后用户可通过有关的对话框输入坝体网格划分和山体网格划分的各个参数.
拱坝坝体的网格首先通过已计算出的关键点和用户输入的左、右边拱划分网格数插值产生上、下游曲面上的插值点,然后在拱圈厚度方向根据拱圈厚度划分数插值,最后生成坝体网格点序列.山体网格首先通过各个延伸长度计算山体的范围,然后通过需要的网格数和划分因数进行线性插值,最后生成山体网格点序列.由于坝体划分和山体划分是2个独立的过程,最后要进行网格合并.可将坝体与山体上坐标相同的节点进行合并,重新生成网格点序列,这样就可得到整体的坝体-山体网格.
以某具体拱坝为例,分别采用映射划分和按拱梁划分2种方式对拱坝进行划分,见图9.
(a)映射划分(b)按拱梁划分图 9拱坝网格
Fig.9Meshes of arch dam
用本文系统对该拱坝地基进行自动网格划分,将拱坝网格与地基网格合并,整体网格见图10.
图 10拱坝-地基整体有限元网格
Fig.10Finite element meshes of arch damfoundation
4结论
基于面向对象设计方法,研究设计模式在前、后处理软件开发中的应用,开发统一二次曲线拱坝有限元自动化建模系统.通过设计模式的运用使系统的可靠性、可复用性、可维护性和可扩展性得到极大提升.
本文的网格划分方法适用于V形和U形等各种对称和不对称河谷.目前本文系统只能建立简单的统一二次曲线拱坝的模型,对于具有横缝、含孔洞的拱坝-地基系统的建模将是下一步研究的重点.将设计模式应用到拱坝静动力分析程序以及后处理系统中,并开发完整的拱坝专业有限元分析系统是最终的研究方向.
参考文献:
[1]涂劲, 陈厚群, 张伯艳. 小湾拱坝在不同概率水平地震作用下的抗震安全性研究[J]. 水利学报, 2006, 37(3): 278285.
TU Jin, CHEN Houqun, ZHANG Boyan. Seismic safety of high arch dam in Xiaowan project under the action of earthquakes with different exceeding probabilities[J]. J Hydraulic Eng, 2006, 37(3): 278285.
[2]郭永刚, 孙五继, 刘宪亮. 高拱坝伸缩横缝间布设抗震钢筋的动力反应分析[J]. 应用力学学报, 2007, 24(1): 1620.
GUO Yonggang, SUN Wuji, LIU Xianliang. Numerical modeling of seismic reinforcement between contraction joints in high arch dam[J]. Chin J Appl Mech, 2007, 24(1): 1620.
[3]朱伯芳, 高季章, 陈祖煜, 等. 拱坝设计与研究[M]. 北京:中国水利水电出版社, 2002: 165166.
[4]张迪. 拱坝有限元网格自动生成[J]. 高校应用数学学报, 1987, 2(2): 182191.
ZHANG Di. Automatic finite element mesh generation for arch dams[J]. Appl Math J Chin Universities, 1987, 2(2): 182191.
[5]彭宣茂. 拱坝有限元计算的前后处理技术[J]. 河海大学学报: 自然科学版, 1990, 18(1): 107111.
PENG Xuanmao. Pre and post processing technology of arch dam finite element analysis[J]. J Hohai Univ: Nat Sci, 1990, 18(1): 107111.
[6]钱向东, 彭宣茂. 复杂地基-拱坝体系有限元网格的自动生成[J]. 河海大学学报: 自然科学版, 1993, 21(6): 8790.
QIAN Xiangdong, PENG Xuanmao. Automatic finite element mesh generation for the system of arch dam with complex foundation[J]. J Hohai Univ: Nat Sci, 1993, 21(6): 8790.
[7]余卫平, 肖明. 复杂结构有限元网格组合剖分技术[J]. 武汉大学学报: 工学版, 2002, 35(2): 102107.
YU Weiping, XIAO Ming. Assembleddissecting technology of complex structure for 3D finite element analysis[J]. J Wuhan Univ: Eng, 2002, 35(2): 102107.
[8]GAMMA E, HELM R, JOHNSON R, et al. 设计模式: 可复用面向对象软件的基础[M]. 李英军, 马晓星, 蔡敏, 等, 译. 北京: 机械工业出版社, 2000: 70.
[9]HENG B C P, MACKIE R I. Using design patterns in objectoriented finite element programming[J]. Computers & Stuctures, 2009, 87(1516): 952961.
(编辑于杰)第20卷 第3期2011年9月计 算 机 辅 助 工 程Computer Aided EngineeringVol.20 No.3Sept. 2011
推荐访问:建模
曲线
有限元
设计
系统