提取流量包中的文件_OpenFOAM验证10 T型管流量分配

本博客通过OpenFOAM模拟T型管中的流量分配问题,详细介绍了设置过程,包括模型描述、OpenFOAM设置、结果分析等。经过计算和验证,得出的流量比与文献值接近,表明模拟结果准确。
摘要由CSDN通过智能技术生成

本验证案例利用OpenFOAM计算T型管中流量分配问题,并对计算结果进行验证。

验证文献:R.E. Hayes, K. Nandkumar, H. Nasr-El-Din, “Steady Laminar Flow in a 90 Degree Planar Branch”. Computers and Fluids, Vol 17, pp. 537-553, 1989.

1 模型描述

如下图所示的T型管道,几何尺寸L=3.0m, W=1.0m。

0303bfba66ee54929ee698c2d2e173f5.png

管内流动介质为空气Air,其密度为1 kg/m3,动力粘度0.003333 kg/m-s。空气从下方入口流入,其轴线速度满足雷诺数:

T型管的两个出口静压Ps均为0。

本算例使用simpleFoam求解器进行计算。也可以使用其他任何流动求解器(如icoFoam、pisoFoam、pimpleFoam等)进行计算。

2 OpenFOAM设置

2.1 准备文件

采用simpleFoam算例中的pitzDaily作为模板算例。采用以下命令准备文件。

cp -r /opt/openfoam8/tutorials/incompressible/simpleFoam/pitzDaily .
mv ptzDaily VM10
cd VM10

本算例为层流流动,删除多余的文件,最终文件夹组织结构如下图所示。

d9e043d00c7278d04c0866ab4991cf17.png

2.2 计算网格

本算例网格利用ICEM CFD进行生成。将网格文件VM10.msh放到算例文件夹中。

利用命令转换并检查网格:

fluentMeshToFoam VM10.msh
checkMesh

确保计算网格检查结果没有错误信息。如下图所示。

f1278b63d15c5570b79d1cc27c2025c2.png

本算例的boundary文件内容不需要修改。

2.3 设置介质属性与物理模型

1、momentumTransport文件

设置使用层流计算,文件内容如下所示。

FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object momentumTransport;
}
// * * * * * * * * * * * * * * //

simulationType laminar;

2、transportProperties文件

修改材料运动粘度为0.003333 m2/s,文件内容如下所示。

FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object transportProperties;
}
// * * * * * * * * * * * * * * //
transportModel Newtonian;
nu [0 2 -1 0 0 0 0] 0.003333;

2.4 设置边界条件与初始条件

1、p文件

p文件内容如下所示。

FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object p;
}
// * * * * * * * * * * * * * * * * * * * //

dimensions [0 2 -2 0 0 0 0];

internalField uniform 0;

boundaryField
{
INLET
{
type zeroGradient;

}
"(OUTLET1|OUTLET2)"
{
type fixedValue;
value uniform 0;

}

WALLS
{
type zeroGradient;

}
frontAndBackPlanes
{
type empty;
}
}

2、U文件

入口轴线上速度最大值为1 m/s,则该边界上平均速度为0.5m/s,这里采用codeFixedValue指定其充分发展速度条件。

算例中,。U文件内容如下所示。

FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions [0 1 -1 0 0 0 0];

internalField uniform (0.5 0 0);

boundaryField
{
INLET
{
type codedFixedValue;
value uniform (0 0.5 0);
name parabolicVelocity;
code
#{
// 下面三行为标准写法,一般不用修改
const fvPatch& boundaryPatch = patch();
const vectorField& Cf = boundaryPatch.Cf();
vectorField& field = *this;
// U_0为2倍的平均速度;p_ctr为中心点偏移量;p_r为半径
scalar U_0 = 1, p_ctr = 0, p_r = 0.5;

forAll(Cf, faceI)
{
field[faceI] = vector(0,U_0*(1-(pow(Cf[faceI].x()-p_ctr,2))/(p_r*p_r)),0);
}
#};

}
"(OUTLET1|OUTLET2)"
{
type zeroGradient;
}

WALLS
{
type noSlip;

}
frontAndBackPlanes
{
type empty;

}
}

2.5 求解控制

1、controlDict文件

修改controlDict文件,设置迭代步数为3000,文件内容如下所示。

FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * //
application simpleFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 3000; //指定迭代次数
deltaT 1;
writeControl timeStep;
writeInterval 100;
purgeWrite 3;
writeFormat ascii;
writePrecision 6;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable true;

2、fvSolution文件

文件内容修改为:

  FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * * * //

solvers
{
p
{
solver GAMG;
tolerance 1e-06;
relTol 0.1;
smoother GaussSeidel;
}

U
{
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-05;
relTol 0.1;
}
}

SIMPLE
{
nNonOrthogonalCorrectors 0;
consistent yes;
// 指定残差标准为1e-6
residualControl
{
p 1e-6;
U 1e-6;
}
}

relaxationFactors
{
equations
{
U 0.9;
".*" 0.9;
}
}

2.6 求解计算

采用pyFoamPlotRunner进行计算。注意事先安装好PyFoam

pyFoamPlotRunner.py --clear simpleFoam

计算在迭代995步后收敛到1e-6,计算残差曲线如下图所示。

3 结果分析

3.1 流场分布

  • 速度分布
c021dd690f1400b0551ff77352e92e52.png
  • 压力分布
faa7960f5dc518386388a0d7c307209a.png

3.2 统计出口流量

出口流量的统计可以使用postProcess进行获取。

输入以下命令分别获取边界INLET、OUTLET1及OUTLET2的流量:

postProcess -latestTime -func "flowRatePatch(name=INLET)"
postProcess -latestTime -func "flowRatePatch(name=OUTLET1)"
postProcess -latestTime -func "flowRatePatch(name=OUTLET2)"
  • 如下图所示,得到入口流量-0.0961673
edfca64f8d91b3ee9dae2113433d41b1.png
image-20201204205931853
  • 得到出口边界OUTLET1的流量为0.0111544
68e854d4e294ea40f69f145d6d38817b.png
  • 得到出口边界OUTLET2的流量为0.0850128
de3c1290408a8e62184d5e3c680b5837.png

出口边界OUTLET2与入口的流量比为:

而文献给出的流量比为0.887,误差较小。

3.3 利用ParaView统计流量

除了可以利用postProcess提取进出口流量外,还可以在ParaView中获取进出口流量。

  • 如下图所示,选择节点VM10.foam,属性窗口中选中所有的边界
e2df27bb356ff6317e4b43815798496d.png
  • 添加Calculator,定义变量flow_rate,实际上定义的是合速度,合速度对面积求积分可得到体积流量
1854956e9ba8a34b5abcc3e612ec9f0e.png
  • 选中Calculator1,选择菜单项Search...打开搜索对话框
e606211c8e94540062996141744bbd80.png
  • 输入Extract Block,如下图所示,选择使用按钮Extract Block
02bc00ba03a092556ff9e9fe608a4e61.png
  • 如下图所示选择INLET边界面
55251509b25df2b30c8c0e14629fc3c2.png
  • 添加Integrate Variables
68d49e47cc4a5fd59b360777671b272c.png
  • 如下图所示,可以看到入口体积流量为0.0961673
33f1650a361c446d6c4de6a114d3128b.png
  • 相同方式查看OUTLET1边界的体积流量为0.0111767
7d77e18477f0e3e6b0e53181087cb9ed.png
  • 相同方式查看OUTLET2边界的体积流量为0.08501

    99d75949223a8c782ab8d3591b0b3801.png

可以看到ParaView中统计得到的结果与前面postProcess得到的结果完全相符。


相关文件:

7673ef8484d199a6e4dd34f43438a0a7.png
提取码:dlyh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值