本文主要是介绍OpenFOAM 后自定义functionObject来进行后处理的编译与使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
OpenFOAM 后自定义functionObject来进行后处理的编译与使用
需要自定义一个物理场的后处理。
在用的教新的版本,postProcess
主要通过solver来调用。
调用命令如下所示
pimpleFoam -postProcess -func xxxfunc
扒其源码,
主要执行的函数是
void executeFunctionObjects
(const argList& args,const Time& runTime,fvMesh& mesh,const wordHashSet& selectedFields,functionObjectList& functions,bool lastTime
);
在该函数内执行了 functions.exucute()
因此需要调研 functionObjectList.execute()
函数,其中最重要的是
ok = funcObj.execute() && ok;
ok = funcObj.write() && ok;
其中funcObj
是functionObjects
类的对象。因此最主要的调用的是自己定义的后处理库有这样几个要求(除去本身C++ 的语言特性要求)
- 需要派生自
Foam::functionObjects
- 需要定义
execute()
和write()
写好库内容后之前按照OpenFOAM自定义库编译步骤即可。
与其他库编译后就能使用不同,postProcess
的程序流机制类似boost库的options功能。需要额外添加输入定义参数,在OF 中路径为~/OpenFOAM-v2106/etc/caseDicts/postProcessing/fields
需要在此路径给出options
的参数定义。文件名与类名同名。如下所示,以输出壁面法矢为例。
/*--------------------------------*- C++ -*----------------------------------*\========= |\\ / F ield | OpenFOAM: The Open Source CFD Toolbox\\ / O peration | Version: v2106\\ / A nd | Website: www.openfoam.com\\/ M anipulation |
-------------------------------------------------------------------------------
DescriptionCalculates the norms at wall patches, outputting the data as avolVectorField.\*---------------------------------------------------------------------------*/type wallNorm;
libs (fieldFunctionObjects);executeControl writeTime;
writeControl writeTime;// ************************************************************************* //
这篇关于OpenFOAM 后自定义functionObject来进行后处理的编译与使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!