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

本文是本人在对OpenFOAM算例做后处理时写的一个后处理小程序,其基本思想是通过读取OpenFOAM算例中已有的数据文件并进行数据处理,从而得到我们想要的后处理结果。

这里以统计全局时均压力分布为例,说明此后处理程序如何实现。程序非常简单,主要的实现过程可参照注释自行理解。

在使用此程序进行后处理时,需要在待处理的算例文件夹的一级目录下建立foampost文件夹,并将下述主程序及相关的辅助脚本建立在foampost文件夹下。

主程序

/**
 * @file    readdata.cpp
 * @brief
 * @version
 * @date    Mon 19 Nov 2018 02:52:48 PM CST
 ******************************************************************************/

// 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;

    /* ScalarAvg.write(); */

    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 \
  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值