本案例演示利用icoFOAM计算elbow中流体混合问题。
0 目标
-
OpenFOAM案例基本设置
-
设置p与U的初始值
-
边界条件定义
1 前处理
1.1 设置系统环境
在执行下面操作之前,确保OpenFOAM及系统环境已经配置完毕。关于如何设置系统环境,可以参阅OpenFOAM官网(https://openfoam.org/)安装步骤。
注:作为一个打算耍开源的CFDer,如果连软件安装都搞不定的话,那还是老老实实耍商软吧。为了鼓励那些手残道友,我这里提供已经安装了OpenFOAM的linux mint19.3系统。下载地址链接:https://pan.baidu.com/s/1bvv9L1cerjPOa6q5oh_X5w 提取码:rprh ,下载完毕后利用virturalBox导入即可。
1.2 拷贝文件
在终端窗口中利用以下命令拷贝案例文件:
cd $FOAM_RUN
cp -r $FOAM_TUTORIALS/incompressible/icoFoam/elbow .
注:
1、$FOAM_RUN与$FOAM_TUTORIALS均为系统内置环境变量,代表了OpenFOAM安装路径下的某个目录;
2、cd命令为切换路径;
3、cp命令为拷贝文件,-r表示连文件夹一起拷贝。
4、注意最后一行命令中末尾的点,表示将文件夹中的内容拷贝到当前目录下
命令执行如下图所示。
可利用以下命令查看当前路径下文件。
cd elbow
ls
命令执行如下图所示。
建议:通过命令
sudo apt-get install tree
安装程序tree,然后输入命令tree
查看路径组织结构
文件路径组织结构如下图所示。
文件夹中包含3个子文件夹:0、constant以及system。其中0文件夹存储物理量的初始值及边界值;constant文件夹存储物性参数以及网格参数等;system文件夹存储求解控制参数。
1.3 转换网格
本案例文件为GAMBIT生成的.msh文件,可以利用命令将其转换为OpenFOAM能够识别的文件。
注:用户也可以利用其它软件(如ICEM CFD、Fluent Meshing等)生成.msh格式网格文件,但在输出网格时确保网格文件格式为ascii。
在终端窗口中输入以下命令:
cd $FOAM_RUN/elbow
fluentMeshToFoam elbow.msh
注:该命令将elbow.msh转换为OpenFOAM格式。具有相同功能的命令为
fluent3DMeshToFoam
,此命令能保存内部边界。
命令fluentMeshToFoam
能将fluent网格文件转化为OpenFOAM格式,该命令的使用方式如下图所示。
注:fluentMeshToFoam能够带参数-scale,从而在转换过程中缩放网格。如使用命令fluentMeshToFoam elbow.msh -scale 0.001为将网格沿各方向缩小1000倍。
转换完毕后,constant文件夹下多了个polyMesh文件夹,其中存储了网格信息。
打开boundary文件,如下图所示。网格中包含边界wall-4、velocity-inlet-5、velocity-inlet-6、pressure-outlet-7、wall-8、frontAndBackPlanes,这些边界名称在设置初始值与边界值时需要保持一致。
注:1、若使用的是OpenFOAM V1906版本,边界文件中inGroups关键字中没有List
。2、本案例使用的msh文件为采用gambit生成,而gambit中并没有empty边界类型。这里在转换过程中,将2D网格转换成3D网格过程中,自动将法向方向转换为empty边界类型。
1.4 指定材料参数
材料介质属性在constant/transportProperties
文件中指定。
终端输入命令打开transportProperties文件:
cd $FOAM_RUN/elbow/constant
gedit transportProperties
该文件内容:
此文件中,指定了流体介质粘度。
nu [0 2 -1 0 0 0 0] 0.01指定介质粘度为0.02 m2/s。
1.5 修改0文件夹
0文件夹中包含了P文件与U文件,其中分别存储了压力与速度的初始值与边界值。通常需要设置。
终端输入命令打开p文件:
cd $FOAM_RUN/elbow/0
gedit p
注:gedit是一款文本编辑器,这里可以用任一款文本编辑器替代,如使用nano、vim、emacs等。
-
p文件
内容
关于p文件的内容:
FoamFile。为文件头,里面包含一些p文件相关信息,如版本、格式、类型、对象等。绝大多数情况下不用理会。
dimensions。为量纲信息,需要指定压力量纲。这里指定的压力量纲为m2/s2,是单位质量的压力(量纲为压力除以密度)。方括号中的量纲为[kg m s K mole A cd],分别对应质量、长度、时间、温度、物质的量、电流、光强。
internalField。为计算区域中的物理量指定初始场。其包含两种类型:uniform和non-uniform。采用uniform可以为计算域中所有网格单元指定一个值,而non-uniform则可以为每个网格单元指定值。
boundaryField。该字段中指定了各边界的初始压力值,要注意边界名称与前面网格文件boundary中的名称保持完全一致。
zeroGradient。指定该边界物理量梯度为零(Neumann边界类型)
fixedValue。显示指定边界上的物理量值。(Dirichlet边界类型)
empty。此类型出现在2D模拟中,指定为该类型的边界不参与计算。
本案例指定边界pressure-outlet-7的压力值为0,其他边界采用的是zeroGradient
-
U文件
内容
关于U文件:
1、dimension [0 1 -1 0 0 0 0]表示为速度量纲m/s
2、internalField uniform (0 0 0)表示内部初始速度场(0 0 0)
2、这里设置壁面边界(wall-4与wall-8)类型为noSlip,表示无滑移壁面
3、指定边界velocity-inlet-5的速度(1 0 0),表示其为x方向速度1 m/s
4、指定边界velocity-inlet-6速度为(0 3 0),表示为y方向速度3 m/s
1.6 修改system文件夹
system文件夹中包含4个文件:controlDict、fvSchemes、fvSolution及foamDataToFluentDict。其中foamDataToFluentDict是之前网格转换过程中自动生成的,可以不用理会。需要修改或设置的文件只有controlDict、fvSchemes、fvSolution。
关于文件:
controlDict。该文件指定求解计算中的控制参数,如计算时间、时间步长等数据。
fvSchemes。该文件指定各控制方程的离散格式。
fvSolution。该文件包含压力速度耦合算法、各偏微分方程的求解算法及残差。
-
用文本查看器查看并修改controlDict文件
关于controlDict文件:
application:指定使用的求解器。本案例采用求解器icoFoam
startFrom:指定从哪个保存的时刻文件开始计算。本案例采用latestTime。若只有0文件夹,则从0时刻开始
startTime:指定初始计算时刻,本案例从0 s开始
stopAt:指定终止时刻,本案例指定为endTime
endTime:终止时间,本案例设置为75s
deltaT:指定时间步长,本案例为0.05s
writeInterval:指定文件写出间隔,这里间隔20步写入1次
其他控制文件内容再后续的教程中再讨论。
2 求解计算
终端中执行以下命令进入elbow目录下并启动icoFoam求解器。
cd $FOA_RUN/elbow
icoFoam
如下图所示。
此时计算机开始计算,默认情况下并无任何残差显示。若想要显示计算残差,可以利用foamMonitor输出计算残差,在这之前需要进行一些设置。
-
拷贝系统中的Residuals文件夹到当前计算case的system文件夹下,可利用以下命令寻找residuals文件夹所在位置
find /opt/openfoam7 -name residuals
如下图所示会列出在cd 文件路径/opt/openfoam7下的包含residuals文件夹的所有列表,其中黄色框选路径即系统提供的用于生成残差曲线的residuals文件。
-
将residuals文件拷贝到当前case路径下的system文件夹中
-
编辑
system/controlDict
文件,在文件末尾添加如下信息
functions
{
#includFunc residuals
}
修改后文件内容如图所示。
-
重新运行案例
icoFoam &
foamMonitor -l postProcessing/residuals/0/residuals.dat
3 计算结果
当计算完毕后,可以通过paraView查看计算结果。在终端输入命令:
cd $FOAM_RUN/elbow
paraFoam
软件自动启动ParaView并加载计算结果文件。
-
速度分布
-
压力分布
ANSYS 2020R1出来了。
本篇文章来源于微信公众号: CFD之道
评论前必须登录!
注册