博文
Debug命名空间(2008-03-03 17:50:00)
摘要:下面是debug命名空间中的各种方法,主要是向系统控制字典中提取和保存各种参数信息。
dictionary& controlDict();
//获取系统控制字典"ControlDict"的引用
dictionary& switchSet(const char* switchSetName, dictionary* switchSetPtr);
//从系统控制字典中查找选项集名"switchSetName"对应的字典,并返回该字典的引用
dictionary& debugSwitches();
//返回选项集名为"DebugSwithes"的字典
int debugSwitch
(
const char* switchName,
const int defaultValue = 0
);
//在字典"DebugSwitches"中查找是否有选项名为switchName的选项,有的话返回其值,否则在字典中增加数据对(switchName,defaultValue),同时返回defaultValue。
dictionary& infoSwitches();
//在系统控制字典中查找字典名为“InfoSwitches”的字典,并返回该字典的引用
int infoSwitch
(
const char* switchName,
const int default......
OpenFOAM IOstream基类(2008-01-03 17:12:00)
摘要:OpenFOAM中的I/O基类IOstream。
其内部定义的公有类型包括:
enum streamAccess{OPENED,CLOSED};
enum streamFormat{ASCII,BINARY};
enum compressionType{UNCOMPRESSED,COMPRESSED};
class versionNumber{float versionNumber_,int index_};
内部私有变量:
streamAccess openClosed_;
streamFormat format_;
versionNumber version_;
compressionType compression_;
ios_base::iostate ioState_;
static fileName name_;
保护变量:
int lineNumber_;
内部公有静态变量:
......
OpenFOAM输入输出(2008-01-02 18:21:00)
摘要:
OpenFOAM中的I/O系统
——继承结构一览
OpenFOAM中在STL的基础上构建了自己的I/O类结构,通过构造自己的输入输出系统,完成系统中自定义的一些类对象的输入输出。
这里首先介绍其I/O系统的类继承结构,其类间继承结构如下所示:
从图中可见OpenFOAM的I/O系统中基类为IOstream,其中定义里许多关于I/O流状态的描述,是一个I/O系统中必不可少的内容的抽象描述。
......
编译问题1:About cpuTime.H(2007-05-09 18:45:00)
摘要:编译时遇到的问题:
windows下没有sys/times.H头文件,及相应库文件,而在cpuTime.H中嵌入的该文件
#include <sys/times.H>
解决方法:将该语句注释掉
在该类的实现代码里将相应的方法用其他函数替代掉:
对cpuTime.H的修改:
#ifndef cpuTime_H
#define cpuTime_H
#include <time.h>
//bioexploreModify deinclude the <sys/times.h> which is not found
//#include <sys/times.h>
////bioexploreModifyEnd
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class cpuTime Declaration
\*---------------------------------------------------------------------------*/
class cpuTime
{
// Private data
//bioexploreModify change long to double
&nb......
在windows下调试OpenFOAM的核心代码(2007-05-08 00:10:00)
摘要:最近正在windows下作OpenFOAM的核心代码的编译及测试,由于OpenFOAM是在linux系统下编程的所以很多东西在windows里没有,要采用替代或绕过的方法,编译过程也很繁琐,正在不断摸索中,有了进展再在这里告诉大家!
欢迎继续关注我的Blog!......
OpenFOAM中描述场的类Field及与之相关的类(2006-12-01 16:10:00)
摘要:在OpenFOAM中有一个很重量级的角色——就是描述场的类Field,Field作为一个重量级角色在OpenFOAM中扮演着十分重要的任务,很多类都派生自Field类,因而对于Field的剖析就显得很重要。下面是我仅是我看了一部分她的代码后的一些体会,所以不是很全,以后再慢慢添加。
首先,该类是一个模板类,下面是它的继承关系图
可以看到,他继承了refCount及List类,这也就是为什么Field中没有私有变量的原因,他的私有变量都被“保存”在refCount及List中了,这里提到refCount不得不把tmp<Filed>请出来,refCount的主要目的也就是要为tmp<Field>提供一种可以用来计算对一个Field进行引用的次数,也就是每生成一个tmp<Field>对象,或者说每构造一个tmp<Field>对象,都将对该引用对象被引用次数进行计数,并附带在该Field对象本身,作为其一个特征,可以通过调用该对象的count()方法返回其被引用的次数。也可以通过okToDelete()来判断该对象是否因为存在引用而不能被删除。这些都是通过refCount赋予Field的天然特性,真的很巧妙,而且很精致,像是在欣赏一幅画,呵呵。
......
OpenFOAM中的哈希表类HashTable(2006-11-27 18:00:00)
摘要:在看OpenFOAM中的字典类时,其中有一个哈希表成员,所以今天就看看OpenFOAM中的哈希表类是怎么实现的!
我们知道哈希表一般是用来就是用来节省数据的存储和查找消耗的时间,所以在OpenFOAM这种要进行大量数据存储、查找及其他处理的计算程序中使用这样的类也就不足为奇了,那么它是怎样实现的呢,我们来看看!
首先看他的模板参数
template<class T, class Key=word, class Hash=string::hash>
class HashTable
其中T表示表中存储的数据的类型,Key为关键字(默认为word类)用于进行哈希函数运算的参数,Hash为使用的哈希函数(默认值为string类的内嵌类hash),我们先看看string中的hash是怎么定义的:
class hash
{
public:
inline hash();
inline size_type operator()(const string& key) const;
inline size_type operator()
(
const string& key,
const size_type tableSize
) const;
};
从中可见有两个版本的哈希函数:一......
OpenFOAM—primitive—products.h(2006-11-22 13:20:00)
摘要:前面在介绍vectorSpace时提到了两个模板类——innerProduct及crossProduct。今天就简单介绍引入这两个模板类的头文件products.h文件。从文件名里就可以看出在该头文件中定义了与乘积相关的类,的确是这样的。在该文件中除了定义了innerProduct和crossProduct之外还定义了outterProduct,scalarProduct及powProduct。下面分别介绍一下:
1、outerProduct模板
template<class arg1, class arg2>
class outerProduct {...} //定义了arg1类和arg2类进行外积之后得到的积的秩及其类型
2、crossProduct模板
template<class arg1, class arg2>
class crossProduct {...} //定义了arg1类和arg2类进行叉乘之后得到的积的秩及其类型
3、innerProduct模板
template<class arg1, class arg2>
class innerProduct {...} //定义了arg1类和arg2类进行内积之后得到的积的秩及其类型
4、scalarProduct模板
template<class arg1, class arg2>
class scalarProduct {...} //定义了arg1类和arg2类进行数乘之后得到的积的秩及其类型
5、powProduct模板
template<class arg1,int arg2>
class powProduct {...} //定义了arg1类进行arg2次乘幂之后得到的积的秩及其类型
以上这些模板类给标量,矢量及张量之间的乘积运算带来了统一的形式,因此使用起来更加方便。
......
OpenFOAM——primitive——Random类(2006-11-20 13:22:00)
摘要:今天介绍Random类——实现随机数的生成,包括标量,矢量以及张量!
私有成员变量:整型的seed
公有部分:
构造函数:
Random(const label& a);//给定一个常整数a进行构造
成员函数:
int bit(): //根据得到的随机数,返回1或者是0
scalar scalar01();//得到一个0-1之间的随机标量值
vector vector01();//得到三个元素都在0-1之间的随机矢量
tensor tensor01();//得到所有元素都在0-1之间的随机张量
sphericalTensor sphericalTensor01();//得到所有元素都在0-1之间的sphericalTensor
&nbs......
OpenFOAM——primitive——Pair模板类(2006-11-19 21:44:00)
摘要:STL中有pair用于实现成对的元素,在OpenFOAM中叶实现了这一个模板类。
template<class Type>
Pair:public FixedList<Type,2>;//由此可见该模板类是FixedList的子类,且该FixedList容量为2,即只有两个元素,这里的Fixed是OpenFOAM的container模板类里的一个,以后再介绍container时再进行详细的介绍。
该模板类的公有部分:
构造函数:
Pair(){}//默认构造函数什么都不做
Pair(const Type& f, const Type& s)//给出pair对元素来进行构造
{
first()=f;
second()=s
} ......