OpenFOAM常用类的一些总结
OpenFOAM中有许多类,每个类的功能都很强大,这也使它面向对象设计得以实现。 对于程序,最常用到的,也是最底层的就是数据,在OpenFOAM中引入了三类基础数据类型:标量scalar, 向量vector, 张量tensor.这三个中数据类型,也是FOAM中最基础的三个类。(还有一个比较重要的就是bool和label,前者就是是非型,及对错型,只不过是更扩展一些,后者是标签型数据,相当于c中的整型。关于更多的其它数据类型可以参看目录..\\src\\OpenFOAM\\primitives里面)
在上述数据类的基础上,增加场(field)的概念,就引入了标量场scalarField, 向量场vectorField, 张量场tensorField。 实际上这三个类又是field类的typedef,如typedef field
比field类高一点的就是几何场类 GeometricField class,其相比field class多了纪录场位置的相关信息。说到这里请大家注意他和polyMesh class的区别,后者只是纪录网格的结构,如点的位置、面的组成、体的组成等等,polyMesh class中对应有pointMesh,surfaceMesh,volMesh等类,从字面上很容易理解其处理和记录网格点、网格面、网格体等信息。而GeometricField类,其则是记录了在什么样的网格上有量a的相关信息或数据。它包括了内部区域、边界区域(GeometricBoundaryField class)、网格、尺度单位、计算的先前时间阶的值等。在该类中有常用的三种(实际上还有其他的许多,可以参看OpenFOAM网上说明):volScalarField体标量场,volVectorField体向量场,volTensorField体张量场。这里说的场与field有所不同,这里指的是网格区域上所对应的数据信息。上述的vol就是指ployMesh中的volMesh,如volscalarField类来说:见下例 volScalarField p (
IOobject ( \
runTime.timeName(), mesh,
IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh );
看过老苏博客的朋友肯定都知道这是什么意思,这是读入标量压力场文件,把压力值存储到网格体中心。为加深对GeometricField类的理解,贴张PG中的图片:
OpenFOAM中有许多类,每个类的功能都很强大,这也使它面向对象设计得以实现。
对于程序,最常用到的,也是最底层的就是数据,在OpenFOAM中引入了三类基础数据类型:标量scalar, 向量vector, 张量tensor.这三个中数据类型,也是FOAM中最基础的三个类。(还
有一个比较重要的就是bool和label,前者就是是非型,及对错型,只不过是更扩展一些,后者是标签型数据,相当于c中的整型。关于更多的其它数据类型可以参看目录..\\src\\OpenFOAM\\primitives里面)
在上述数据类的基础上,增加场(field)的概念,就引入了标量场scalarField, 向量场vectorField, 张量场tensorField.实际上这三个类又是field类的typedef,如typedef field
比field类高一点的就是几何场类 GeometricField class,其相比field class多了纪录场位置的相关信息。说到这里请大家注意他和polyMesh class的区别,后者只是纪录网格的结构,如点的位置、面的组成、体的组成等等,polyMesh class中对应有pointMesh,surfaceMesh,volMesh等类,从字面上很容易理解其处理和记录网格点、网格面、网格体等信息。而GeometricField类,其则是记录了在什么样的网格上有量a的相关信息或数据。它包括了内部区域、边界区域(GeometricBoundaryField class)、网格、尺度单位、计算的先前时间阶的值等。在该类中有常用的三种(实际上还有其他的许多,可以参看OpenFOAM网上说明):volScalarField体标量场,volVectorField体向量场,volTensorField体张量场。这里说的场与field有所不同,这里指的是网格区域上所对应的数据信息。上述的vol就是指ployMesh中的volMesh,如volscalarField类来说:见下例 volScalarField p (
IOobject ( \
runTime.timeName(), mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE ), mesh );
看过老苏博客的朋友肯定都知道这是什么意思,这是读入标量压力场文件,把压力值存储到网格体中心。为加深对GeometricField类的理解,贴张PG中的图片:
除了体的向量标量张量场外,还有面标量场surfaceScalarField、面向量场surfaceVectorField、面张量场surfaceTensorField。看下面的例子: surfaceScalarField phi (
IOobject (
\
runTime.timeName(), mesh ),
fvc::interpolate(alpha)*phia + fvc::interpolate(beta)*phib
);这里的phi既是一个面向量场对象,他用来是纪录单元体面上流过的通量值。
除了常用到的标量向量张量的几何场外,还有一些特殊量的场:surfaceSymmTensor面对称张量几何场、体球面张量场等等。几何场里面还有一个比较重要的类就是GeometricBoundaryField,用来专门对边界进行处理的一个类。
如果说数据场类是处理数据的基础,那么时间类则是控制计算步进必不可少的一部分。Time class在进行瞬态计算,用它跟踪时间阶,并使时间按一定步长或者变步长累加,及输出计算参数,计算时间等。见下例:(相关说明见老苏博客:OpenFOAM>>solver>>incompressible>>icoFoam的说明)
Info<< \ for (runTime++; !runTime.end(); runTime++) {
Info<< \ //……
runTime.write();
Info<< \ << \ClockTime = \ << nl << endl;
谈到时间大家很容易想到的就是空间,time and space是cfd中非常重要的概念,在离散过程中时间和空间都需要进行离散(非稳态情况),与空间相关的类其实上面已经提到:ployMesh class,
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库OpenFOAM常用类的一些总结在线全文阅读。
相关推荐: