![](https://oscimg.oschina.net/oscnet/6e71aa9e-b984-4518-9d3e-e31131cffb2c.gif)
functionObject 是 OpenFOAM 里在计算过程中或计算完成后用于后处理的工具,例如:用 wallShearStress 输出壁面剪力,用 yPlus 输出壁面 y+ 的值。但是有时候会遇到一些 OpenFOAM 自带工具无法解决的情况,这时咱们就需要使用 O 自定义 functionObject 的功能了。因此笔者这期就主要介绍一下如何实现自定义 functionObject 。
最主要的一个关键词是 codedFunctionObject ,这里笔者给出一个自用的输出壁面面单元中心坐标的一个模板,大家可以举一反三进行改写。
P.S:
1. 该模板文件是放置于 system 文件里的,文件名为 writeCenters ,如果需要使用可以输入:
postProcess -dict system/writeCenters
functions
{
writeCenters
{
type coded;
libs (utilityFunctionObjects);
name writeCenters;
enabled yes;
codeWrite
#{
word myRoofPatch="down";
const label patchID = mesh().boundary().findPatchID(myRoofPatch);
IOField<vector> centers
(
IOobject
(
"centers",
mesh().time().constant(),
"../postProcessing",
mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh().boundary()[patchID].Cf()
);
centers.write();
#};
}
}
手机阅读请点击代码左右滑动显示完整内容
首先是固定格式
functions
{
writeCenters
{
type coded;
libs (utilityFunctionObjects);
name writeCenters;
enabled yes;
其中 writeCenters 是随便取得名字,读者可以任意取名,另外一个值得注意的是:
libs (utilityFunctionObjects);
这是比较新的版本的写法,比较简化,如果在 OF1806 版本,应该是:
libs ("libutilityFunctionObjects.so");
其次是 codewrite ,也是固定格式
codeWrite
#{
#};
如果是在计算过程中调用,codeWrite 的执行是对每一个时间步都会执行,还有一 个codeEnd 是对计算结束之后执行,这一点略有不同。但是值得注意的是,如果都是 postProcess 后处理调用的话,那么直接用 codeWrite 就行。
看详细代码的含义:
word myRoofPatch="down";
const label patchID = mesh().boundary().findPatchID(myRoofPatch);
其含义是在 mesh 里找到一个名为 down 的边界,并返回边界的编号。
IOField<vector> centers
(
IOobject
(
"centers",
mesh().time().constant(),
"../postProcessing",
mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
IOField <vector>
mesh().boundary()[patchID].Cf()
对 centers 场赋值,赋值的内容就是 patchID 这个编号对应的边界的各个面单元的中心
最后再输出 centers:
centers.write();
原创文案 | 涂涂 && 校对排版 | 浮生若梦
技术交流(微信号):poplee_openfoam
广告洽谈(微信号):shirleymanson
-
回复“安装包”获得最新 OpenFOAM 软件包下载地址
-
回复“算例 1 ”-“算例 6 ”获得算例分享下载地址
-
回复“资料 1 ”-“资料 18 ”获得分享的学习资料和论文下载地址
-
![](https://oscimg.oschina.net/oscnet/33c58472-a6f3-4d90-813b-ca7860faeb18.gif)
本文分享自微信公众号 - OpenFOAM(OpenFOAM_CN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/openfoam/blog/4951300