本文是本人在对OpenFOAM算例做后处理时写的一个后处理小程序,其基本思想是通过读取OpenFOAM算例中已有的数据文件并进行数据处理,从而得到我们想要的后处理结果。
这里以统计全局时均压力分布为例,说明此后处理程序如何实现。程序非常简单,主要的实现过程可参照注释自行理解。
在使用此程序进行后处理时,需要在待处理的算例文件夹的一级目录下建立foampost
文件夹,并将下述主程序及相关的辅助脚本建立在foampost
文件夹下。
主程序
// necessary headers
#include "IFstream.H"
#include "OFstream.H"
#include "fvCFD.H"
#include "meshSearch.H"
int main(int argc, char *argv[])
{
#include "setRootCase.H"
#include "createTime.H"
#include "createMesh.H"
meshSearch myMeshSearch(mesh, polyMesh::FACEPLANES);
// state volume scalar field value p
volScalarField p
(
IOobject
(
"p",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::NO_WRITE
),
mesh
);
volScalarField ScalarAvg = p;
ScalarAvg = dimensionedScalar("zero", p.dimensions(), 0);
int count = 0;
// time loop
while (runTime.run()) {
if (runTime.outputTime()) {
// read p from each data file
Info << "Reading field p at time " << runTime.value() << endl;
volScalarField p
(
IOobject
(
"p",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::NO_WRITE
),
mesh
);
// averaging p
ScalarAvg += p;
count++;
}
runTime++;
}
ScalarAvg /= count;
Info << "Average field p:" << endl;
Info << ScalarAvg << endl;
return 0;
}
辅助脚本
make.sh
make.sh
主要用以实现程序的自动编译,其内容包含了Make
文件夹的建立,Make/files
及Make/options
等文件的修改等等。
#!/bin/bash
###--- Record current directory. ---###
dir=$(pwd)
###--- Rebuild 'Make' folder. ---###
cd ${dir}
./rebuild.sh
###--- Make. ---###
wmake -s .
###--- Remove. ---###
rm -r Make
rm *.dep
rebuild.sh
rebuild.sh
用于重建Make
文件夹下的files
和options
两个文件,这两个文件是编译OpenFOAM工具所需的。
#!/bin/bash
wmakeFilesAndOptions
for all in `ls *.cpp`;
do
sed -i '1i\'${all} Make/files
done
sed -i 's/$(FOAM_APPBIN)\///g' Make/files
patch -s Make/options options.patch
run.sh
run.sh
包含了如何运行此后处理程序的相关内容,主要包括了建立软链接、执行程序、删除软链接三个内容。
#!/bin/bash
###--- Name of main program. ---###
EXE=foamavg
###--- Link useful folder here. ---###
ln -s ../constant/ .
ln -s ../system/ .
ln -s ../0* .
ln -s ../1* .
ln -s ../2* .
ln -s ../3* .
ln -s ../4* .
ln -s ../5* .
ln -s ../6* .
ln -s ../7* .
ln -s ../8* .
ln -s ../9* .
###--- Run. ---###
./$EXE
###--- Remove symbolic links. ---###
rm 0* 1* 2* 3* 4* 5* 6* 7* 8* 9*
rm constant
rm system
options.patch
options.patch
这个文件是用来对通过wmakeFilesAndOptions
这个命令建立的Make/options
文件打补丁的一个文件,修改Make/options
文件的部分内容,使得程序可以顺利编译。
1a2,3
> -I$(LIB_SRC)/OpenFOAM/lnInclude \
> -I$(LIB_SRC)/meshTools/lnInclude \
4a7,8
> -lOpenFOAM \
> -lmeshTools \