本文描述OpenFOAM中的functionObject。
1 介绍
OpenFOAM求解计算过程中,可以使用functionObject执行数据的提取与处理。functionObject是按指定间隔执行的小段代码,无需显式链接到应用程序,当在使用的过程中,可以将特定的数据写入到文件中以方便图形绘制及后处理。
functionObject在字典文件中进行指定,且在预定义的时间点上执行操作。
functionObject在OpenFOAM求解计算的过程中可以实时修改。在OpenFOAM计算完毕后也可以执行functionObject,例如,可以使用functionObjects计算马赫数,涡量场,并在给定点或沿直线的速度进行采用。
在文件夹中可以找到functionObject的源代码。该文件夹中包含一些子文件夹(field、forces、lagrangian、solver、utilities等),分别对应着不同的使用类型,在子文件夹下存放各种不同类型的functionObject,如courantNo、forceCoeffs等。如下图所示。
除了functionObjects外,在路径中可以找到采用工具的所有源代码。
functionObject在字典文件中定义。如下面定义了一个fieldMinMax的对象,该对象用于在指定时间点上输出计算区域中的压力、速度等物理量的最大最小值:
OpenFOAM中包含了许多functionObject,一些特定的functionObject使用起来较为复杂。另外,functionObjects可以具有许多选项和一些限制,最好的建议是阅读doxygen文档或源代码,以学习如何使用functionObjects。
注:functionObjects源代码路径:;sampling工具源代码路径:;functionObject所需的数据库源代码路径。
”
2 算例
下面以一个使用了functionObject的算例来进行描述。该算例计算的是一个三段翼外流场,如下图所示。
通过使用functionObject在计算过程中输出物理量(如yplus、涡量、物理场的平均值、力、力系数、物理场的最大最下周、进出口流量等)。
functionObject在字典文件中定义,打开controlDict文件:
这里使用了externalFunctionObject文件,该文件内容如下所示。
这里的functionObject可以在运行时随求解器一起执行。
但有时可能事先忘记了在controlDict字典中定义functionObject,导致计算完毕后数据并未提取出来。OpenFOAM允许用户在求解计算完毕后执行functionObject,此时可以在controlDict文件中添加functionObject,然后利用命令:
也可以将functionObject写入到一个独立的文件中,然后执行上面的操作命令。一个简单的调用例子:
3 查看结果
计算完毕后,算例路径下多出了一个名为的文件夹。
该文件夹中的文件组织形式如下所示。
此时可以绘制监控得到的数据图。
如查看力系数文件(路径postProcessing/forceCoeffs_object/0/forceCoeffs.dat),其内容如下图所示。
可以使用gnuplot查看阻力系数变化曲线:
得到的阻力系数随迭代过程的变化曲线如下图所示:
类似方式可以查看升力系数:
图形显示如图所示。
领取专属 10元无门槛券
私享最新 技术干货