本博客只作为自己的一个笔记使用:
三类基础数据类型:标量scalar, 向量vector, 张量tensor.这三个数据类型,也是OpenFOAM中最基础的三个类。
field类:在上述数据类的基础上,增加场(field)的概念,就引入了标量场scalarField, 向量场vectorField, 张量场tensorField。
几何场类 GeometricField class:比field类高级一点的就是几何场类 GeometricField class,其相比field class多了纪录场位置的相关信息。
GeometricField class与polyMesh class的区别:polyMesh class只是纪录网格的结构,如点的位置、面的组成、体的组成等等,polyMesh class中对应有pointMesh,surfaceMesh,volMesh等类,从字面上很容易理解其处理和记录网格点、网格面、网格体等信息。GeometricField类,其则是记录了在什么样的网格上有量a的相关信息或数据。它包括了内部区域、边界区域(GeometricBoundaryField class)、网格、尺度单位、计算的先前时间阶的值等。在该类中有常用的三种(实际上还有其他的许多):volScalarField体标量场,volVectorField体向量场,volTensorField体张量场。这里说的场与field有所不同,这里指的是网格区域上所对应的数据信息。上述的vol就是指ployMesh中的volMesh,如volscalarField类来说:见下例: volScalarField p
(
IOobject
(
"p",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
Label类:是标签型数据,相当于c中的整型。
Bool类:就是是非型及对错型,只不过是更扩展一些。
argList类:读入外部命令参数的一个类。
tmp类:是管理临时对象的一个类。
dimensionSet类:是对基本类型的单位设定,并检查其正确性。
IOobject类:读入写入数据。
finiteVolumeMethod和finiteVolumeCalculus类(fvm和fvc类):在求解之前,需要对偏微分方程组进行离散,转化为线性方程组[A][x]=[b]的形式。其中[x]就是我们所要求的量,他也就是咱们前面介绍的GeometricField类,而[A]代数方程的系数,他就是我们下面所要提到的fvMatrix类。对于偏微分方程的每一项,OpenFOAM应用两个类来离散:finiteVolumeMethod和finiteVolumeCalculus,分别用typedef声明为fvm和fvc. fvm是计算隐式导数从而返回fvMatrix,而fvc是计算显式导数或者其它隐式计算返回geometricField,该类不存储私有数据。