of中基本数据类型
就像学习C++第一课是学习数据类型一样,of是一个求解向量场的C++轮子,同样是强类型语言,因而了解数据类型尤其重要
和往常一样我们依旧从源码的角度分析openfoam
-
label(int类型)
typedef INT_SIZE(int, _t) label;
-
scalar(float类型)
typedef float floatScalar;
typedef floatScalar scalar;
说句个人经验,有时候vscode明明配置好了,但是使用scalar依旧报错,提示内容为未定义标识符“scalar”

可以改作floatScalar,效果一样,是一个不值得注意的报错,类似有很多,typedef层数太多难以识别,我个人认为这是由于of版本迭代导致的,比如说of换一个版本,上下部分变量名衔接不上,typedef就有用武之地了,这也导致了of代码版本越高阅读起来越迷茫
-
word(继承于string的一个类)
class word:public string{...}
在word的头文件中先是确定了几个需要重载的友元函数,例如返回值分别为Istream的输入流类
word类中有七种构造函数,内部重载了 = ,此外因为继承于string类,内部函数库非常丰富
-
vector(限定输入数量为3的向量)
typedef Vector<scalar> vector;
template<class Cmpt>
class Vector
:
public VectorSpace<Vector<Cmpt>, Cmpt, 3>
{...}
能看到vector对于输入元素也有限定,要求是float类型

-
tensor(继承于矩阵的3*3张量类)
typedef Tensor<scalar> tensor;
template<class Cmpt>
class Tensor
:
public MatrixSpace<Tensor<Cmpt>, Cmpt, 3, 3>
{...}
与vector类似
-
List(和list相似的容器)
List<word> newList(10);
List<label> myList(14);
myList.append(15);
cout << myList.begin() << endl;
List可以放的元素很多,与std中list类似,双链表结构,不可随机存储

浙公网安备 33010602011771号