读取OpenFOAM数据文件并进行后处理

   日期:2020-07-10     浏览:303    评论:0    
核心提示:本文是本人在对OpenFOAM算例做后处理时写的一个后处理小程序,其基本思想是通过读取OpenFOAM算例中已有的数据文件并进行数据处理,从而得到我们想要的后处理结果。_openfoam 设置监测面及数据输出

本文是本人在对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/filesMake/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文件夹下的filesoptions两个文件,这两个文件是编译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 \
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服