计算力学OpenFOAM讲座-高级篇(殷亮).ppt

上传人:牧羊曲112 文档编号:6059246 上传时间:2023-09-19 格式:PPT 页数:43 大小:298.11KB
返回 下载 相关 举报
计算力学OpenFOAM讲座-高级篇(殷亮).ppt_第1页
第1页 / 共43页
计算力学OpenFOAM讲座-高级篇(殷亮).ppt_第2页
第2页 / 共43页
计算力学OpenFOAM讲座-高级篇(殷亮).ppt_第3页
第3页 / 共43页
计算力学OpenFOAM讲座-高级篇(殷亮).ppt_第4页
第4页 / 共43页
计算力学OpenFOAM讲座-高级篇(殷亮).ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《计算力学OpenFOAM讲座-高级篇(殷亮).ppt》由会员分享,可在线阅读,更多相关《计算力学OpenFOAM讲座-高级篇(殷亮).ppt(43页珍藏版)》请在三一办公上搜索。

1、开源计算力学软件OpenFOAM讲座,OpenFOAM的结构和能力,南京工业大学城市建设与安全工程学院OpenFOAM研讨小组研讨小组QQ群号码:127471850,殷亮于南京,本讲稿的内容参考了Hrvoje Jasak的演讲内容,版权OpenFOAM研讨小组,遵守GPL协议,归可自由的复制和拷贝。,1、OpenFOAM介绍,OpenFOAM:面向对象的计算力学数值模拟库对偏微分方程算子实施有限体积离散(积分形式)故最多处理二阶方程(传递方程适用)使用非结构化网格(但精度与网格相关性较大)以类封装的形式提供离散和数值算法(最大优点)有效的进行大规模并行化计算,并且在很多平台可以移植和调试(底层

2、并行化实施)同时提供:自动网格运动网格拓扑改变:体单元的层化,滑动界面(ggi)及其它拉格朗日粒子追踪及喷射有限元离散及有限面积离散(ext版本)工具类库:ODE求解器、热物理属性、CHEMKIN界面,OpenFOAM是什么,1.1、OpenFOAM历史,上世纪90年代掀起的C+及面向对象编程(主要解决软件危机)OpenFOAM与英国帝国大学Gosman的小组和热流体分部相关联(Spalding、帕坦卡S.V.Patankar的研究相关,PHOENICS与STAR-CD-非结构网格)初始类来自于Charlie Hill(1993)的博士论文数值工作来自于1993年Henry Weller和Hr

3、voje Jasak(两个版本),1、OpenFOAM背景,2开发与应用,OpenFOAM 的PhD项目包括:数值分析、误差估计、网格自适应、RANS、LES湍流模型、自由液面、多相流等等材料力学:非线性结构分析(如何分量解耦)、接触弹塑性、流固耦合在Chalmers大学的Diesel喷射模型瑞士军方应用(水动力)多所大学贡献:Imperial College:Poly Milano,Chalmers University,University of Zagreb,Croatia,University College Dublin,Kings College London等在cfd-onlin

4、e上其活跃程度与FLUENT相当,3、版本发展,在2000年,FOAM作为Nabla公司的商业版本与Fluent公司进行策略合作:为下一代CFD软件进行软件设计(Hrvoje Jasak)自2002年提供了大学免费版本满足复杂要求的高端客户在2004年10月提供公共域版本支持,4、OpenFOAM和C+,OpenFOAM基于坚实而彻底的C+开发OpenFOAM实施要早于C+的稳定版本的推出,故其并未用标准库,但其类库也随语言而进化其核心代码不断的重写或提炼:清除冗余代码、使用新的语言知识和程序理念其代表了在面向对象、模块化、代码重用方面的经典案例,值得研读。,5、OpenFOAM完成了以下的创

5、新,多面体网格支持新的自由液面算法Halo-free并行化(无ghost)自动多面体(任意)网格求解器新方法进行拓扑网格变化通过实时选择表进行用户定制,1.2设计理念,用户修改要预先定义模型与模型作用的矩阵过于复杂难于开发、维护及支持缺少支持层:不同相关性的代码混合在一起难以区分开发与维护需要大的团队即使小的改变也需要专业的知识化很长时间才能变得专业封闭的框架,对用户而言存在代码重用性问题单一的开发使得需要单一的测试,1曾经主流的设计特点,有利于新模型的实现无介入的分层开发便利的代码重用及模块化能应用于超出流体流动的更多应用在不改变已有组件的条件下实现代码的开发和定制化如下例,2、新的理念,软

6、件中方程的表达为solve(fvm:ddt(k)+fvm:div(phi,k)-fvm:laplacian(nu()+nut,k)=nut*magSqr(symm(fvc:grad(U)-fvm:Sp(epsilon/k,k);,3、分层实现,软件中不同的功能层张量代数场代数场的映射和差分不同类型的离散 有限体积方法 有限元网格处理、网格运动、拓扑改变,差分格式拉格朗日追踪边界条件定制化线性方程组求解技术分离的物理模型应用程序的定制 流体流动、传热 燃烧、湍流、喷射 电磁学 其它模型组合:流固耦合各层可以独立开发,同时又相互依赖。,4、用户考虑因素,功能能交换,考虑使用同一界面,使用实时选择表

7、功能块可选用户定制:线性方程求解、梯度计算、对流差分格式开源高层代码共享自动优化:内存和执行分支,1.3、使用,面向问题的求解器框架通用的CFD软件包不可能预先知道并满足求解器需求 不能写出完全通用的求解器取而代之的是数值库及实施代码重用通过重用提供基本工具直至需求满足如果重用很难,继续分解代码,并重写代码伴随着高层应用的工具开发求解器的编写及优化所有这些,使得要检查建立求解器必要的部件,再检查能否用在其它处(重用性)。,2、主要的对象及相互关系,从面向对象的观点,在于识别对和它们所需提供的功能。,2.1 元类及容器类,其封装了label,scalar,bool,string,complex,

8、1、元类,2、容器类(内存管理问题),OpenFOAM写在STL之前,所以有自己的容器类容器类对代码的优化相当重要,需要紧密的控制所有的容器类都以内容类型作为模板,具体实现,Lists:数组容器 List:提供序列存储的容器,类似于数组,为数值求解的主要容器,将其视为对单一内存的封装 SubList:对List的片段抽取(基于效率考虑)DynamicList:具有动态长度的List Linked List:动态数组 SLList:单链 DLList:双链Hash Tables HashTable HashSet:无内容,指针物体的容器:List被创建时,默认为无参构造函数,但有些对象没有无参构

9、造,或不能被拷贝,则要使用指针列代替对指针列需要附带操作:哪一个元素已经被设置了在列的构析函数执行中,谁负责删除指针PtrList存储指针的容器,字典(Dictionary)处理数据的输入和输出关键字-值对的嵌入次序无关,用分号隔开允许嵌入表:表的表,处理数据的输入和输出Ioobject封装了隐式对象注册管理(树形结构)所有的物体都应该从一个文件读或写IOobject由名字、类名、路径、对注册对象objectRegistry的应用、决定储存状态的参数来创建:MUST_READ、READ_IF_PRESENT、NO_READ、AUTO_WRITE、NO_WRITE objectRegistry管

10、理者读写请求,2.2、空间和时间的描述,1空间的描述 空间为基本的计算网格。其主旨为网格独立于离散,应该满足合法的网格需求,网格元 点 边(两点)面(点列)体(面列)提供体网格的识别,主要可以实现网格转化及后处理,多面体网格点列面列体列边界网格(元面网格列)要保证有序,元网格和元面网格 此两类提供了网格特拓扑和几何信息几何体中心面中心体体积面面积边界长拓扑信息围绕体的面体-体点-面支持网格运动,拓扑改变,2时间描述,控制时间和迭代次数控制数据库读写Time类为顶层类时间记录起始时间结束时间时间步长CPU时间经历时间处理物体注册功能I/O注册Root和case路径读写控制、格式及精度,2.3、张

11、量运算,1、张量基础,矢量和张量的运算 采用笛卡尔坐标描述 采用自动的扩展到n阶的张量运算,三维,现为二阶 使用模板,2、实施,模板的使用,可以拓展到complexVectorSpace解决通用性类型的自动演绎(typname功能)运算符重载分量采用枚举类,不用列举多个函数名包含维数和阶数信息,2.4 场及场的代数,1.场对象,张量列+运算的再实施场的场,2.边界条件:面网格场,不光是数,包含了行为信息,如本值和梯度值实时读取虚界面虚函数界面继承与面网格场类可定制与特性和功能相关,与并行,3.单位,单位一致可运算单位检查自动单位运算(嵌于场),4、几何场,必要条件值和边界条件网格值在几何下的关

12、系内部场和边界场分离如此对mesh的引用内场边界场-场的场:含边界几何、访问内场、边界条件由于面场为离散服务,模板处理不同类型单位几何场为一完整的独立单元 为其注册入数据库继承于IOobject,读写处理,3、矩阵支持,lduMatrix类矢量稀疏矩阵对角线,上三角和下三角分别存储lduAddressing类地址索引,1、稀疏矩阵,具有基本的矩阵代数M+MS*M低松弛因子矩阵矢量乘,矩阵结构的识别和求解器的选择只有对角线对称性矩阵非对称性矩阵,2、线性方程求解器,继承于lduMatrix:solver实施了迭代求解器ICCGBi-CGAMG通过C指针优化并行化通过lduCoupledInter

13、face类,升级矩阵矢量乘,3、有限体积矩阵,对矢量和张量采用分离求解储存b处理边界条件实施FV相关的操作 H(),4、偏微分方程表达,高层机制网格代表空间时间代表进展和迭代带有单位和边界条件的几何场微积分类矩阵支持、储存及吸收处理线性方程求解器方法类,转化算子为矩阵,处理方程方程离散现在能通过算子的复合操作最终体现为对矩阵的贡献单位检查,单元离散,网格支持,并行化都在底层完成,与方程看似无关离散受表控制如此,其能解决一大类计算力学问题。,5、物理模型,当前的机理足够写出复杂的物理模型但不方便,如湍流模型等使流动求解器复杂化模型可实时选择不是写大通用的湍流问题可执行程序而是要分装这些模型,1、

14、方程表达,2、物理模型相互作用,数值模拟软件的复杂性多数在于模型与模型的相互作用如:动量方程和湍流模型动量方程需要雷诺应力和湍流粘度湍流方程需要速度场合应力信息湍流不同,结果不同还有如非牛顿粘性模型,矩阵的相互作用等,3、模型库,将同一功能性组成库模型对模型作用=实现共同的接口(标志)实时选择(模型、离散、求解器选择方面),4、模型-模型作用,最好避免直接相互作用,使用虚基类代替有助于简化作用矩阵,分层处理,但要注意有效性,小组未来研讨的计划,湍流实现动网格,特别是其编程结构自动网格划分结构(网格划分)、网格自适应基础库的C+编程技巧的分析代数方程组求解技术算法的优化技术细节问题将分步进行研讨欢迎大家在QQ群上上传自己成果,我们会编辑成电子期刊发布。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号