时间:2024-06-25 10:29
本文描述OpenFOAM中的初始条件与边界条件。
当使用CFD求解器来求解控制方程的近似解时,实际上求解的是一个初边值问题,这类问题在求解计算时需要输入适当的边界条件和初始条件。很明显边界条件和初始条件必须在物理上是真实的。边界条件是数值方法的必需部分,其将区域边界的信息告诉求解器。初始条件也是数值方法的必要组成部分,其定义了物理问题的初始状态。
1 边界条件边界条件(boundary condition,BC)可以分为三种主要类型:
Dirichlet边界:直接指定边界上待求物理变量的值Neumann边界:指定边界上物理量的法向梯度Robin边界:为上面两种边界的混合,既指定物理量的值,也指定梯度值在实际应用过程中,上面三种边界类型可以任选其中一个。
在OpenFOAM中定义边界条件涉及到的操作包括:
查找边界条件在域中的位置确定边界条件类型提供所需的物理信息边界条件的选择取决于:
几何考虑涉及到的物理问题边界条件所在位置能够提供的物理信息数值计算的考量如下图所示的计算区域中所包含的初始条件(IC)与边界条件(BC)。
图片
2 初始条件初始化条件(initial condition,IC)可以分为两类:
均匀(Uniform)的初始条件非均匀(Non-uniform)的初始条件可以从以下途径获取非一致的初始条件:
其他仿真计算得到的结果作为初始条件数学函数计算结果势流求解器计算的结果降阶模型计算的结果实验数据定义初始条件包括:
找到域中初始条件的位置确定初始条件类型提供所需的物理信息初始条件的选择取决于:
几何考虑涉及到的物理问题可用的的物理信息数值计算的考量对于初始条件,需要提供问题的初始信息或初始状态。此信息可以是均匀值,也可以是非均匀值。可以将初始条件应用到整个计算区域或计算区域中的某一独立区域。如下图所示。
图片
3 进出口边界关于进出口边界条件:
入口边界用于计算区域中预期会有流体流入的区域;但是当边界条件指定为速度分布时,入口可以允许流体流出压力边界条件不允许入口有流体流出速度入口主要用于不可压缩流动;压力与流量入口适合于可压缩与不可压缩流动相同的概念也适合于出口图片
关于零梯度边界与回流边界条件:
零梯度(zero gradient)边界条件从计算区域中通过外推得到物理量的值零梯度边界不需要任何信息。零梯度边界条件可用于入口,出口和壁面。回流(backflow)边界条件提供了一个通用的的流出/流入条件,对于存在回流的问题可以指定流入/流出条件。对于回流出口(backflow outlet),当通量为正(流出计算域)时应用Neumann边界条件(零梯度);当通量为负(流体流入计算域)将应用Dirichlet边界条件(固定值)。同样的概念适用于回流入口。图片
边界条件的一些组合非常稳定,而有些组合的可靠性较低,如入口处设置为速度和出口处设置为零压力梯度,这种组合由于静压不固定,此模拟最终将崩溃。
关于对称边界条件:
对称边界条件仅适用于平面。只有当几何形状和流场都对称时才可以使用对称边界。从数学上讲,设置对称边界条件等于该平面上的法向速度为零以及平面上所有变量的法向梯度为零。从物理上讲,它们等效于滑移壁面。关于边界条件与初始条件:
边界条件和初始条件在物理上必须是真实的边界条件定义不当可能会对计算结果产生重大影响初始条件与边界条件同等重要良好的初始条件可以提高算法的稳定性和收敛速度,另一方面,非物理初始条件可能会减慢收敛速度或导致发散需要为要求解的每个变量定义边界条件和初始条件设置正确的边界条件极其重要,但需要了解其中的物理原理需要对理论背景有所了解,才能设置正确的边界条件不要强制指定出口处的流量,对除压力之外的其他所有流动变量使用零法向梯度边界。求解器从计算域内部外推获取所需的信息注意出口处的反向流动(流入计算域的流动)和入口处的反向流动(反射波),它们需要特殊处理如果可能,选择流入和流出边界条件,使流动垂直于边界流入或流出在出口,仅对不可压缩的流动使用零梯度边界条件, 企业-福惠木麻类有限公司并且当确定流动已充分发展时与大气相连通的出口边界可以使用静压边界条件从大气环境中流入计算区域的入口边界可以使用总压边界条件(例如打开的窗户)质量流量入口在入口边界处产生均匀的速度分布指定压力的边界条件允许形成自然速度曲线边界条件和初始条件的所需值取决于要求解的方程以及所使用的物理模型, 企业-福洁木蔬菜有限公司例如:对于不可压缩和层流,企业-能利鸿棉类有限公司只需设置速度和压力即可。如果要解决湍流可压缩流,则需要设置速度,压力,温度和湍流变量。对于多相流,将需要为每个相设置基本变量。·如果进行湍流燃烧或化学反应,则需要定义组分,化学反应以及湍流变量最小化边界附近的网格偏斜度,非正交性,增长率和长宽比尽量避免在垂直于边界且在入口和出口附近的方向上出现较大的梯度。也就是说,使边界远离计算区域内扰动的位置4 OpenFOAM中的边界条件OpenFOAM中将边界类型区分为基本类型和数值类型量中。
对于基本类型边界:
基本类型的边界条件基于几何信息或处理器间通信halo边界基本类型边界条件是在路径constant/polyMesh中的boundary文件中定义的在生成或转换网格时会自动创建boundary文件将网格转换为OpenFOAM格式时,可能需要手动修改boundary文件,因为转换程序有可能无法识别原始网格的边界类型如果缺少基本类型边界条件或拼写错误,OpenFOAM会报告错误的位置和原因对于数值类型边界:
数值类型边界条件将物理量值分配给指定表面边界在路径0中的场变量字典中定义了数值类型边界条件当谈论数值类型边界条件时,厦门市富远贸易有限公司通常指的是Dirichlet,Neumann或Robin边界条件需要手动创建场变量字典(例如0/U,0/p,0/T,0/k,0/omega)如果缺少数值类型边界条件或拼写错误,OpenFOAM会报告错误的位置和原因下表所示的基本类型与数值类型是相同的:
基础类型数值类型constant/polyMesh/boundary文件0/U - 0/p - 0/T - 0/k - 0/omega等文件cycliccyclicAMIemptyprocessorsymmetrysymmetryPlanewedgecycliccyclicAMIemptyprocessorsymmetrysymmetryPlanewedge这些边界在OpenFOAM中成为约束边界(constraint patch)。要想找到这些边界的完整列表及源代码位置,可以进入路径$WM_PROJECT_DIR中,输入命令:
find . d -iname *constraint*
基本类型patch可以是OpenFOAM中可用的任何边界条件,从数学上将,可以是Dirichlet, Neumann或Robin边界条件。如下表所示:
基础类型数值类型constant/polyMesh/boundary文件0/U - 0/p - 0/T - 0/k - 0/omega等文件patchadvectivecalculatedcodedFixedValueepsilonWallFunctionfixedValueinletOutletmovingWallVelocityrotatingWallVelocityslipsupersonicFreeStreamtotalPressurezeroGradient… 等等基础边界wall定义为:
边界类型数值类型数值类型constant/polyMesh/boundary0/U0/pwalltype fixedValue;value uniform (0 0 0);zeroGradient此边界条件不包含在基本类型边界条件patch中,可以在此边界条件上使用专门的模型选项。
backflow出口边界,可以使用以下边界条件组合:
边界类型数值类型数值类型constant/polyMesh/boundary0/U0/ppatchtype inletOutlet;inletValue uniform (0 0 0);value uniform (0 0 0);type fixedValue;value uniform 0;inletValue关键字用于回流处理。·这种情况下,如果流体返回计算区域,将使用通过关键字inletValue设置的值。否则它将使用zeroGradient边界条件。
外部空气动力学计算中典型的边界条件如下表所示:
边界描述压力速度湍流场入口面zeroGradientfixedValuefixedValue出口面fixedValueinletOutletinletOutlet壁面zeroGradientfixedValue壁面函数对称面symmetrysymmetrysymmetry周期面cycliccycliccyclic空面emptyemptyempty滑移壁面slipslipslip壁面是可以为kqWallFunction, omegaWallFunction, nutkWallFunction等,如下表所示:
物理场壁面函数(高雷诺数)求解边界层(低雷诺数)nutnut-壁面函数fixedValue 0或一个较小值k,q,RkqRWallFunctionfixedValue 0或一个较小值epsilonepsilonWallFunctionzeroGradient或fixedValue 0或一个较小值omegaomegaWllFunctionomegaWallFunctionfixedValue 指定一个较大值zeta-fixedValue 0或一个较小值nuTilda-fixedValue 0或一个较小值nut壁面函数可以是:nutkAtmRoughWallFunction, nutkRoughWallFunction, nutkWallFunction, nutLowReWallFunction, nutURoughWallFunction, nutUSpaldingWallFunction, nutUTabulatedWallFunction, nutUWallFunction, nutWallFunction。
最后,记住基本类型边界条件的名称和数值类型边界条件的名称必须相同,否则OpenFOAM会给出错误提示,特别是如果要从其他格式转换网格时。另外在将名称分配给边界时,不要使用空格。
OpenFOAM®实现了许多边界条件。可以在以下目录中找到主要数值边界条件的源代码:$WM_PROJECT_DIR/src/finiteVolume/ fields/
湍流模型(壁函数)的壁边界条件位于以下目录中:$ WM_PROJECT_DIR/src/MomentumTransportModels/momentumTransportModels/derivedF vPatchFields/wallFunctions
要查找在OpenFOAM中实现的所有边界条件,请转到目录$WM_PROJECT_DIR并在终端中键入:
$> find . -type d -iname *fvPatch*$> find . -type d -iname *derivedFv*$> find . -type d -iname *pointPatch*
获取有关OpenFOAM®中所有可用边界条件的更多信息,可以阅读Doxygen文档,也可以通过以下链接在线访问文档:http://cpp.openfoam.org/v8/
5 boundary字典文件例如下面的模型边界:
图片
与之对应的constant/polyMesh/boundary文件内容如下所示:
// 这里的3指的是定义的边界数量3( // 指定了一个名为movingWall的边界 movingWall { // 边界类型为patch,基础边界 type patch; // 组成边界的网格面数量,通常不改 nFaces 20; // 组成边界的起始面编号,通常不改 startFace 760; } // 边界的名称可以任意取,不要有空格 fixedWalls { // 定义了一个wall边界,基础边界 type wall; nFaces 60; startFace 780; } frontAndBack { // 定义了一个empty边界 // 表示计算的是2D文件 type empty; nFaces 800; startFace 840; })6 0/U文件
例如下面的边界条件:
图片
其对应的0/U文件如下所示:
dimensions [0 1 -1 0 0 0 0];internalField uniform (0 0 0);boundaryField{ // 这里的边界名称必须与boundary中的一致 movingWall { // 指定边界类型为固定值 type fixedValue; // 指定入口速度向量 value uniform (1 0 0); } fixedWalls { type fixedValue; value uniform (0 0 0); } frontAndBack { // empty类型保持与boundary一致 type empty; }}7 0/p文件
如下面的边界条件组合:
图片
对应的0/p文件:厦门市富远贸易有限公司
dimensions [0 2 -2 0 0 0 0];internalField uniform 0;boundaryField{ // 必须与boundary文件中边界名称一致 movingWall { // 指定为零梯度边界 type zeroGradient; } fixedWalls { type zeroGradient; } frontAndBack { type empty; }}本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。