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类似,双链表结构,不可随机存储

posted @ 2023-02-19 13:49  TJUHE  阅读(75)  评论(0)    收藏  举报