如图1所示,RTS机制实际上是围绕着哈希表argNameConstructorTable[1]展开的,该哈希表的键值为word类型,对应着用户在字典文件中输入的算法名称;其值则为一个函数指针,这个指针指向的函数实际上就是调用基类或派生类的构造函数在堆中new出一个类的对象。 2.细节1:哈希表的创建和维护的2个核心函数 展开宏declareRunTi...
在使用 OpenFOAM 计算多物理场的编程中,有一些常用的语句块,它们多为基于 OpenFOAM中标准类的应用。为了使用方便,下面对这些内容进行阐释和总结。 ( 1 )屏幕输出语句 OpenFOAM 使用 Info 命令进行屏幕输出,其使用方法类似于 C++ 中的 cout 。例如: Info<<"Time="<<runTime.timeName()<<nl<<endl; 可将...
runTime.timeName(), mesh, IOobject::MUT_READ, IOobject::AUTO_WRITE ), mesh ); 看过⽼苏博客的朋友肯定都知道这是什么意思,这是读⼊标量压⼒场⽂件,把压⼒值存储到⽹格体中⼼。为加深对 GeometricField类的理解,贴张PG中的图⽚: ...
由于计算时间步为0.005s,因此需要每20 个时间步输出一次结果设定writeInterval为20。 writeControl 中,每个固定timeStep输出,我们也可以指定为runTime 来指定每多少个物理时间间隔来写结果文件 1.1.4 离散方法和矩阵求解器设置 用户在system 下的fvScheme 文件中指定有限体积法的离散格式。 在system 文件夹下的fvSolutio...
T通过读(IOobject::MUST_READ)在runTime.timeName()目录下名称为“T”的文件创建,在开始计算时,runTime.timeName()是contorlDict中设定的startTime值决定的。 T将自动写入(IOobject::AUTO_WRITE)计算结果到runTime.timeName()目录中,runTime.timeName()随迭代是变化的,写入控制由contorlDict中设定。
类内调用时间步长 假定mesh_是类内可以调用的成员变量。 constscalar deltaT = mesh_.time().deltaT().value(); 如果mesh_不可获取,U_可获取: constscalar deltaT = U_.mesh().time().deltaT().value(); 声明一个tmp变量 tmp<volScalarField>deltaLambdaT( ...
startTime 0; //程序什么时候结束,endTime结束 stopAt endTime; //程序结束时间 endTime 0.5; //当前算例的时间步长 deltaT 0.005; //以什么方式写文件,按照时间步长写(也可以为runTime,即按照时间来些) writeControl timeStep; //20个时间步长,20*timeStep写一次;(如果按照时间来写的话为1) ...
所以你可以看到,在编译选项options中 EXE_INC=\-I$(LIB_SRC)/finiteVolume/lnInclude//fvCFD.H的存放目录EXE_LIBS=\-lfiniteVolume//需要链接的库 找到fvCFD.H,编辑,可以看出这些是主程序必须的类库 #ifndeffvCFD_H#definefvCFD_H#include"parRun.H"#include"Time.H"//时间类#include"fvMesh.H"//网格...
runTime.timeName(), mesh, IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh ); 看过老苏博客的朋友肯定都知道这是什么意思,这是读入标量压力场文件,把压力值存储到网格体中心。为加深对GeometricField类的理解,贴张PG中的图片: OpenFOAM中有许多类,每个类的功能都很强大,这也使它面向对象设计得以实现。
20、 ( transportProperties, runTime.constant(), mesh, IOobject:MUST_READ, IOobject:NO_WRITE ) );IOobject类:读入写入数据,他与IOdictionary不同之处在于后者是读取一个文件中的一个字典“”之内的数据,而IOobject则是读入整个文件,如读入压力场,速度场等,并且有读入写出的控制参数,见上例中的“MUST_READ...