Xi’anJiaotongUniversityXi’anJiaotongUniversityXi’anJiaotongUniversityOpenFOAMOpenFOAM一种开源计算程序包种开源计算程序包苏军伟苏军伟2011.01于中冶赛迪Xi’anJiaotongUniversityXi’anJiaotongUniversityXi’anJiaotongUniversity作者简历作者简历学习经历学习经历2000-2004年西安交通大学过程装备与控制工程系、计算机科学与技术系工学双学士20042007年西安交通大学过程装备与控制工程系工学硕士2004-2007年西安交通大学过程装备与控制工程系工学硕士2007-至今西安交通大学机械工程学院博士在读2008-2009年在ImperialcollegeLondon(OpenFOAM发源地)访问博士研究方向研究方向多相流体力学数值模拟目前已经基于OpenFOAM的工作描述任意复杂区域内密相颗粒流离散单元程序包(Jasak,4thworkshop)描述生物反应器传质过程模型任意非结构化网格有限容积LatticeBoltzmann模型描述多分散系统的群体平衡模型单相流动拓扑优化求解器全隐式浮力驱动流求解器作者blog:一种全隐式是任意多区域共轭换热求解器Xi’anJiaotongUniversityXi’anJiaotongUniversityXi’anJiaotongUniversity作者blog:’anJiaotongUniversityXi’anJiaotongUniversityXi’anJiaotongUniversity作者blog:’anJiaotongUniversityXi’anJiaotongUniversityXi’anJiaotongUniversity基本内容基本内容OFOAM发展史OpenFOAM发展史OpenFOAM下的微分方程OpenFOAM功能库介绍OpenFOAM功能库介绍基础库有限容积库有限容积库拉格朗日•拉格朗日库的几种设计方式–柴油雾化库柴油雾化库–Intermediate–CDEM的设计理念动网格动网格湍流模型库传输模型库作者blog:’anJiaotongUniversityXi’anJiaotongUniversityXi’anJiaotongUniversity基本内容基本内容OFOAM的求解器及其前后物理功能OpenFOAM的求解器及其前后物理功能OpenFOAM常用基础类时间空间类场边界条件稀疏矩阵OpenFOAM中的耦合常见耦合方法区域的耦合跟踪变量的耦合OpenFOAM与其他软件的耦合OpenFOAM-dev版本的新功能OpenFOAMdev版本的新功能OpenFOAM周边软件OpenFOAM的国内社区作者blog:’anJiaotongUniversityXi’anJiaotongUniversityXi’anJiaotongUniversityOFOAM发展史OpenFOAM发展史什么是F什么是FoamFieldOperationAndManipulation(场的运算与操作)伦敦帝国理工学院机械工程系,93年HrvojeJasak在做博士论文时候和HenryWeller等通过开发基于C++的CFD软件包(更确切:一种CFD语言)Nabla公司()2004年8月2日Foam2.3发布OpenFOAM2004年12月HenryWeller的OpenCFD公司()成立并发布开源的Foam2004年12月HenryWeller的OpenCFD公司()成立并发布开源的FoamOpenFOAM1.02004年12月HrvojeJasak的Wikki公司()成立,并维护OpenFOAM的扩充2007年9月HrvojeJasak的OpenFOAMextension工程确立,实现在OpenCFDltd发布的OpenFOAM上进一步完善进一步完善当前的版本OpenCFD(HenryWeller等人)稳定版:OpenFOAM1.7开发版:OpenFOAM1.7.xWikki稳定版:OFOAMd15(压缩包)Wikki稳定版:OpenFOAM-dev1.5(压缩包)开发版:OpenFOAM-dev1.5(实时更新版)作者blog:’anJiaotongUniversityXi’anJiaotongUniversityXi’anJiaotongUniversityOpenFOAM下的微分方程OpenFOAM下的微分方程连续力学数学表达微分方连续力学数学表达:微分方程201uu+u2TttkkkktkOpenFOAM下的描述solve02tk(fvm::ddt(k)基本操作:+fvm::div(phi,k)-fvm::laplacian(nu()+nut,k)==nut*magSqr(symm(fvc::grad(U)))时间微分、对流、扩散、梯度等显式:fvc==nut*magSqr(symm(fvc::grad(U)))-fvm::Sp(epsilon/k,k));显式:fvc隐式:fvm作者blog:);Xi’anJiaotongUniversityXi’anJiaotongUniversityXi’anJiaotongUniversityOpenFOAM功能库介绍OpenFOAM功能库介绍基础库基础库基本数据类型•C++所有类型•C++所有类型•scalar,vector,tensor,quaternion,septernion,complex,Switch等复合数据类型复合数据类型•List,Field,linkList,DLList,ptrList等场类型•Field:一串数,连续空间,模板类。类名:Field•边界条件:一串数+边界。类名patchField•单位:7个国际单位制类名dimensionSet•单位:7个国际单位制。类名dimensionSet•几何场:Field+边界条件。类名GeometricField•场操作:+,-,*,/,sin,cos,等作者blog:’anJiaotongUniversityXi’anJiaotongUniversityXi’anJiaotongUniversityOpenFOAM功能库介绍OpenFOAM功能库介绍db库db库•字典类(dictionary)–参数控制•对象注册机(objectRegistry)ihld–Time,mesh,cloud–对象容器、输出统一控制、任何地方方便查找•对象注册类(regIOobject)–定义可以在对象注册机注册的对象,比如字典行选择表•运行期选择表:runTimeSelection–对象动态创建(C++不允许构造器虚拟),单一接口、多重实现的基础–湍流模型、差分格式、粘性模型等•库的动态加载:dlLibraryTable–函数对象:functionObject–独立于solver的solver功能的附加•时间基本库:Time–控制整个程序运行–参数修改重新加载–库的动态加载–所有注册对象的容器作者blog:’anJiaotongUniversityXi’anJiaotongUniversityXi’anJiaotongUniversityOpenFOAM功能库介绍OpenFOAM功能库介绍内存管理相关内存管理相关•自动指针autoPtr不能直接作为参数传递–不能直接作为参数传递•瞬态对象tmp所指对象不能作为参数传递,常作为返回值–所指对象不能作为参数传递,常作为返回值•正确使用可防止内存泄露(valgrind--tool=memcheck--leak-check=full,检查内存泄露情况),检查内存泄露情况)插值相关•点单元:interpolatePointToCell点单元:interpolatePointToCell•xy插值:interpolateXY•插值表:interpolationTable作者blog:•边界patchToPatchInterpolationXi’anJiaotongUniversityXi’anJiaotongUniversityXi’anJiaotongUniversityOpenFOAM功能库介绍OpenFOAM功能库介绍基础矩阵类基础矩阵类•稀疏矩阵类:lduMatrix•临近节点寻址:lduAddressing•代数方程器求解器预条件共轭梯度求解器–预条件共轭梯度求解器PCG/PBICG–光滑求解器smoothSolver–代数多重网格求解器•预条件器对角不完全对称矩阵;–对角不完全Cholesky(对称矩阵);DIC–快速对角不完全Cholesky;FDIC–对角不完全LU(反对称矩阵);DILU–对角预条件器;diagonal–代数多重网格求解器;GAMG–没有预条件器;none•光滑器–高斯赛德尔;GaussSeidel–对角不完全Cholesky(对称矩阵);DIC–高斯赛德尔+对角不完全Cholesky(对称矩阵)DICGaussSeidel–对角不完全LU(反对称矩阵);DILU–高斯赛德尔+对角不完全LU(反对称矩阵)DILUGaussSeidel作者blog:•书:YousefSaad,IterativemethodsforSparseLinearSystemsXi’anJiaotongUniversityXi’anJiaotongUniversityXi’anJiaotongUniversityOpenFOAM功能库介绍OpenFOAM功能库介绍有容库有限容积库数值离散:fvm•ddtd2dt2divlaplacianspSuSp•ddt,d2dt2,div,laplacian,sp,SuSp表面插值格式(TVD非延迟修正)•QUICK,upwind,superBee,多项式拟合等QUC,upwd,supeee,多项式拟合等算子:fvc•ddt,div,grad,curl,laplacian等场内点插值•Cell•llPit•cellPoint•cellPointFace有限容积矩阵类fvMatrix(lduMatrix子类)作者blog:有限容积矩阵类fvMatrix(lduMatrix子类)Xi’anJiaotongUniversityXi’anJiaotongUniversityXi’anJiaotongUn