求助:open foam的从字典文件读取数据的问题

open foam从字典文件读取数据一般是通过IOobject类进行读取,我在网上看到的帖子基本上都是定义一个主函数,然后添加#include “createTime.H”,#include "createMesh.H"这两个头文件,然后创建字典对象,接着读取字典的数值。
而我需要的是,在foamextend4.1的imemersedBoundary/movingImmersedBoundary.C文件进行对dynamicDict字典数据的读取,movingImmersedBoundary.C文件似乎没有主函数吧,那应该如何进行编程读取dynamicDict字典中的数据
应该说是在库文件中如何进行字典文件的读取
希望有朋友能够解答

fe4.1的浸没边界是不是集成到边界类型了。也就是说在边界条件里定义movingImmersedBoundary后,就能自动读取动网格的参数了

嗯。。。。没理解你的意思,我并没用在边界条件上定义movingImmersedBoundary。浸没边界在边界条件上,应该是统一为ImmersedBoundary(参考tourials里面),读取动网格的参数是跟运动库有关。

请问您解决了,我初学也遇到了这中问题,可以请教一下吗

在构造函数中,提供了一种通过patch, filed, dictionary 构造边界的方法。

testPatch::testPatch
(
    const fvPatch& p,
    const DimensionedField<scalar, volMesh>& iF,
    const dictionary& dict
);

这个dict你可以理解为0文件夹下的该类型边界的字典信息,这里提供几种办法

  1. 通过dict.lookupOrDefault<word>("p", "p"),可以获取到字典文件中的p的信息;
  2. 通过dict.found("specie")来判断该字典中是否存在该对;
  3. 通过dict.readEntry("carrierMolWeight",Mcomp_)将字典中的carrierMolWeight设定值保存至Mcomp_中;
  4. 通过auto liquidDict_ = dict.subDict("liquid")获取字典中的子字典。

此外你还可以通过创建IOdictionary来制定读取的constant/system下的某些文件,如

dictionSolid.set
(
    i,
    new IOdictionary
    (
        IOobject
        (
            "SolidProperties",
            runTime.constant(),
            solidRegions[i],
            IOobject::MUST_READ_IF_MODIFIED,
            IOobject::NO_WRITE
        )
    )
);

通过配置文件读取参数信息,再由主程序中写入到边界中。

2 个赞