k ?ε 模型;用户还需确保湍流计算是开启的。
每个湍流模型的系数存储在各自的代码中,有一系列的默认值。设置printCoeffs 为on,
当模型在运行时间调用时,就使默认值输出为标准输出,也就是说终端,系数作为子目录输出,文件名为模型名字带有Coeffs的附加字样,例如,在 kEpsilon 模型案例中的
kEpsilonCoeffs 。模型(例如 kEpsilon )系数可以修正,通过可选地包括那个子目录在 RASProperties 目录中,然后相应地调整值。
用户下一步要在transportProperties 中设置层流动力粘度,为使Re=10^4,根据方程2.1对Re定义,则动力粘度为10^-5。
最后,需要早controlDict文件中设置 startTime, stopTime, deltaT 以及writeInterval ,设置 deltaT为0.005以满足Co数研制,设置endTime=10s。 2.1.8.2 运行代码
进入案例目录并输入“pisoFoam ”来执行,在该案例中,粘度很低,紧贴移动顶盖的边界层很薄,顶盖附近的单元相对较大,所以单元中心的速度远小于顶盖速度。事实上,在100个时间步之后,很明显地与顶盖相邻的单元速度达到一个上限大约为0.2ms^-1,因此最大Co数没有超过0.2很多。通过增加时间步使Co数更接近1,从而增加求解时间的做法是很明智的,因此重设deltaT为0.02s,并且在这种情况下,设置 startFrom 为latestTime ,这指示 pisoFoam 从最后时刻文件读取起始数据,也就是说10.0.endTime 应该设为20s,因为运行
收敛远比层流情况要慢。如前重新运行,监控收敛解。查看串行时间步的结果,作为结果的进步,看解是否收敛到稳态,或者也许达到周期震荡状态。在后一种情况下,也许无法达到收敛,但这并不意味着结果不准确。
2.1.9 改变案例几何结构
用户也许希望改变案例的几何结构,运行一个新的模拟。也许需要保持一部分或所有原始
结果作为新模拟的开始工况。这有点复杂因为原始解的流场与新案例的并不一致。但是mapFields应用程序可以映射不一致的流场,几何形状或边界类型都可以。
作为是示范,进入 icoFoam目录中的 cavityClipped 案例,这由标准cavity几何结构组成,但是在腔体的底部右端去除了一个边长为0.04m的正方形,这是根据blockMeshDict形
成的 :
convertToMeters 0.1;
vertices (
(0 0 0) (0.6 0 0) (0 0.4 0) (0.6 0.4 0) (1 0.4 0) (0 1 0) (0.6 1 0) (1 1 0)
(0 0 0.1) (0.6 0 0.1) (0 0.4 0.1) (0.6 0.4 0.1) (1 0.4 0.1) (0 1 0.1) (0.6 1 0.1) (1 1 0.1) );
blocks (
hex (0 1 3 2 8 9 11 10) (12 8 1) simpleGrading (1 1 1) hex (2 3 6 5 10 11 14 13) (12 12 1) simpleGrading (1 1 1) hex (3 4 7 6 11 12 15 14) (8 12 1) simpleGrading (1 1 1) );
edges ( );
patches (
wall lid (
(5 13 14 6) (6 14 15 7) )
wall fixedWalls (
(0 8 10 2) (2 10 13 5) (7 15 12 4) (4 12 11 3) (3 11 9 1) (1 9 8 0) )
empty frontAndBack (
(0 2 3 1) (2 5 6 3) (3 6 7 4) (8 9 11 10) (10 11 14 13) (11 12 15 14) ) );
mergePatchPairs ( );
// ************************************************************************* //
用blockMesh产生网格,边界设置与之前cavity案例一样,为在描述场映射过程清晰起见,上壁面边界重命名为lid,原始的cavity中为movingWall 边界。
在非一致映射中,不能担保所有的场数据都能从源案例中映射过来 。残留的数据一定来
自目标案例自身的流场文件。因此,在映射之前,流场数据一定要存在于目标案例的时间文件中。在cavityClipped 案例中,设映射开始时间为0.5s,这是由于controlDict 中startTime 设为0.5s,因此用户需要复制初始场数据到该目录下,例如,从时刻0:
cd $FOAM RUN/tutorials/incompressible/icoFoam/cavityClipped cp -r 0 0.5
在映射数据之前,英乎应该查看几何形状及0.5s的流场。
现在要从cavity中映射速度及压力场到cavityClipped 中,由于映射是不一致的,需要编辑位于system目录的mapFieldsDict 文件,该文件包括两个关键词输入:patchMap 及 cuttingPatches 。 patchMap列表包括从源场到目的场的边界映射,用于当用户需要在目标场中集成源场中相应边界值时。 在cavityClipped 中,我们希望从cavity的movingWall 集成lid处的边界值,所以必须设置patchMap 为: patchMap
(
lid movingWall
);
cuttingPatches列表包括目标边界的名字,它的值从源内部场映射过来,目标边界通过该内
部场剪切。在这种情况下,包括fixedWalls 来显示修改(插值)过程:
cuttingPatches (
fixedWalls );
现在用户从cavityClipped 目录运行mapFields : mapFields ../cavity
用户可以观察映射场如图2.13,正如所期望的,从源案例继承了边界值,但是实际上我们希望在fixedWalls 边界上重设速度为(0,0,0)。编辑U场,进入fixedWalls 边界,流场由nonuniform改为 uniform (0, 0, 0) ,nonuniform 是一系列要求整体删除的值,现在用icoFoam运行案例。
2.1.10 后处理修正的几何结构
速度图可以如正常案例一样产生,为比较最初及最后结果,首先是在时刻0.5s之后是时刻0.6s,另外,提供了几何结构的轮廓,它要求在产生2D案例时要小心。用户应从Filter菜单选择Extract Block ,在Parameter 面板,高亮所感兴趣的边界,名为 lid及 fixedWalls ,点击应用,在Display面板选择Wireframe来显示几何结构的这些项。图2.14显示了黑色边界,并且显示了在修改的几何形状底部拐角形成的漩涡。
6.1.5 视图操作
这节描述设置和操作paraFoam中物体视图的动作。
6.1.5.1 View settings
View settings 在Edit菜单中选择,打开了Render View Options 窗口,有3项:General, Lights 及
Annotation(注释)。 General 面板包括一般在启动时都需要设置几项: ? the background colour,:此处白色通常是输出图像的首选项; ? Use parallel projection :是CFD的常用选择,尤其是2D情况;
Lights 面板包括Light Kit 面板中的详细灯光控制。一个单独的Headlight 面板控制图像的直接亮度。用强度为1的白色灯光检查Headlight 按钮,似乎能有助于产生强光颜色的图像,比如,用isosurface 。 Annotation 面板包括图像注释选项。Orientation Axes 特性控制着图像窗口的轴标,比如,设置轴标x,y,z的颜色。
6.1.5.2 General settings
General settings 从Edit菜单选择,打开了一个general Options 窗口,其中有General和Render View 菜单选项。
General面板控制paraFoam的默认行为。特别地,有一个Auto Accept 按钮使paraFoam自动接受改
变而无需点击Properties 窗口的Apply按钮。对于大型案例,一般不选择此项:用户一般不希望图像在他做的每个选择之间重新显示,而可以一次整个的重显。
Render View面板包括3个子项 :General, Camera 和 Server.。General 面板包括详细水平(LOD) ,当进行操作时,控制着图像的显示比,比如:平移,调整大小,旋转;通过滑块降低其水平,使具有大量单元的实例可以在操作过程中快速重显。
Camera 面板包括2D和3D移动的控制设置。通过用鼠标联合Shift-和Control-keys,呈现给用户一个旋转,平移和变焦控制的列表。该列表可以编辑成适合用户的情况。
5.3共用程序blockMesh生成网格
本节描述OpenFOAM提供的网格生成共用程序:blockMesh, blockMesh共用程序通过分级及曲
线边界产生参量网格。
由实例中constant/polyMesh 目录下的blockMeshDict 文档文件生成网格。 blockMesh读取这个文档,生成网格并将网格数据输出到同一目录下的points,faces,cells及boundary文件中。
源自fixedValue的类型 movingWallVelocity pressureInletVelocity 指定的数据 代替垂边界值的法线,所以穿value 过边界的流量为0 当入口p已知时,根据垂直于value 边界的流量估计U pressureDirectedInletVeloc当入口p已知时,根据入口方Value ity 向的流量计算U inletDirection surfaceNormalFixedValue 通过大小指定一个垂直于边界value 的向量边界条件;向量+ve指出区域(?) 总压p0 = p +1/2ρ|U|2;当U改变时,p相应的调整 p0 totalPressure turbulentInlet 源自fixedGradient /zeroGradient 的类型 基于平均值尺度计算波动变量 referenceField, fluctuationScale