本文简单描述OpenFOAM计算案例的运行过程。
OpenFOAM中包含了众多的预制求解器,不同的求解器所需的字典输入文件可能存在较大差异,想要记住每个求解器所需的字典文件是非常困难的,所以一般情况下设置案例时,通常是在OpenFOAM案例库中找一个与自己问题足够接近的案例,然后根据自己的物理情况对案例进行修改。
OpenFOAM内置案例存放在路径中。OpenFOAM没有GUI图形界面,所有的操作都是通过终端命令来完成,所以在使用OpenFOAM之前,最好复习一下Linux系统的基本命令操作。
本文从一个方腔顶盖流计算入手,详细介绍OpenFOAM案例文件的设置。
1 问题描述
要计算的物理问题如下图所示。
控制方程为不可压缩层流NS方程
计算区域为二维,但是也可以扩展为三维
为了求得数值解,需要对计算区域进行离散,设置边界条件与初始条件,定义流体属性,设置数值格式与求解器参数
在处理不可压缩流动时,采用相对压力进行计算
已预制好所有的字典文件
本案例采用求解器进行计算,这是一个瞬态不可压缩层流求解器,一般情况下不建议在工程应用中使用此求解器,因为icoFoam的建模功能很弱,工程问题可以采用pisoFoam或pimpleFoam求解器,它们的模拟能力要比icoFoam强很多。
2 计算过程
所有的操作工作都在Linux终端中完成(Windows系统中可以使用WSL)。
从文件夹中复制文件到用户工作目录
注意第二条命令最后面的,表示将文件拷贝到当前文件夹中。表示连文件夹中的子文件一起拷贝。
生成计算网格
网格生成以及后面的计算都必须在案例文件夹内部进行,因此先利用命令进入到案例文件夹中;为OpenFOAM内置的分块网格生成器;程序主要用于统计网格信息并检查网格质量。
进行计算
直接运行进行计算。
查看计算结果
采用命令会启动paraview并读取结果数据,之后可以进行后处理计算。这里也可以利用命令创建一个空文件,然后手工启动paraview读取此文件进行后处理。
最终时刻速度分布如图所示。
3 保存计算信息
3.1 保存计算过程信息
前面的计算过程中,求解器输出到终端的信息并不会被保存。当需要对计算过程进行调试时,这些信息非常重要,因此很有必要将其保存到文件中。
可以利用Linux中的命令将这些信息保存到文本文件中。如在cavity文件夹下面的操作命令:
命令中的命令用于清除除了0、constant及system文件夹之外的所有文件;所有的log文件名都可以任意取。
执行完毕后查看工作目录,如下图所示,可以看到日志文件已经保留到路径中了。
这些日志文件都是文本文件,可以使用任何文本编辑器打开。
若想要绘制数据图形,可以利用命令:
该命令会将log.icoFoam文件中的数据进行分解。
之后可以利用进行图形绘制。
在终端输入可进入gnuplot设置绘图环境(注意要先安装gnuplot)。终端显示如下图所示。
此时可以输出压力残差,如下图所示。
类似的命令还可以输入:
关于gnuplot的使用,可以参阅该软件的官方文档。
3.2 查看计算残差
若想要在计算过程中查看残差信息,可以采用两种方案:
方法1:利用OpenFOAM提供的工具,配合字典文件一起使用
方法2:利用进行残差显示
对于,可以利用以下命令添加residuals字典:
打开文件,添加语句:
然后运行案例:
图形显示结果如下图所示。
若要使用进行残差显示,需要首先安装pyFoam,这可以使用pip或pip3进行安装。
安装完毕后,可以使用或进行残差查看。
输出图形如下图所示。
注:
不建议使用pyFoam,虽然很多时候比较方便,但pyFoam很多时候动不动罢工。
”
3.3 终止计算
计算终止条件在文件中进行指定。
在该文件中包含关键字,其规定了计算结束时间。如上示例中指定了结束时间为50 s。
若想要停止仿真计算并且保存计算结果,可以在字典文件中修改:
此时会终止计算并保存当前时刻数据。
若想要动态修改计算停止条件,需要在字典文件中增加关键字为,如:
也可以在OpenFOAM计算过程中采用键盘组合键强行终止,但是采用此方式终止进程的话,OpenFOAM不会保存最终时间步或迭代步得到的数据。
3.4 清理文件
如果想要清除案例文件夹中的网格与计算结果文件,可以通过命令来实现。若是并行计算的文件夹,此命令也会清除所有的processorN目录。
若只想清除网格文件,可以在终端输入命令。
若只想清除保存的结果文件,可以在终端输入:
若想要删除并行计算的结果文件,可以在终端输入: