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;

其中funcObjfunctionObjects类的对象。因此最主要的调用的是自己定义的后处理库有这样几个要求(除去本身C++ 的语言特性要求)

  1. 需要派生自Foam::functionObjects
  2. 需要定义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  |
-------------------------------------------------------------------------------
Description
    Calculates the norms at wall patches, outputting the data as a
    volVectorField.

\*---------------------------------------------------------------------------*/

type            wallNorm;
libs            (fieldFunctionObjects);

executeControl  writeTime;
writeControl    writeTime;

// ************************************************************************* //
相关推荐
AI进化营-智能译站9 分钟前
ROS2 C++开发系列07-高效构建机器人决策逻辑,运算符与控制流实战
开发语言·c++·ai·机器人
winner888111 分钟前
C++ 命名空间、虚函数、抽象类、protected 权限全套通俗易懂精讲(附与 Java 对比)
java·开发语言·c++
北山有鸟15 分钟前
编译香橙派内核
linux·运维·服务器
不会编程的懒洋洋21 分钟前
C# P/Invoke 基础
开发语言·c++·笔记·安全·机器学习·c#·p/invoke
小此方23 分钟前
Re:Linux系统篇(八)权限篇 ·三:深度解析从 umask 位运算到粘滞位的“权力锁”
linux·运维·服务器
晨曦夜月42 分钟前
进程的五大状态及特殊进程解析
linux·服务器·算法
生而为虫44 分钟前
Claude Code 最新版安装教程(Windows/Mac/Linux 全平台) 面向普通用户的 Claude Code 安装与模型接入指南
linux·windows·macos
24白菜头1 小时前
【无标题】
c++·笔记·学习·harmonyos
charlie1145141911 小时前
嵌入式C++实践开发第21篇(单片机实践):按钮输入 —— 硬件原理、消抖与HAL API
开发语言·c++·单片机
AKDreamer_HeXY1 小时前
QOJ 12255 - 36 Puzzle 题解
数据结构·c++·数学·算法·icpc·qoj