【OpenFOAM案例】01 elbow
本案例演示利用OpenFOAM的icoFoam求解器计算弯曲管道中的混合流动问题。
1 拷贝tutorials文件
启动终端,且拷贝tutorials文件夹中的文件。利用命令:
cp -r $FOAM_TUTORIALS/incompressible/icoFoam/elbow/ $FOAM_RUN
将案例文件拷贝到了$FOAM_RUN路径中。
此时可以利用命令查看目录结构:
tree $FOAM_RUN/elbow
查询结果如下图所示。
$ tree $FOAM_RUN/elbow
/home/ofuser/blueCFD/ofuser-of4/run/elbow
├── 0
│ ├── p
│ └── U
├── Allclean
├── Allrun
├── constant
│ └── transportProperties
├── elbow.msh
└── system
├── controlDict
├── foamDataToFluentDict
├── fvSchemes
└── fvSolution
3 directories, 10 files
包含三个文件夹:0、constant以及system。
2 转换网格
案例中的网格使用的是msh文件,这里要通过命令将其转化为openfoam网格。
采用命令:
cd $FOAM_RUN/elbow
fluentMeshToFoam elbow.msh
如下图所示。
注:Fluent提供了众多的工具用于将外部网格文件转换为OpenFOAM网格
3 case结构
OpenFOAM的case组织结构如如所示。
包含三个基本文件夹:
- 0:存储物理量的初始值
- constant:存储网格参数、边界条件以及物理属性(如材料参数、湍流参数等)
- system:存储一些求解控制参数
4 设置0文件夹
本案例中0文件夹中包含两个文件:p文件与U文件,分别设置初始时刻的压力与速度。
4.1 修改p文件
利用文本编辑器打开p文件。在blueCFD中可以使用命令(先进入0目录,然后用nano打开p文件):
cd 0
nano p
注意:在不同的linux系统中可以使用不同的文本编辑器,如在ubuntu系统中,可以使用gedit、nano或vi
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0;
boundaryField
{
wall-4
{
type zeroGradient;
}
velocity-inlet-5
{
type zeroGradient;
}
velocity-inlet-6
{
type zeroGradient;
}
pressure-outlet-7
{
type fixedValue;
value uniform 0;
}
wall-8
{
type zeroGradient;
}
frontAndBackPlanes
{
type empty;
}
}
// ************************************************************************* //
文件内容:
- 压力单位是m2/s2。OpenFOAM不可压缩求解器中压力定义为单位质量的压力。即压力与密度的比值。
- 量纲矩阵:[质量 长度 时间 温度 物质的量]
- internalField关键字定义的是求解区域中的物理量
- 边界类型:zeroGradient、fixedValue及empty。
关于OpenFOAM中的边界类型:
- zeroGradient:边界物理量梯度为0。(Neumann边界)
- fixedValue:边界物理量为定值。(Direchlet边界)
- empty:在利用2D模型模拟3D情况时,侧边同城设定为empty边界,在计算过程中,此边界并不参与求解。
当fixedvalue的值与internalField的值相同时,fixedValue边界与zeroGradient边界等效。
4.2 U文件
U文件中指定边界速度值。利用文本编辑器打开U文件。
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
wall-4
{
type noSlip;
}
velocity-inlet-5
{
type fixedValue;
value uniform (1 0 0);
}
velocity-inlet-6
{
type fixedValue;
value uniform (0 3 0);
}
pressure-outlet-7
{
type zeroGradient;
}
wall-8
{
type noSlip;
}
frontAndBackPlanes
{
type empty;
}
}
// ************************************************************************* //
文件中指定边界velocity-inlet-5的速度为x方向1m/s,velocity-inlet-6边界速度为y方向3m/s。
本案例中U文件不需要修改。
5 constant目录
constant目录下保存了网格数据与物性参数等。
├── polyMesh
│ ├── boundary
│ ├── cellZones
│ ├── faces
│ ├── faceZones
│ ├── neighbour
│ ├── owner
│ ├── points
│ └── pointZones
└── transportProperties
1 directory, 9 files
本案例中的网格来自于外部转化,因此不需要修改polyMesh文件夹中的内容。
transportProperties文件中存储了传输属性参数,用文本文件打开来看。
nano transportProperties
此文件的内容:
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object transportProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
nu [0 2 -1 0 0 0 0] 0.01;
// ************************************************************************* //
此文件中只是定义了粘度为0.01 m2/s。在不可压缩流动中,只需要定义此参数。
6 system目录
system目录下包含四个文件。
.
├── controlDict
├── foamDataToFluentDict
├── fvSchemes
└── fvSolution
0 directories, 4 files
- fvShceme:该文件中定义了求解过程中所采用的各种离散格式。
- fvSolution:该文件包含压力速度耦合方法、用于求解差分量的数值方法,以及收敛残差等。
- controlDict:此文件中定义了各种求解控制参数,如时间步长、文件保存间隔等。
- foamDataToFluentDict:此文件只有当使用了fluentMeshToFoam命令才会出现,一般情况下不用修改。
本案例需要关注的是文件controlDict。用文本文件打开此文件,修改endTime为75。其他参数保持默认。
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 4.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application icoFoam;
startFrom latestTime;
startTime 0;
stopAt endTime;
endTime 75;
deltaT 0.05;
writeControl timeStep;
writeInterval 20;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable true;
// ************************************************************************* //
7 求解计算
在case路径下输入命令:
icoFoam
计算自动进行,直至求解完成。
8 计算后处理
输入命令:
paraFoam
系统启动paraView进行后处理。
速度分布如图所示。
压力分布如图所示。