博文

OpenFOAM——primitive--bool & int & label(2006-11-16 19:44:00)

摘要:今天介绍OpenFOAM中实现的几个最基本的东西:bool、 int及label
在介绍这几个之前首先介绍一个特殊的类pTraits(primitive trait的简写,意思即为primitive类的基本特征),正如其名字所示该类用于描述所有primitive类的基本特征。
那么primitive类都有哪些基本特征呢,让我们来看看类pTraits的定义:
template<class primitive>
class pTraits
: public primitive        //这里可以看出来pTraits为primitive的子类
{
public:
    pTraits(Istream& is)
    : primitive(is) {}
};
是不是很简单啊,不过对于每一个具体的primitive类型,pTraits类都进行了特化。因为是primitive类的子类所以可以通过特化为特定的primitive类加上我们希望它具有的特性。 下面分别从bool、label介绍pTraits的这种特化: 对于bool,特化了pTraits<bool>
成员变量(私有):
           bool   p_;     //私有的数据成员
公有属性:
        静态常量成员://所有的pTraits<primitive>都实现了以下几个常量
               static const char* const typeName="bool";
    &nbs......

阅读全文(4822) | 评论:0

OpenFOAM——primitives——Vector类(2006-11-15 11:57:00)

摘要:接着上回介绍的VectorSpace类,今天介绍它的子类——Vector类。
该类也是一个模板类,仅一个模板参数<class Cmpt>
其父类为VectorSpace<Vector<Cmpt>, Cmpt, 3>
下面是其原代码描述

    Templated 3D Vector derived from VectorSpace adding construction from
    3 components, element access using x(), y() and z() member functions and
    the inner-product (dot-product) and cross product operators.     A centre() member function which returns the Vector for which it is called
    is defined so that point which is a typedef to Vector<scalar> behaves as
    other shapes in the shape hierachy 公有属性(public)
      成员常量
              enum{rank=1};//表明秩为1,这里秩的概念清参阅OpenFOAM的ProgramersGuide
                      &nb......

阅读全文(5647) | 评论:0

OpenFOAM——primitive——VectorSpace类(2006-11-13 12:32:00)

摘要:今天介绍VectorSpace类,该类定义了矢量空间类,是Vector类的基类。该类为模板类具有三个模板参数:class Form,class Cmpt,int nCmpt,其中Form指明要创建Form类型的VectorSpace对象,Cmpt为该空间中元素的类型,nCmpt为空间中矢量的元素个数。 公有属性(public)
    成员变量:
           Cmpt v_[nCmpt];定义了公有的数据成员v_;因此对外该成员是公开的可以随意访
           问。
    构造函数(3个):
           VectorSpace();默认构造函数
           VectorSpace(Istream& is);丛输入流构造
           VectorSpace(const VectorSpace<Form,Cmpt,nCmpt>& vs);复制构造函数
    成员函数:
           const Cmpt& component(const direction d) const; const VectorSpace对象的component
                 &......

阅读全文(4717) | 评论:3

OpenFOAM——源文件ops.h(2006-11-13 12:00:00)

摘要:文件名:ops.h 上次在VectorSpaceOps类中定义的一些函数用到了操作函数类,所以这里专门讨论OpenFOAM中的操作函数类的定义源文件ops.h,他也是primitive中的一部分。 从文件名中可以看出来,该文件定义的是一些操作符方面的东西。正是这样该文件通过宏定义(#define)的方式定义了多个函数对象类! 下面是通过宏定义的所有函数对象的列表:振动联盟.m{8lXyv
他们可以分成两类:一类是带=号的操作符函数类,另一类是不带=号的操作符函数类,不知道这样说是不是合适,凑合吧!        1、=操作符函数类振动联盟 F*{!N.G`G6|5f F6W
             eqOp<class T>(T& x,T& y)                           {x=y};   振动联盟t*d-? Z*F3@5uT
             eqOp2<class T1,class T2>(T1& x,T2& y)              {x=y};振动联盟M,@q{"D {O(?+~,@ y
             plusEqOp<class T>(T& x,T&......

阅读全文(4181) | 评论:0

OpenFOAM——primitive——VectorSpaceOps类(2006-11-12 19:00:00)

摘要:今天介绍primitives中的VectorSpace类相应的操作符函数类VectorSpaceOps VctorSpaceOps为一个模板类,具有两个模板参数<int N,int I> 首先定义静态成员变量endLoop,并初始化该变量,若I<N-1则endLoop=1,否则endLoop=0 该类的成员函数,均为静态无返回值的模板函数,下面是他们的列表:     template<class V,class S,class EqOp> 
|Z)`%u ~o5}5gbioexplore    eqOpS(V& vs,const S& s,EqOp eo)    //将V型变量vs与S型变量s进行eo操作,V一般为
Jk(s ^H;gk+_I&WGbioexplore                                         VectorSpace,S一般为Scalar,eo多为赋值操作振动联盟8z"a)o?B(Y+QX
    template<class S,class V,class EqOp>振动联盟j JW yHFXsv.p
    SeqOp(S& s,const V& vs,EqOp eo)    //将S型变量s与V型变量vs进行eo操作,V一般为 振动联盟0zp;t(n$_;I8k.t5y6M
       &nbs......

阅读全文(4336) | 评论:2

OpenFOAM——primitive类(2006-11-12 09:59:00)

摘要:解开OpenFOAM源代码文件可以在OpenFOAM文件夹下看到primitives文件夹,里面有一系列的文件夹,这些文件夹里保存的就是所有OpenFOAM中实现的基础数据类; 最基本的几个有 label(其实就是整形,不过可能为int也可能为long),
bool(自己的逻辑变量类),
char(自己的char类),
scalar(标量类,single或double),
Vector(矢量类,具有三个分量,秩=1,关于秩的概念可参见软件的programmerguide:)),
Tensor(张量类,具有9个分量,秩=2),
complex(复数类,好久没接触过这个概念了,应该是高中时讲过的了:)再翻翻书了!~~~),
word(string的一个子类,用来保存单词,可以自己判断给出的字符能否在单词中使用!应该是这样~~~),
string(std::string的子类,内嵌了自己的哈希表类,增强了std::string的功能,现在知道的就这么多了。。。。。),
fileName(string的子类,用来表示文件名----具有路径的哦好像),
Pair(具有2个配对元素的list类,FixedList的子类,类似于stl中的pair),
Hash(哈希函数类,用来进行哈希运算)
。。。。。。。。还没完呢<<<<<<<<~~~~~~~~~~~~~ 今天先介绍这么多吧,时间长着呢,我再慢慢加!
希望更多的人了解OpenFOAM!大家一起来解读OpenFOAM!......

阅读全文(4984) | 评论:0

OpenFOAM——主要的类及他们之间的关系(2006-11-12 09:35:00)

摘要:今天介绍OpenFOAM中主要的类及其相互之间的作用。 1、Primitive与Container----基础类及容器类
2、描述空间及时间的类
3、张量的数学运算类
4、Field、Dimension Set、Boundary Conditon和Geometric Field---场、量纲、边界条件及几何场
5、Mesh---网格类
6、积分、微分及离散类
7、矩阵类
8、描述PDE(偏微分方程)的类
9、物理模型类 在OpenFOAM中代码的组织,及类的区分和实现都是基于以上这些部分分别编写的。
......

阅读全文(7195) | 评论:0