The Open Source CFD Toolbox用户手册翻译_第1页
The Open Source CFD Toolbox用户手册翻译_第2页
The Open Source CFD Toolbox用户手册翻译_第3页
The Open Source CFD Toolbox用户手册翻译_第4页
The Open Source CFD Toolbox用户手册翻译_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Open∇FOAMTheOpenSourceCFDToolboxUserGuideVersion2.3.05thFebruary2014注:1、蓝色部分为个人标注2、省略了部分章节内容3、部分内容翻译不到位,请参考原文PAGE\*ROMANPAGE\*ROMANIV目录第1章引言 1第2章指导案例 1cavityflow 2前处理 2查看网格 8求解 9后处理 9增大网格分辨率(密度)Increasingthemeshresolution 12meshgrading 16增加雷诺数 19高雷诺数流动 20改变案例几何结构 22后处理修正的几何结构 24带孔板的应力分析 25网格生成 26运行代码 32后处理 322.2.4练习 34水坝崩塌 34网格生成 35边界条件 36初始场设置 37流体属性 38紊流模型 38时间步长控制 38离散方法 39线性求解器控制 40运行代码 40后处理 402.3.11并行 412.3.12并行运算的后处理 42andlibraries 43OpenFOAM程序设计语言 44一般语言 44与C++ 44方程表达 44求解器代码 45编译(Compiling)应用和库 45头文件.H 45编译 46系列表wclean、rmdepall 49编译举例:pisoFoam 49messagingandoptimisationswitches 52将用户定义的库链接到已存在的应用 52运行应用 52并行运算 53网格和初始场数据的分解 53运行分解的案例 54跨磁盘分解数据 54并行案例后处理 55标准求解器 55标准应用 55标准库 55第4章OpenFOAM案例 55案例的文件结构 56基本输入输出格式 56通用语法规则 564.2.2词库 564.2.3数据文件标题 574.2.4列表 57标量,矢量与张量 58位Dimensionalunits 58types 594.2.8场 59andmacrosubstitutions 59指令#include和#inputMode 59指令#codeStream 60时间、数据的输入输出控制 60Numericalschemes 61schemes 62normalgradientschemes 63梯度方法 64方法Laplacianschemes 64schemes 64时间方法 65通量计算 65求解和算法控制 65线性求解器控制 66under-relaxation 67算法 68其他参数 69第5章网格生成与转化 69网格描述 69网格规格和有效约束 69polyMesh简介 70cellShape工具 71一维、二维及轴对称问题 72边界boundary 73指定边界面片类型 73base类型 75Primitive类型 75Derived类型 76blockMesh进行网格划分 77文件 77多个块 80创建少于8个顶点的块 80blockMesh 81生成网格 81snappyHexMesh网格生成过程 81创建背景六面体网格 82在特性边缘和表面拆分单元 82移除单元 84指定的区域的单元拆分 84贴合表面 85网格层 86网格质量控制 87网格转化 88fluentMeshToFoam 885.5.2~5.5.4略 89mapFields不同几何形状之间映射场 89一致场的映射 89非一致场的映射 89映射并行案例 90第6章后处理 90paraFoam 90paraFoam概述 90Properties面板 91Display面板 92工具条 92视图操作 93等值线绘制 936.1.8流线 94图像输出 94动画输出 94Fluent后处理 94Fieldview后处理 95EnSight后处理(略) 96数据取样 96任务的监控与管理 98foamJob脚本 98foamLog脚本 98第7章模型和物理特性 99热物理模型 99热物理特性数据 101紊流模型 102模型系数 103壁面函数 103PAGEPAGE1031章引言本教程随OpenFOAM2.3C++库同时发布,描述了OpenFOAMOpenFOAM的各个组成部分。OpenOAM首先是一种+appcaonsappcaons分成两类:求解器(soers,用来解决特定的连续介质力学(connuumechancs)问题;实用程序(utesdaaanpuaionOFsoer和utes,3章进行详细介绍。OpenFOAM有一个强大的功能,就是掌握必要的数学、物理和编程技术等知识的用户可以创建solversutilities。OpenFOAM需要前处理和后处理环境。前处理、后处理的接口就是OF应用本身,从而确保协调的数据传输环境。OFFigure1.14OF的运行案例。第5章讲的是用OF提供的网格生成器(meshgenerator)划分网格,以及利用第三方软件进行网格数据6章介绍后处理。2章指导案例这一章详细描述了一些OF指导案例的设置、模拟和后处理,其首要目的是让用户了解运行OF的基本流程。指导案例在$FOAM_TUTORIALS目录中,为使用OF提供的所有求解器和许多实用程序(utilities)OF。指导案例描述了预处理(pre-processing)工具blockMesh的使用,案例设置,OF求解器的运行以及使用paraoam进行后处理(posprocessng。使用OF支持的第三方后处理软件的用户可以按paraFoam6章的第三方软件使用说明。OF安装目录下的tutorials文件夹包含所有的指导案例文件。指导案例文件根据流动类型分在不同的目录下,对应子目录根据求解器分类。例如,所有icoFoam的案例存储在“incompressible/cooamncopressbeuorals目录复制到本地运行目录。命令如下:-pcavityflow本案例的设定为二维正方形区域内的绝热(isothermal)不可压缩(incompressible)流动。如图所示,该正方形区域的所有边界均为壁面,上方的壁面沿x方向以1米/秒的速度移动,其他3amnarcooam流等温不可压流动。在本案例中,将研究细化网格和网格向壁面分级(意思是沿朝向壁面的方向逐渐细化网格,从而形成一定的网格密度变化梯度)的效果。最终,流动雷诺数(Reynoldsnumber)增加,必须使用用于绝热不可压缩紊流(turbulent)pisoFoam求解器。前处理OF案例的设置是通过编辑案例的文档来实现的,用户应选择一个编辑器进行前处meshfedsproeresconrolparaeers)4.1节所述,这些数据存储在案例目录下的一组文件中,而不是单个文件。cavity。在编辑案例文件cavity案例之前,用户应打开该案例的目录:cdMeshgenerationF(aresancoordnessemOFempty边界条件,这些边界垂直于不需要求解的第三维,从而来求解二维问题。2.2OFblockMeshblockMeshDict(在给目录下)blockMeshDict如下所示:/*/*|=========*-C++-*||\\|\\ /| \\/| \\/\*FoamFile/FieldOperation|OpenFOAM:TheOpenSourceCFDToolbox|Version:2.3.0And|Web:www.OpenFOAM.orgManipulation|*\|||||*/{versionformatclassobject2.0;ascii;//存储形式二进制或者asciidictionary;//类名blockMeshDict; //对象名,与文件名一致}//*************************************//convertToMeters0.1;//单位转换,也就是说下面所有点都要乘以0.1才是真值vertices//顶点((000)(100)(110)(010)(000.1)(100.1)(110.1)(010.1));(hex01234567//块的顶点编号(20(20201//各向网格数simpleGrading111)//梯度);();boundary(movingWall{typewall;faces((3762));}fixedWalls{typewall;faces((0473)(2651)(1540));}frontAndBack{typeempty;faces((0321)(4567));});mergePatchPairs//需要和在一起的patch对();//*************************************************************************//文件的前7行以标语的形式展示了头信息,后面是FoamFile子目录中的文件信息,用{...}大括号定界。FomFie中首先指定该区域顶点的坐标(coornaesofheertexertces,然后通过顶点标号(erexabes)和单元(cel)个数定义块(bock,最后,定义边界面片(boudarypaches。5.3blockMeshDict文件中输入项的含义。blockMesh根据blockMeshDict文件生成网格。在本实例目录中,只需在终端输入:终端会自动显示blockMesh运行报告。如果出现错误信息,用户应修改文件相关内容,以保证该阶段不会出现任何错误。Boundaryandinitialconditions网格生成以后,用户可以查看案例的初始场设置文件。本案例开始时间设为0s,cavity/0/目录下。它包括两个文件,pU。压力(p)和速度(U)p的内容:dimensionsdimensions[02-20000];internalField uniform0;boundaryFieldboundaryField{movingWall{type}zeroGradient;fixedWalls{type}zeroGradient;frontAndBack{type}empty;}3个输入项:dimensions:场数据的度量方式(单位的指数,有7个参数,依次为质量、长度、时间、温度、(nemacpressure(/ρ的单位为ms即[0220000](4.2.6节;internalField:内部场,可以是uniform,均匀的,由单一值确定;也可以是nonuniform,非均匀的,场所有数据必须指定。(4.2.8节)boundaryField:边界的场数据,包括所有边界面片(movingWall等)(详细信息4.2.8节)对于本实例caty,边界仅由壁面组成,并可分为两种(面片为自定义的名称,非标准1)fxedl(2)ovnl:移动墙,即顶盖。由于两者都是壁面,其边界条件均设成了zeroGradientfrontAndBack代表二维情况下的前后empty该实例中,正如大多数我们遇到的情况一样,初始场设为均匀的。在这里,压力指运动学压力,uniform0。用户可用同样的方式查看cavity/0/U文件中的速度场。dimensionsdimensions[01-10000];internalField uniform(000);boundaryField{movingWall{typevalue}fixedValue;uniform(100);fixedWalls{typevalue}fixedValue;uniform(000);frontAndBack{type}empty;}dimensions为速度单位的指数;nernaleld初始化为unformero3unform(0004.2.5节;boundaryField方面,要求frontAndBack的边界条件相同;fixedWalls假定无滑移,故其类型为fxedue,值为unform(000;顶面以1s的速度沿xfxedueuniform(100)值。Physicalproperties实例的物理属性存储在Dictionaries目录下后缀为Properties的文件里。对于icoFoam案例,只需指定运动粘度(存储在transportProperties中。用户可以通过打开或编辑transportProperties的入口参数来检查运动粘度(kinematicviscosity)是否已经正确设置。运动粘度的关键字是nu,在方程中用同音的希腊字母代表。案例的初始雷诺数(Reynoldsnumber)为10,其中雷诺数定义为:Re=d|U|/ (2.1)式中,d和|U|分别为特征长度和特征速度,为运动粘度。此处d=0.1m,|U|=1m/s,所以Re=10时,nu[02-1nu[02-10000]0.01;controlDictcontrolDict文件包含与时间控制、求解数据的读取和存储相关的输入数据。它位于system目录下。运行的开始/结束时刻及时间步长必须设置。OF的时间控制方式十分灵活,详细描述见4.3节。在这个教程中将开始运行时刻设为t=0,这意味着OF要从文件夹0读取流场数据(案例文件结构详4.1节startFromstartTime0。对于结束时间,我们希望获得绕腔体循环流动时的稳态解。一般而言,层流中,流体通过该区域10次才能达到稳态。在这个实例中,腔体没有进口也没有出口,因此流体无法通过该区域。取而代之的方法是,将盖子穿过腔体10次所用的时间设为结束时间,即1s;事实上,事后发现0.5s就stopAtendTime0.5。现在我们需要设置时间步长,由关键词deltaT代表。为保证运行icoFoam时的瞬时精确性和数值稳定性,要求库朗数(Courantnumber)1。对于一个单元,库朗数定义如下:Co=δt|U|/δx (2.2)其中δt是时间步长,|U|是通过单元的速度大小,δx是该速度方向上的单元尺寸。流Co<1。整个区域的单元尺寸固定,所1m/s。单元尺寸为δx=d/n=0.1/20=0.005m (2.3)因此为了达到全部区域内Co<=1,时间步长deltaT的设置必须小于等于δt=Coδx/|U|=1×0.005/1=0.005s (2.4)我们希望模拟过程中每隔一段时间记录一次结果,以便在后处理中查看。关键词writeControl表示记录结果的时间的设置方式,这里我们选择timeStep,代表每隔n次时间步长输出一次结果,其中n值由关键词writeInterval0.1,0.2,...,0.5s0.005s20writeInterval20。OF(求解时)会创建以当前时间命名的文件夹,例如0.1,每个文件夹中都包含一系列的数据applicationicoFoam;startFromstartTime;startTime0;stopAtendTime;endTime0.5;deltaT0.005;//当前case所用求解器的名字(在4.1applicationicoFoam;startFromstartTime;startTime0;stopAtendTime;endTime0.5;deltaT0.005;//当前case所用求解器的名字writeControltimeStep;writeControltimeStep;writeInterval20;purgeWrite0;writeFormatascii;writePrecision6;writeCompressionoff;//按照时间步长写,也可以为runTime//20个时间步长写一次(如果按照时间来写的话为1)//写过程是否覆盖,如果0则不覆盖,大于0为覆盖。//文件写入精度//是否对生成数据进行压缩timeFormatgeneral;/*时间文件夹格式:fixedm.dd…,d的个数取决于timePrecision;scientific:科学计数法;general:科学计数法,指数小于-44*/timePrecision6;runTimeModifiabletrue; //在求解过程中是否允许修改以上参数Discretisationandlinear-solversettings用户可以在system目录下fvSchemes词库中指定选择有限体积离散法。用户可以在fvSolution词库(同在system目录下)中指定线性方程求解器规范、限差和其他算法控制。用户可以自由的查看这些词库类,但是在它们的入口函数中,我们目前只需要掌握fvSolution词库中PISO子词库下的pRefCell和pRefValue。腔体为封闭系统,用的是相对压力(是压力范围而不是绝对值。在这种情况下,求解器在pRefCell单元中通过pRefValue设置一个相对值,在该实例中都设为0。改变其中任何一个的值都会改变绝对压力场,而不会改变相对压力场或速度场。fvSolution文件如下:solverssolvers{p{solver PCG;preconditioner DIC;tolerance relTol 0;//压力采用预条件共轭梯度法(主要求解对称矩阵)Cholesky//公差//相对公差}U{solversmoothertolerancerelTolsmoothSolver;symGaussSeidel;1e-05;0;}}PISO{nCorrectors2;nNonOrthogonalCorrectors0;pRefCell 0;pRefValue 0;//修正次数//非正交修正次数//压力参考单元的编号//压力参考值}ddtSchemes{default}ddtSchemes{default}//非稳态格式Euler;//默认采用欧拉离散gradSchemes{}divSchemes{defaultdiv(phi,U)}none;Gausslinear;//散度的离散(必须指定没有默认值)//对流项离散,高斯理论,采用线性插值defaultGausslinear;//梯度离散采用高斯方法,线性插值grad(p)Gausslinear;//压力的梯度离散laplacianSchemes{default Gausslinearorthogonal;//拉普拉斯项离散,必须指定}interpolationSchemes{default linear; //默认线性插值}snGradSchemes{defaultorthogonal;//梯度法向分量//默认正交}fluxRequired{defaultno;//是否计算通量p};//压力需要计算,因为需要利用压力通量修正速度查看网格在实例运行前,最好查看一下网格以检查是否有错。用户可通过OpenFOAM提供的后处理工具paraFoam查看网格,其启动方式为,在终端案例目录下输入:也可以使用可选参数-case来指定案例目录从而启动paraFoam:ParaView6.1PipelineBrowserParaView已经打开了cavity案例模块cavity.OpenFOAM。在点击Apply按钮前,用户需要从MeshParts面板上选择一些几何结构。因为该案例很小,用户可以选择MeshParts标题下的所有选项,这样就可以自动检查各个面板ApplyParaView中。之后打开Display面板,其控制着所选模块的可视化重现。在Display面板中,用户需要执行的操作如图2.3(1)设置oor为odoor(2)点击etoidoor选择适当的颜色,如黑色(对于白色背景(3)在le面板中,epresenaon项选择refrae。背景颜色可以在顶EditViewSettings...来设置。用户启动ParaView时,尤其是第一次,必须能够熟练地操作(见6.1.5节。特别的,该二维案例应进行如下设置:打开Edit—ViewSettings窗口,在General面板中必须选择UseParallelProjection,在Annotation窗口中可选择性地勾选OrientationAxes,也可以通过鼠标拖曳来移动。求解与所有UNIX/Linux可执行软件一样,OpenFOAM的应用程序可以按以下两种方式运行:前台程序,shell要等到其命令结束之后才可以执行其他命令;后台程序,shell不需要等待其结束就可以执行其他命令本案例中使用前台程序的方式运行icoFoam。icoFoam求解器的执行方式,一是可以进入案例目录,在命令提示符处输入:二是使用可选参数-case来指定案例目录:终端窗口会显示程序的进程,包括当前时间,最大库朗数,所有场的初始值及最终值。后处理时间目录中生成结果文件后,就可以用paraFoam来查看。回到paraFoam窗口,并且选择cavity.OpenFOAM模块的Properties面板。如果案例模块的窗口面板在任何时刻都不能正常显示,则应检查cavity.OpenFOAM是否调为高亮蓝色;旁边的eye按钮是否已经打开。为了得到最终的数据,首先将运行时间调至0.5s。如果打开ParaFoam时求解器还在运行,那么时间目录中的输出数据不会自动加载到Paraview中,此时在Properties窗口中单击RefreshTimes,ParaView中。Isosurfaceandcontourplots为查看压力,用户应该打开Disply面板,因为它控制着所选模型的可视化表现。为绘制一个简单2.4Style面板中,RepresentationSurfaceColor(p)RescaletoDataRanget=0.5sVCRControls或者CurrentTimeControls(位于ParaView窗口顶部菜单下方的工具栏中,见图6.4)将时间设为0.5,压力场如预期一2.5所示。通过点图标(。p,压力场在各个单元间内插,从而得到连续的流场。相反的,如果用户选择单元图标,在每个单元上就是一个单独的压力值,所以每个单元都由单一的颜色表示而没有梯度。ActiveVariableControlsToggleColorLegendVisibilityView菜单选择ShowColorLegend,即可调出颜色棒图。点击ActiveVariableControlsDisply窗口中Color面板中的EditColorMap按钮,用户就可以设置颜色棒图特性的范围,比如文字大小,字型选择及尺度计数形式等。通过鼠标拖动可以改变颜色棒图在图像窗口的位置。ParaView(彩虹色。ParaViewColorScaleEditor中选择hoosereset(初调ueoedanbowOKMakeDefaultParaView一直采用这种颜色色棒。如果用户旋转图像,可以发现整个几何表面的都按压力上色了。为产生真实的等值线,用户首sc(切片ice6.1..1节描述。切割面中心在(0.05,0.05,0.005),垂直线设为(0,0,1)。一旦产生了切割面,通过使用6.1.6节Contourfilter来产生等值线。VectorplotsSlice及Contourfilters。PipelineBrowserPropertiesDelete,从而整体PipelineBrowsereye按钮来使其处于不工作状态。ecorlph的数据,如节所述。在PipelineBrowser中使cavity.OpenFOAM模块高亮,选择Filter->Alphabetical->CellCentersApply。在peinerowser中使eners高亮,然后在ler->Aphabecal菜单中选择Gph(点符,则Properties窗口应该如图2.6所示,在Properties面板中,vectors项自动确定为速度场U,因为它是目前唯一的矢量场;ScaleMode默认为速度的VectorMagnitude,但是由于我们想看到贯穿整个区域的速度,应该选择off,SetScaleFactor为0.005如白色。用户应该根据速度大小用颜色标识图像,通过在Disply面板中设置ColorbyU来控制,也EditColorMapShowColorLegend(图例2.7所示,在图中,大写的Timesomanfons是在ooreendAuomacabelormatabelormat文字框中输入%-#6.2f2ViewSettingsGeneral面板中设置背景节描述。Streamlineplots同样的,在ParaView中继续后处理之前,要退出之前所描述的矢量绘制等模块,现在绘制速度的流线(6.1.8节)PipelineBrowsercavity.OpenFOAMFilter->StreamTracerProperties2.8所示进行设置。Seedtype选择LineSource,并将其指定为垂直于几何中心的直线,即点(0.05,0,0.005)到点(0.05,0.1,0.005)的直线(注:流线的原点在指定的直线上,即所绘制的流线只包含经过该直线的部分,因此指定一条z向并穿过几何体中心的直线可以显示XY平面内的所有流线。图中所使用的参数为:原点的Resolution为21;MaxPropagation为Length->0.5;StepLengthCellLength->0.01;IntegrationDirectionBOTH。IntegratorType默认使用Runge-Kutta2。ler->eNun.des6;Radius0.0003;Radiusfactor10Apply2.9所示。增大网格分辨率(密度)Increasingthemeshresolution然后对比细网格与粗网格的求解结果。Creatinganewcaseusinganexistingcase根据cavity创建一个名为cavityFine的新案例,需要复制cavitycavity相同的目录下创建一个新的案例文件,如:cdcavitycavityFinecavityFine案例:cp-rcp-rcdCreatingthefinermeshblockMesh增加网格单元数。打开blockMeshDictblock的指定信息。blocks关键词下的列表中指定了其参数。Block定义的句法结构见节的完整描述;在该阶段只需要知道hex后面首先是块顶点的列表,然后是是每个方向上单元数量的列表。最初在cavity案例中设为(202040401bocesh将粗网格映射(Mapping)到细网格mapFields应用程序能够将一个给定几何结构的场映射到另外一个几何结构的相应场中,在我们的例子中,认为流场是连续的,因为源场和目标场的几何结构、边界类型或条件都是恒定的。在该例子中执行mapFields-consistent命令行。目标案例的controlDict文件中的startFrom/startTime指定了开始时间,从对应的时间目录(也就是结果被映射到的地方)中读取mapFields映射的流场数据。在本例中,我们要将粗网格(在cavity案例中)的最终结果映射到细网格(在cavityFine案例中。由于这些结果存储在cavity案例的文件0.5controlDictstartTime0.5。现在案例已准备好运行mapFields了,输入mapFields-help可以看到mapFields要求指定源案例目conssent选项(caFineSource:"..""cavity"Source:"..""cavity"Target:".""cavityFine"CreatedatabasesastimeCase :../cavitynProce:1Sourcetime:0.5Targettime:0.5CreatemeshesSourcemeshsize:400Targetmeshsize:1600Consistentlycreatingandmappingfieldsfortime0.5Creatingmesh-to-meshaddressing...Creatingmesh-to-meshaddressing...Overlapvolume:0.0001CreatingAMIbetweensourcepatchmovingWallandtargetpatchmovingWerpolatingpinterpolatingUEndControladjustments为保持库朗数小于1,由于所有单元的尺寸都减半了,所以时间步长必须减半(见节所述,即conroDct文件中deaT设为0.005。流场数据输出时以固定数目的时间步长为间隔。现在我们以固定时间为间隔。在controlDict文件中的writeControl关键词下,我们不再使用timeStep(以固定数目的时间步长作为间隔runTime(以固定的运行时间作为间隔用户应该指定每0.1输出一次,因此应设置writeInterval为0.1。最终,由于案例是在粗网格结果上开始的,只需要运行很短的时间就能达到稳态。所以endTime设为0.7s。确保这些设置正确并保存文件。Runningthecodeasabackgroundprocess用户应该体验一下后台运行icoFoam,将终端输出内容存储到一个logcavityFine目录下,执行:Vectorplotwiththerefinedmesh用户可以在ParaViewPipelineBrowser中一个新的模块。当在ParaView中打开一个新的案例时有一个小的不便,因为有一个前提,所选数据是一个带有扩展名的文件。但是在OpenFOAM中,每个案例存储在指定目录结构的大批没有扩展名的文件中,paraFoam程序自动运行的结果,就是产生一个带有扩展名.OpenFOAM的空白文件,因此,cavitycavity.OpenFOAM。然而,如果用户希望在ParaView中直接打开另一个案例,就需要创建这样一个空白文件。例如,cavityFine案例,通过输入下列命令来创建该文件:cdFileOpencavityFine.OpenFOAM,cavityFine案例可以加载到ParaView中。用户现在可以在ParaView中由细网格绘制向量图。同时激活两个案例glyph图像进行对比。Plottinggraphs用户也许希望通过抽取一些速度标量(scalarmeasures)及沿着穿过区域的轴线绘制2维图像来foamCalc中。它是一个独特的应用程序,其执行方式为:>>foamCalcxxxxSelectingcalcTypexxxxunknowncalcTypetypexxxx,constructor>>foamCalcxxxxSelectingcalcTypexxxxunknowncalcTypetypexxxx,constructornotinhashtableValidcalcTypeselectionsare:8(randomisemagSqrmagGradaddSubtractdivmaginterpolatecomponents)components及magcalcTypes提供有用的速度标量。当在案例如cavity上运行“foamCalccomponentsU”时,它从每个时间目录中读取速度矢量场,在相应的时间目录中,输出标量场Ux,Uy,Uz分别代表速度的,zfoaCacagU”输出一个标量场maU到每个时(anude。用户可以在cavity及cavityFinecomponentscalcTypefoamCalc。例如,对于cavitycavityfoamCalc:cdU单独的分量可以在ParaView中绘制成图。绘制过程快速、方便,并且可以很好地控制标签和格式,所以输出的结果十分标准。但是为发表图像,用户也许更想要原始数据,然后用专门的绘图工gnuplot或Grace/xmgrsample6.5节和2.2.3节。Ux,Uy及UzParaView中。为此,在所工作的基本模块cavity.OpenFOAMPropertiesRefreshTimes按钮。单击应用使新的场加载到ParaView中,将出现在VolumeFields必要的话再次点击Apply。另外,如果在MeshParts面板上选择了boundaryregions,边界上的数据就MeshParts面板上的边界区域,即movingWall,fixedWall及frontAndBack,然后单击应用。现在为了在ParaView中显示图像,用户应该选择所感兴趣的模块,例如cavity.OpenFOAM,Filter->DataAnalysisPlotOverLine3DView窗口旁边打开了一个新的XYPlot窗口,创建了一个ProbeLine模块,在其中用户可以指定Properties面板中线条的终点。在Point1和Point2(0.05,0,0.005)到(0.05,0.1,0.005)Resolution100。XYPlotDisplayAttributeMode为PointData,XAxisDataUseDataArray,arclengthx轴代表了与腔体底部的距离。面板中要显示的场。从显示的标量场列表中可以看到,默认情况下矢量场的大小和分量都可以选择,如U:x,因此没有必要使用foamCalc创建Ux。不过,用户应当取消Ux(U:x)以外的所有选项。旁边一栏的色块可以指示线的颜色,双击即可修改。为了使格式化图像,用户应当修改LineSeries面板下的设置:panel,namelyLineColor,LineThickness,LineStyle,MarkerStyleandChartAxes。也可以单击XYPlot左上角的图标进行设置。举个例子,第三个按钮可进入ViewSettings窗口,从中可以设置各轴的标题,轴标题的字体、颜色和排列,轴范围的一些选项以及轴标签是线性的还是对数的。图2.11是用ParaView制作的图像。用户可以制作各种希望得到的图像。图2.11的坐标轴所使用的选项为:标准符号类型,指定轴的范围;标题SansSerif12号字体。激活Display窗口的EnableLineSeries按钮,从而使图像显示一系列的点而不是一条线。注意,如果按钮呈现灰色不可用状态,可以通过选择,然后取消选择LineSeries的选项来使之变为可用。选中EnableLineSeriesLineStyleMarkerStyle都可根据需要调整。网格分级介绍Introducingmeshgrading真实解与假设的数据模型在形式上具有较大差别时,求解结果的误差会更加明显。举个例子,当真实解为线性形式时,基于单元参数线性变化的数据模型只能得到确定的结果。当真实解最大限度地偏离线性形式时,斜率的变化量也达到最大值,误差也就达到最大。误差随单元尺寸一块儿减小。设置问题之前应对解决形式有个直观的认识。这样才有可能预见哪些地方的误差最大,使网格分级(细化cay以网格应该分得更小一些。在使用相同数量的单元的情况下,可以获得更高的准确度,而不会增大计算负担。盖驱动腔体问题将使用朝向壁面分级的20x20的网格,将节细网格的结果映射到分级网格中以作为初始条件。将分级网格的结果与先前的网格进行对比。由于blockMeshDict文件中的更改非常重要,$FOAM_RUN/tutorials/incompressible/icoFoam中提供了本节用到的案例cavityGrade,。Creatingthegradedmesh由于区域的上下左右需要不同的网格等级,此处网格需要分为4块。网格的块结构如图2.12所示。用户可参考cavityGrade/constant/polyMesh目录下的blockMeshDict文件,为了保持完整,blockMeshDict文件中的关键词也列在后面。现在每个块在x和y方向均有10个单元,最大单元和2。convertToMeters0.1;convertToMeters0.1;vertices((000)(0.500)(100)(00.50)(0.50.50)(10.50)(010)(0.510)(110)(000.1)(0.500.1)(100.1)(00.50.1)()(10.50.1)(010.1)(0.510.1)(110.1));blocks(hex(01439101312)(10101)simpleGrading(221)hex(125410111413)(10101)simpleGrading(0.521)hex(347612131615)(10101)simpleGrading(20.51)hex(458713141716)(10101)simpleGrading(0.50.51));edges();patches(wallmovingWall((615167)(716178))wallfixedWalls((312156)(09123)(01(01109)(121110)(251411)(581714))emptyfrontAndBack((0341)(1452)(3674)(4785)(9101312)(10111413)(12131615)(13141716)));mergePatchPairs();//*************************************************************************//熟悉blockMeshDict文件之后,用户就可以通过命令行执行blockMesh了。使用paraFoam可以2.1.2节相同。Changingtimeandtimestep靠近顶盖的速度最大,单元最小,则最大的Co数产生于顶盖附近,原因见节所述,因此很有必要估计顶盖附近的单元尺寸,以便计算合适的时间步长。计算单元尺寸。长度为l的方向上,有n个单元,最后一个单元与第一个单元之间的比值为R,最小单元的尺寸δxs为:

r1

(2.5)r为相邻单元尺寸之比:

R

s 1rRn1,R1

(2.6) n

(2.7)对cavityGrade案例,在每个块中沿各个方向的单元数为10,最大最小单元比为2,块高宽为0.05m,因此最小的单元长度为3.45mm(l=0.05m,r=2^1/9=1.08,a=R=2),从公式2.2可知,为使Co<1,3.45sdeaT减小为2.5s=文件。startTimecavityFine0.7cavitycavityFine在所指示的运行时间内收敛较好,可以设置cavityGrade0.1sendTime0.8.映射流场如mapFields将cavityFine的最终结果映射到cavityGrade网格上,进入:cd现在从案例目录运行icoFoam,并且监视时间信息。查看该案例的收敛结果并通过后处理工具节所描述。增加雷诺数之前所有案例的雷诺数都为10,这个数非常小很快产生稳定解,在腔体底部拐角处仅有很小的二次漩涡(seconaryorices。现在增加雷诺数到100,此时需要较长时间达到收敛(conee,cavitycavitycavityHighRecdcp-r前处理cavityHighRetransportPropertiesRe10倍,因此动力粘度要变为原来的1/10,即1*10-3m2s-1。从cavity案例结束处重新开始运行该案例。为此,设置startFrom关键词为latestTimeicoFoam提取存储在最近时刻文件(也就是0.5)中的初始数值,endTime2s。运行代码在案例目录下运行icoFoam,查看运行时间信息。当在后台运行时,后面的UNIX命令会非常有用。nohup:使发出命令的用户注销后,命令仍然能够运行nice:改变内核调度程序中任务的优先权,其值为20代表最高优先权,19次之。举个例子,如果用户想要在一台远端机器上运行案例而不想要实时监控,这样就需要在机器上给它一个低的优先权,此时使用nohop命令,就可以实现用户注销这在运行的远端机器,而任务却nice19。对于本案例,可以执行如下命令:cd-n19>log&Time=1.43CourantNumbermean:0.221921max:0.839902smoothSolver:SolvingforUx,Initialresidual=8.73381e-06,Finalresidual=8.73381e-06,NoIterations0smoothSolver:SolvingforUy,Initialresidual=9.89679e-06,Finalresidual=9.89679e-06,NoIterations0DICPCG:Time=1.43CourantNumbermean:0.221921max:0.839902smoothSolver:SolvingforUx,Initialresidual=8.73381e-06,Finalresidual=8.73381e-06,NoIterations0smoothSolver:SolvingforUy,Initialresidual=9.89679e-06,Finalresidual=9.89679e-06,NoIterations0DICPCG:Solvingforp,Initialresidual=3.67506e-06,Finalresidual=8.62986e-07,NoIterations4timestepcontinuityerrors:sumlocal=6.57947e-09,global=-6.6679e-19,cumulative=-6.2539e-18DICPCG:Solvingforp,Initialresidual=2.60898e-06,Finalresidual=7.92532e-07,NoIterations3timetimestepcontinuityerrors:sumlocal=6.26199e-09,global=-1.02984e-18,cumulative=-7.28374e-18ExecutionTime=0.37sClockTime=0sTime=1.435CourantNumbermean:0.221923max:0.839903smoothSolver:SolvingforUx,Initialresidual=8.53935e-06,Finalresidual=8.53935e-06,NoIterations0smoothSolver:SolvingforUy,Initialresidual=9.71405e-06,Finalresidual=9.71405e-06,NoIterations0DICPCG:Solvingforp,Initialresidual=4.0223e-06,Finalresidual=9.89693e-07,NoIterations3timestepcontinuityerrors:sumlocal=8.15199e-09,global=5.33614e-19,cumulative=-6.75012e-18DICPCG:Solvingforp,Initialresidual=2.38807e-06,Finalresidual=8.44595e-07,NoIterations3timestepcontinuityerrors:sumlocal=7.48751e-09,global=-4.42707e-19,cumulative=-7.19283e-18ExecutionTime=0.37sClockTime=0s高雷诺数流动查看paraFoam中的结果,显示速度矢量。拐角处的二次漩涡在尺寸上有或多或少的增加。用户可以通过减小黏度进一步增大雷诺数,然后回到案例。漩涡数量增多,为了求解更加复杂的流动模式,漩涡附近的网格密度也需要增大。另外,随着雷诺数增大,达到收敛所用的时间也就增大。endTime以确保达到收敛。当流动进入紊流状态,会出现结果稳定性问题,单纯增加空间和时间上的网格密度已经不能达到目的了。实际上,许多工程问题的雷诺数非常高,直接求解紊流行为消耗很大。取而代之的方法是,使用RAS(Reynolds-averagedsimulation,平均雷诺数模拟)紊流模型来求解主要的流动行为和起伏状态。本节将使用包含壁面函数(wallfunctions)的标准k−ε模型,用于解决雷诺数为104的盖驱动kurbuentneiceneyεurbuentdsspaonrae。OpenOAM的求解器psooam前处理进入$FOAM_RUN/tutorials/incompressible/pisoFoam/rasblockMesh产生网格,当使用带有壁面函数的标准k−ε模型时,没有必要使网格朝向壁面分级,这是由于近壁单元的流动已经建模,而不用区分。dimensions[02-10000];internalField uniform0;boundaryField{movingWall{dimensions[02-10000];internalField uniform0;boundaryField{movingWall{typevalue}fixedWalls{typevalue}frontAndBack{type}nutWallFunction;uniform0;nutWallFunction;uniform0;empty;} 本案例中movingWall和fixedWalls使用标准壁面函数,由nutWallFunction关键词指定,其他nutRoughWallFunction指定。用户现在应该打开0/k及0/epsilon文件,检查边界条件。边界为壁面的条件下,ε指定为epsilonWallFunction边界条件,kkqRwallFunction边界条件,后者是一个通用的边界条件,可以提供给任何包括紊流动能类型的流场,例如k,q,或者雷诺应力R。k及ε的初始值由一个估计的波动Ul来指定,k及ε由下列公式定义:2C0.75k1.5

(2.8) l

(2.9)其中Cμ是k−ε模型的常系数,等于0.09,对笛卡尔坐标,k为:,Uy'^2Uz'^2x,y,z方向的分量。假设初始紊流是各向同性5%,l等于盒子宽度(0.1m)20%,k、ε为:这样k、ε的初始条件就确定了,U及p的初始条件和之前一样,分别为(0,0,0)及0。simulationType RASModel;//*************************************************************************//紊流模型包括一系列的方法,例如RAS或者OpenFOAM.提供的大涡模型(LES,large-eddysimulation)constant/turbulencePropertiessimulationType RASModel;//*************************************************************************//simulationType的选择有laminar,RASModel和LESModel,在本案例中选择RASModel,RAS模型选项在constant/RASPropertiesRASModel入口从表3.9所列的一长串可用模型中选择紊流模型。用户应当选择kEpsilon模型,这是标准k−ε模型;用户还需确保turbulence状态为on。(coefficients)printCoeffs为on,其名称为模型名加Coeffs,例如,kEpsilon模型的案例中的kEpsilonCoeffs。模型(例如kEpsilon)RASProperties文件的子项中,然后调整其值。用户下一步要在transportProperties中设置层流动力粘度,为使Re=10^4,根据方程2.1对Re定义,则动力粘度为10^-5。controlDictstartTime,stopTime,deltaTwriteInterval,设置deltaT0.005CoendTime=10s。运行代码进入案例目录并输入“pisoFoam”来执行,在该案例中,粘度很低,紧贴移动顶盖的边界层(boundary在100个时间步长之后,单元速度明显接近顶盖速度,二者相差达到极限值0.2ms^-1,因此最大Co数比0.2大一点。通过增加时间步长使Co数更接近1,从而增加求解时间的做法是很明智的,因此重deltaT0.02s,并且在这种情况下,设置startFromlatestTime,这指示pisoFoam从最后时刻文件读取起始数据,也就是说10,endTime应该设为20s,因为运行收敛远比层流情况要慢。重新运行,监控求解的收敛。查看串行时间步长的结果,看求解结果是否收敛到稳态,或者也许达到周期震荡状态。在后一种情况下,也许无法达到收敛,但这并不意味着结果不准确。改变案例几何结构用户也许希望改变案例的几何结构,运行一个新的模拟。也许需要保持一部分或所有原始结果作为新模拟的开始工况。这有点复杂因为原始解的流场与新案例的并不一致。但是mapFields应用程序可以映射不一致的流场,几何形状或边界类型都可以。convertToMeters0.1;vertices((000)(0.600)(00.40)(0.60.40)convertToMeters0.1;vertices((000)(0.600)(00.40)(0.60.40)(10.40)(010)(0.610)(110)(000.1)(0.600.1)(00.40.1)()(10.40.1)(010.1)(0.610.1)(110.1));blocks(hex(0132891110)(1281)simpleGrading(111)hex(236510111413)(12121)simpleGrading(111)hex(347611121514)(8121)simpleGrading(111));edges();patches(walllid((5(513146)(614157))wallfixedWalls((08102)(210135)(715124)(412113)(31191)(1980))emptyfrontAndBack((0231)(2563)(3674)(891110)(10111413)(11121514)));mergePatchPairs();//*************************************************************************//用blockMesh产生网格,边界设置与之前cavity案例一样,为在描述场映射过程清晰起见,上壁面边界(cavitymovingWall边界)lid。在非一致映射中,不能担保所有的场数据都能从源案例中映射过来。残留的数据一定来自目标案例自身的流场文件。因此,在映射之前,流场数据一定要存在于目标案例的时间文件中。在cavityClipped案例中,设映射开始时间为0.5s,这是由于controlDict中startTime设为0.5s,因此0:cd0在映射数据之前,用户应该查看几何形状及0.5s的流场。patchMap(lidmovingWall);现在要从cavity中映射速度及压力场到cavityClip

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论