OpenFOAM讲座-高级篇-殷亮

上传人:熏** 文档编号:243144037 上传时间:2024-09-16 格式:PPT 页数:43 大小:233KB
返回 下载 相关 举报
OpenFOAM讲座-高级篇-殷亮_第1页
第1页 / 共43页
OpenFOAM讲座-高级篇-殷亮_第2页
第2页 / 共43页
OpenFOAM讲座-高级篇-殷亮_第3页
第3页 / 共43页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,开源计算力学软件,OpenFOAM,讲座,OpenFOAM,的结构和能力,南京工业大学城市建设与安全工程学院,OpenFOAM,研讨小组,研讨小组,QQ,群号码:,127471850,殷亮,2010.12.18,于南京,本讲稿的内容参考了,Hrvoje Jasak,的演讲内容,版权,OpenFOAM,研讨小组,,遵守,GPL,协议,归可自由的复制和拷贝。,1,、,OpenFOAM,介绍,OpenFOAM,:面向对象的计算力学数值模拟库,对偏微分方程算子实施有限体积离散(积分形式),故最多处理二阶方程(传递方程适用),使用非结构化网格(但精度与网格相关性较大),以类封装的形式提供离散和数值算法(最大优点),有效的进行大规模并行化计算,并且在很多平台可以移植和调试(底层并行化实施),同时提供:,自动网格运动,网格拓扑改变:体单元的层化,滑动界面(,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,和,Hrvoje 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,-online,上其活跃程度与,FLUENT,相当,3,、版本发展,在,2000,年,,FOAM,作为,Nabla,公司的商业版本,与,Fluent,公司进行策略合作:为下一代,CFD,软件进行软件设计(,Hrvoje Jasak,),自,2002,年提供了大学免费版本,满足复杂要求的高端客户,在,2004,年,10,月提供公共域版本支持,4,、,OpenFOAM,和,C+,OpenFOAM,基于坚实而彻底的,C+,开发,OpenFOAM,实施要早于,C+,的稳定版本的推出,故其并未用标准库,但其类库也随语言而进化,其核心代码不断的重写或提炼:清除冗余代码、使用新的语言知识和程序理念,其代表了在面向对象、模块化、代码重用方面的经典案例,值得研读。,5,、,OpenFOAM,完成了以下的创新,多面体网格支持,新的自由液面算法,Halo-free,并行化(无,ghost,),自动多面体(任意)网格求解器,新方法进行拓扑网格变化,通过实时选择表进行用户定制,1.2,设计理念,用户修改要预先定义,模型与模型作用的矩阵过于复杂,难于开发、维护及支持,缺少支持层:不同相关性的代码混合在一起难以区分,开发与维护需要大的团队,即使小的改变也需要专业的知识,化很长时间才能变得专业,封闭的框架,对用户而言存在代码重用性问题,单一的开发使得需要单一的测试,1,曾经主流的设计特点,有利于新模型的实现,无介入的分层开发,便利的代码重用及模块化,能应用于超出流体流动的更多应用,在不改变已有组件的条件下实现代码的开发和定制化,如下例,2,、新的理念,软件中方程的表达为,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,、用户考虑因素,功能能交换,考虑使用同一界面,使用实时选择表,功能块可选,用户定制:线性方程求解、梯度计算、对流差分格式,开源高层代码共享,自动优化:内存和执行分支,1.3,、使用,面向问题的求解器框架,通用的,CFD,软件包不可能预先知道并满足求解器需求,不能写出完全通用的求解器,取而代之的是数值库及实施代码重用,通过重用提供基本工具直至需求满足,如果重用很难,继续分解代码,并重写代码,伴随着高层应用的工具开发,求解器的编写及优化,所有这些,使得要检查建立求解器必要的部件,再检查能否用在其它处(重用性)。,2,、主要的对象及相互关系,从面向对象的观点,在于识别对和它们所需提供的功能。,2.1,元类及容器类,其封装了,label,scalar,bool,string,complex,1,、元类,2,、容器类,(,内存管理问题),OpenFOAM,写在,STL,之前,所以有自己的容器类,容器类对代码的优化相当重要,需要紧密的控制,所有的容器类都以内容类型作为模板,具体实现,Lists,:数组容器,List,:提供序列存储的容器,类似于数组,为数值求解的主要容器,将其视为对单一内存的封装,SubList,:对,List,的片段抽取(基于效率考虑),DynamicList,: 具有动态长度的,List,Linked List,:动态数组,SLList,:单链,DLList,:双链,Hash Tables,HashTable,HashSet,:无内容,指针物体的容器:,List,被创建时,默认为无参构造函数,但有些对象没有无参构造,或不能被拷贝,则要使用指针列代替,对指针列需要附带操作:,哪一个元素已经被设置了,在列的构析函数执行中,谁负责删除指针,PtrList,存储指针的容器,字典(,Dictionary,),处理数据的输入和输出,关键字,-,值对的嵌入,次序无关,用分号隔开,允许嵌入表:表的表,处理数据的输入和输出,Ioobject,封装了隐式对象注册管理(树形结构),所有的物体都应该从一个文件读或写,IOobject,由名字、类名、路径、对注册对象,objectRegistry,的应用、决定储存状态的参数来创建:,MUST_READ,、,READ_IF_PRESENT,、,NO_READ,、,AUTO_WRITE,、,NO_WRITE,objectRegistry,管理者读写请求,2.2,、空间和时间的描述,1,空间的描述,空间为基本的计算网格。其主旨为网格独立于离散,应该满足合法的网格需求,网格元,点,边(两点),面(点列),体(面列),提供体网格的识别,主要可以实现网格转化及后处理,多面体网格,点列,面列,体列,边界网格(元面网格列),要保证有序,元网格和元面网格,此两类提供了网格特拓扑和几何信息,几何,体中心,面中心,体体积,面面积,边界长,拓扑信息,围绕体的面,体,-,体,点,-,面,支持网格运动,拓扑改变,2,时间描述,控制时间和迭代次数,控制数据库读写,Time,类为顶层类,时间记录,起始时间,结束时间,时间步长,CPU,时间,经历时间,处理物体注册功能,I/O,注册,Root,和,case,路径,读写控制、格式及精度,2.3,、张量运算,1,、张量基础,矢量和张量的运算,采用笛卡尔坐标描述,采用自动的扩展到,n,阶的张量运算,三维, 现为二阶,使用模板,2,、实施,模板的使用,可以拓展到,complex,VectorSpace,解决通用性,类型的自动演绎(,typname,功能),运算符重载,分量采用枚举类,不用列举多个函数名,包含维数和阶数信息,2.4,场及场的代数,1.,场对象,张量列,+,运算的再实施,场的场,2.,边界条件:面网格场,不光是数,包含了行为信息,如本值和梯度值,实时读取,虚界面,虚函数界面,继承与面网格场类,可定制,与特性和功能相关,与并行,3.,单位,单位一致可运算,单位检查,自动单位运算(嵌于场),4,、几何场,必要条件,值和边界条件,网格,值在几何下的关系,内部场和边界场分离,如此,对,mesh,的引用,内场,边界场,-,场的场:含边界几何、访问内场、边界条件,由于面场为离散服务,模板处理不同类型,单位,几何场为一完整的独立单元,为其注册入数据库,继承于,IOobject,,读写处理,3,、矩阵支持,lduMatrix,类,矢量稀疏矩阵,对角线,上三角和下三角分别存储,lduAddressing,类地址索引,1,、稀疏矩阵,具有基本的矩阵代数,M+M,S*M,低松弛因子,矩阵矢量乘,矩阵结构的识别和求解器的选择,只有对角线,对称性矩阵,非对称性矩阵,2,、线性方程求解器,继承于,lduMatrix,:solver,实施了迭代求解器,ICCG,Bi-CG,AMG,通过,C,指针优化,并行化通过,lduCoupledInterface,类,升级矩阵矢量乘,3,、有限体积矩阵,对矢量和张量采用分离求解,储存,b,处理边界条件,实施,FV,相关的操作,H(),4,、偏微分方程表达,高层机制,网格代表空间,时间代表进展和迭代,带有单位和边界条件的几何场,微积分类,矩阵支持、储存及吸收处理,线性方程求解器,方法类,转化算子为矩阵,处理方程,方程离散现在能通过算子的复合操作,最终体现为对矩阵的贡献,单位检查,单元离散,网格支持,并行化都在底层完成,与方程看似无关,离散受表控制,如此,其能解决一大类计算力学问题。,5,、物理模型,当前的机理足够写出复杂的物理模型,但不方便,如湍流模型等使流动求解器复杂化,模型可实时选择,不是写大通用的湍流问题可执行程序,而是要分装这些模型,1,、方程表达,2,、物理模型相互作用,数值模拟软件的复杂性多数在于模型与模型的相互作用,如:动量方程和湍流模型,动量方程需要雷诺应力和湍流粘度,湍流方程需要速度场合应力信息,湍流不同,结果不同,还有如非牛顿粘性模型,矩阵的相互作用等,3,、模型库,将同一功能性组成库,模型对模型作用,=,实现共同的接口(标志),实时选择(模型、离散、求解器选择方面),4,、模型,-,模型作用,最好避免直接相互作用,使用虚基类代替,有助于简化作用矩阵,分层处理,但要注意有效性,小组未来研讨的计划,湍流实现,动网格,特别是其编程结构,自动网格划分结构(网格划分)、,网格自适应,基础库的,C+,编程技巧的分析,代数方程组求解技术,算法的优化技术,细节问题将分步进行研讨,欢迎大家在,QQ,群上上传自己成果,我们会编辑成电子期刊发布。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!