博文

OpenFOAM类——Time类(2008-03-28 22:32:00)

摘要:Time是一个很复杂的类,他继承了多达5个类——clock,cpuTime,TimePaths,OjbectRegistry和TimeState。上图是其引入的头文件列表。 下面将其组成进行分析: 从上面两图中可以看出该类十分庞大,具有大量的成员变量和成员函数,仅就其主要的进行详述,其他部分请参见原代码。  ......

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

OpenFOAM类——argList类(2008-03-28 21:37:00)

摘要:argList类的组成如下图所示:私有成员变量的类型:        stringList args_;        HashTable<string> options_;         word executable_;        fileName rootPath_;        fileName globalCase_;        fileName case_;        bool parRun_;         ParRunControl parRunControl_;         // 与信号处理有关的成员变量        sigFpe sigFpe_;        sigInt sigInt_;        sigQuit sigQuit_;        sigSegv sigSegv_;公有静态成员变量:        static SLList<string> validArgs;        static HashTable<string&......

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

OpenFOAM类——ParRunControl类(2008-03-28 20:19:00)

摘要:ParRunControl类的成员情况如下从上图可见,该类为非模板类,相对比较简单。私有成员变量:       RunPar,bool型变量公有构造函数:        ParRunControl(), 该构造函数只是初始化RunPar=false;共有析构函数:        ~ParRunControl(),如果RunPar=true,则显示信息“Finalising parallel run”,并调用Pstream的exit()函数。共有成员函数:        void runPar(int& argc, char**& argv);   设置RunPar=true,并调用Pstream的                                                                          init(argc,argv),如果调用失败,显示出错信息。       bool parRun() const;   返回RunP......

阅读全文(3611) | 评论:1

OpenFOAM——autoPtr模板类(2008-03-28 14:54:00)

摘要:autoPtr类是一个模板类,其主体结构如下:其中,可以看出有一个私有变量T* ptr_;ptr_用来保存一个T类型的对象的指针。该类提供两个构造函数:inline explicit autoPtr(T* = NULL);和复制构造函数inline autoPtr(const autoPtr<T>&);析构函数:inline ~autoPtr();用来在析构对象时,删除ptr_指向的对象所占的内存成员函数:       inline bool valid() const; 如果ptr_指向某个对象,则返回true,否则返回false       inline T* ptr();  返回指向ptr_指向对象的指针,并设置ptr_=NULL;       inline void set(T* p);  如果ptr_已经指向具体的对象,则抱错否则ptr_=p       inline void reset(T* p);  如果ptr_已经指向具体的对象,则首先删除该对象的内存,并设置ptr_=p;       inline void clear();   调用reset(NULL);       inline T& operator()();   如果ptr_指向了具体的对象,则返回该对象的拷贝       inline const T& operator()() const;    operator()的const版本       inline operator const T&() const;    返回一个T类型对象的co......

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

已经看过的类(2008-03-28 14:31:00)

摘要:已经理解并在此整理的类:提供连接,可直接点开各类的链接: AaccessOp CclockDdimensionSetdimesioned<Type> FFieldHHashTableHashTable详解IIOstreamPPair模板类ParRunControl类primitive类productsRRandom类refCountTTime类TimePathstmp<class T>VVector类VectorSpace类VectorSpaceOps类  ......

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

OpenFOAM类——accessOp类(2008-03-21 20:25:00)

摘要:所在源文件:listlistOps.H 描述:用来获得某个类型的常量引用的函数对象类模板类:是模板参数:class T 代码:const T& operator()(const T& x) const    {        return x;    }仅有一个成员函数operator(),说明了该类是一个函数对象类......

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

OpenFOAM的类(2008-03-21 20:20:00)

摘要:OpenFOAM共有1496个类现在分析了10个,还有1486个。......

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

OpenFOAM的模板类tmp<class T>(2008-03-11 12:32:00)

摘要:tmp<T>是为实现创建T类型临时对象而设计的类。 该类有三个私有变量bool isTmp_(判断是否为临时对象的标志,是则为true,否为false); mutable T* ptr_(指向T类型对象的指针)和const T& ref_(指向T类型常量对象的常量引用)。  ......

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

OpenFOAM的refCount类描述(2008-03-11 12:23:00)

摘要:refCount类是专门为tmp<Field>类定制的引用次数计数类。 该类仅有一个私有变量int count_;用来保存计数个数,并通过私有化封闭了其复制构造及赋值操作子功能。 默认构造函数,将count_设为0。 提供公有函数int count() const  (返回被引用的个数,即count_的值),bool okToDelete() const (当count_>0时返回false,count_=0时返回true )及void resetRefCount() (重置类的对象,将私有变量count_设为0)。 另外,该类还支持自增(++)及自减(--)操作子,实现计数(count_)的增加和减少. 对于一个继承自该类的子类即具有以上所有公有功能。......

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

openfoam 网格类的编程方法(2008-03-03 22:36:00)

摘要:openfoam对于读入的网格,会进行一系列严格的检验,所以下面也会写一些它到底检测了写什么东西。Points: 在Openfoam中,point是用单位为m的3维矢量来定义的。所有的点都被保存在一个list中,用list中的位置标号来代表这个点。对于点,openfoam检测如下两个方面:1. 包含points的list中是否有坐标完全相同的点。2. list中的point是否都至少属于一个面。 Faces: 在openfoam中,包含有序点的一个list(A face is an ordered list of points)。在这个list中,点是用标号来表示的。点标号按照如下要求排列:每两个相邻的点都构成面的一条边。也就是所在这里list中,可以任意选取一个点作为list的第一个元素,然后按照顺时针或者逆时针方向依次找到面上的点,插入到list中。在openfoam中,所有的面都被包含在一个 list中。并且用该面在list中的位置标号来表示这个面。面的法线方向按照该面中包含点走向的右手法则来定。(如果点是按照逆时针方向排列的,则法线方向指向我们自己)。在openfoam中有如下两种面:1. 内部面:这些面连接并且只能连接2个cell,对于每个内部面,面中点按照下面的规则来排序:面的法线方向指向cell标号比较大的那个cell。2.边界面:这些面只属于一个cell。一个边界面is addressed by one cell(only) and a boundary patch。 边界面上点的排序规则如下:面的法线方向point outside 计算区域。面需要满足如下的条件:一般来说面应该是凸面,或者至少面的质心应该位于面里面。面可以是弯曲的(所有的点不需要共面)。 Cells:  在openfoam中,cell是faces的一个list。在list中faces可以任意排列。cell需要满足如下的条件:1. contiguous2. convex:Every cell must be convex and its cell centre inside the cell3. closed:包含两方面的意义:  (1)几何封闭:当所有的面矢量都指向外法向时,他们的和应该等于0.   (2)拓扑封闭:在本cell中的......

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