无法读取第一个标记或不是 OpenFOAM 中的关键字 'FoamFile'

First token could not be read or is not the keyword 'FoamFile' in OpenFOAM

我是编程初学者。我正在尝试 运行 使用 reactingFoam 模拟燃烧室。

我修改了counterflow2D教程

对于那些可能不知道 OpenFOAM 的人来说,它是一个用 C++ 构建的程序,但不需要 C++ 编程,只需在需要的文件中定义好变量即可。

在我的第一次尝试中,我做了一个非常简单的模型,但是因为我想很好地检查它,所以我将它设置为 60 秒,时间步长为 1e-6。

我的电脑不是很强大所以我花了大约一天的时间。 (我的意思是我想找到一个解决方案而不是重复模拟)。

我使用 4 个处理器并行执行求解器 reactingFOAM

mpirun -np 4 reactingFOAM -parallel > log

日志没有显示任何错误证据。

问题是,当我使用 reconstructPar 时,它工作得很好,但后来我尝试用 paraFoam 观察结果,并显示了这个错误:

From function bool Foam::IOobject::readHeader(Foam::Istream&)

in file db/IOobject/IOobjectReadHeader.C at line 88

Reading "mypath/constant/reactions" at line 1

First token could not be read or is not the keyword 'FoamFile'

我读到过,也许有些文件本不应该是空的,但我还没有发现这个问题。

我的 'reactions' 文件没有根据教程进行修改并且一直有效。

编辑:

抱歉这个含糊的问题。我稍微修改了一下。

一个典型的 OpenFOAM 字典文件总是包含一个名为 FoamFileFoam::Istream。下面是典型 system/controlDict 文件的示例:

FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    location    "system";
    object      controlDict;
}

在构建字典 header 期间,如果此 Istream 不存在,OpenFOAM 将通过引发您遇到的错误消息来停止其操作:

First token could not be read or is not the keyword 'FoamFile'

header 的好处是可能有助于 OpenFOAM 的抽象机制,否则这将很困难。

如评论中所述,添加 header 实体几乎总能解决此问题。