后处理计算 Qdot

前言

上一期我们介绍了通过自定义求解器,计算并输出 Qdot,但对于你之前用BYRFoam跑完的算例,如何以后处理的方式计算Qdot,这就要用到今天介绍的内容:求解器后处理,let it run but not completely run!

需要做的修改

下面直接在rdeFoam/source/solver/BYRFoam/路径下修改即可,因为这部分修改的代码只在运行求解器后处理时才生效,所以并不影响BYRFoam的正常使用。

  1. 打开createFields.H文件,对照原程序,在下面位置修改代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (functionObject::postProcess)
    {
    Info<< "Correcting reaction" << endl;
    reaction->correct();

    // new add to output Qdot
    volScalarField Qdot("Qdot", reaction->Qdot());
    Info <<"Writing heat release rate Qdot to " << Qdot.objectPath() << endl;
    Qdot.write();
    }
  2. 运行wmake重新编译BYRFoam即可。

运行后处理

  1. 在算例目录下运行求解器后处理,其实就是加上了一个-postProcess选项:

    1
    BYRFoam -postProcess
  2. 运行完成后,你就会发现在每个时间步的文件夹里,多出来一个Qdot的文件,大功告成!

并行后处理

如果你觉得跑的太慢了,你甚至可以并行!

  1. 首先修改system/decomposeParDict里的分块数,视自己本地电脑的核数而定,比如设为8:

    1
    numberOfSubdomains  8;
  2. 运行decomposePar进行分块,需要注意,在对多个时间步的算例进行分块时,记得加上-time选项,示例如下:

    1
    decomposePar -time 0:0.0006
  3. 接下来并行运行后处理:

    1
    mpirun -np 8 BYRFoam -parallel -postProcess
  4. 然后运行reconstructPar合并分块数据,就完事了!