OpenFOAM中很多输入输出的操作都是使用IOobject類来实现的其头文件说明了它的功能:
IOobject定义了对象的一些由objectRegistry隐式管理时所需要的属性,同时还提供了基础性的输入/输出流一个IOobject
对象在構造的时候需要六个参数:对象名称,类名称实例路径,一个objectRegistry的引用以及描述读写方式的参数。
- 从对象名称实例路径,objectRegistry引用和读写設置来构造
-
从对象名称,实例路径位置,objectRegistry引用和读写设置来构造
在阅读以上的代码片段时,请注意word是从string派生出来的fileName也是从string派生出來的。除此之外Time和polyMesh
读设置选项定义了对象在构造和显示调用读操作时的行为:
写选项定义了对象在析构和显式调用读操作时的行为。
在對象析构的时候不会自动写但是可以显式调用写操作。
字典在声明的同时可以使用IOobject进行读取通常,一个字典的内容是设置信息时其讀设置选项会设置成MUST_READ,而写设置
选项则设置为NO_WRITE以防设置信息被错误的覆盖例如通常用来读取输运性质的transportProperties字典的定义:
本例中使用了第一種构造函数,其中:
类似于字典对于场数据的读写设置同样也可以通过IOobject类来实现。对于各种类型的场来说调用的语法甚至都是相同的,可以
参见下面的例子如果我们想定义一个名字叫做T的volScalarField场,并将其每个时间点计算的场数据保存下来并放在以时间点命
名的路径下,鈳以这样实现:
- runTime.timeName()实例路径这里是告诉OpenFOAM将每个文件存在以运行时间为名称的路径下面。
- 读/写设置选项设置为MUST_READ和AUTO_WRITE以便OpenFOAM可以读取场数据并自动保存如果不需要读场数据,则需要将MUST_READ
在对象构造时必须从Istream中读取如果Istream不存在或者不能读取时会产生一个错误信息。
如果Istream存在则读取對象,否则不读取仅仅在Istream存在但是不可读取的情况下才会产生错误信息。