本案例利用OpenFOAM计算并验证压力梯度下两平面间库艾特流动。
重点演示内容:平移周期模型
”
本案例模拟两个平行板之间的粘性流动。其中底板保持静止不动,顶板以恒定速度3 m/s移动。沿板平行方向压力梯度为-12 Pa/m。如图所示。
计算采用2D周期模型,长1.5m,宽1 m。其中介质参数:密度1kg/m3,动力粘度1 kg/m-s。
采用边界条件为:
算例为层流流动,可以使用icoFoam算例cavity作为模板进行计算,也可以在simpleFoam中随便找个算例作为模板。
进入工作目录,并利用下面的命令准备文件。
cp -r /opt/openfoam8/tutorials/incompressible/icoFoam/cavity/cavity .
mv cavity/ VM04
cd VM04
这里也可以利用其他算例模板,不一定非要用cavity。
删除多余的文件:
rm system/blockMeshDict
算例文件结构如下图所示。
本算例网格为二维周期网格,这里利用命令导入Fluent case文件,并修改边界类型。
VM04.cas
放到算例文件夹中fluentMeshToFoam VM04.msh
constant/PolyMesh/boundary
文件,主要处理平移周期FoamFile
{
version 2.0;
format ascii;
class polyBoundaryMesh;
location "constant/polyMesh";
object boundary;
}
// * * * * * * * * * * * * * * * * * * //
5
(
//INLET与OUTLET边界互为平移周期
//fixedJumpAMI继承自jumpCyclicAMI
//而jumpCyclicAMI继承自cyclicAMI
INLET
{
type cyclicAMI;
nFaces 14;
startFace 526;
matchTolerance 0.0001;
neighbourPatch OUTLET;
transformType translational; //指定为平移周期
separationVector (-1.5 0 0); //指定分割向量
}
OUTLET
{
type cyclicAMI;
nFaces 14;
startFace 540;
matchTolerance 0.0001;
neighbourPatch INLET;
transformType translational;
separationVector (1.5 0 0);
}
TOP
{
type wall;
inGroups List<word> 1(wall);
nFaces 20;
startFace 554;
}
BOTTOM
{
type wall;
inGroups List<word> 1(wall);
nFaces 20;
startFace 574;
}
frontAndBackPlanes
{
type empty;
inGroups List<word> 1(empty);
nFaces 560;
startFace 594;
}
)
文件改造完毕后,利用命令checkMesh
检查网格。如下图所示表示网格没有问题。
修改constant/transportProperties
文件,指定材料介质的运动粘度为1 m^2/s
,如下所示。
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object transportProperties;
}
// * * * * * * * * * * * * * * * * * //
nu [0 2 -1 0 0 0 0] 1;
1、U文件
U文件内容如下所示。
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U;
}
// * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
INLET
{
type cyclicAMI;
}
OUTLET
{
type cyclicAMI;
}
TOP
{
type fixedValue;
value uniform (3 0 0);
}
BOTTOM
{
type noSlip;
}
frontAndBack
{
type empty;
}
}
2、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 fixedJumpAMI;
patchType cyclicAMI;
// 压力梯度为12 Pa/m,因此总压降为12*1.5=18 Pa
jump uniform -18;
value $internalField;
}
OUTLET
{
type fixedJumpAMI;
patchType cyclicAMI;
jump uniform 0;
value $internalField;
}
TOP
{
type zeroGradient;
}
BOTTOM
{
type zeroGradient;
}
frontAndBack
{
type empty;
}
}
如下所示设置controlDict
文件。
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * //
application icoFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 10;
deltaT 0.02;
writeControl timeStep;
writeInterval 20;
purgeWrite 2;
writeFormat ascii;
writePrecision 6;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable true;
其他文件保持默认设置。
文件准备完毕后,利用命令icoFoam
进行计算。
icoFoam
计算完毕后验证结果。
cd "/mnt/i/OpenFOAM/Verification/VM04/VM04"
set xrange [0.0:1.0]
plot -6*x*x 9*x lw 2 w line t "analysis","analysis.txt" u 1:2 w point pt 7 t "numeric"
unset key
set xlabel "x(m)"
set ylabel "velocity(m/s)"
replot
比较结果如下图所示。
计算结果看着还不错。
声明:原创文章,欢迎留言与我讨论,如需转载留言