OpenFOAMライブラリでプログラムを書く (3)変数の型
OpenFOAMはC++で書かれたCFD(Computational Fluid Dynamics)ライブラリです。今回はOpenFOAMライブラリの中から変数の型をご紹介します。
OpenFOAMで使用する変数の型
C++でプログラミングを行う場合、論理型にはbool、文字型にはchar、整数型にはint、浮動小数点数型にはfloatやdoubleを用います。C++では、これらの基本型と、const修飾子や、基本型に対する参照を意味する演算子&、ポインタを意味する演算子*、配列を意味する演算子[]からなる宣言演算子の組み合わせの、いわゆる組み込み型がオブジェクトを定義するのに用いられます。
OpenFOAMライブラリを用いてプログラミングを行う場合、C++の組み込み型を用いることもできますが、OpenFOAM独自の別名や、OpenFOAM独自のユーザ定義型を用いるとOpenFOAMライブラリの機能を幅広く利用することが可能になります。今回は、OpenFOAMが提供する別名とユーザ定義型からなる基本型をご紹介します。
OpenFOAMが提供する基本型を以下に示します。
OpenFOAMライブラリでは、label型とscalar型の使用バイト数、すなわち扱う値の範囲と精度は、ライブラリ作成時(コンパイル時)に決定されます。このため、C++言語の組み込み型であるint型とfloat型(あるいはdouble型)の代わりに、 それぞれlabel型とscalar型を使用すれば、プログラムの汎用性と整合性が上がります。
また、これ以外の浮動小数点数型(vector、 tensor、 symmTensor、 sphericalTensor)は、OpenFOAMのユーザ定義型であり、成分の数だけscalar型の値を保存します。これらの型に対しては、複数の算術演算子が定義されています。
たとえば、ベクトル変数 U とベクトル変数 V の内積(U⋅V)や、テンソル変数 T とベクトル変数 W の内積(T⋅W)は、算術演算子 & を用いて、それぞれ次のように記述できます。
scalar dotUV = U & V;
vector dotTW = T & W;
OpenFOAMでは内積だけではなく、加減算、外積などの算術演算子に加えて、さまざまな算術演算のための関数が用意されています。したがって、OpenFOAMの基本型を使用すれば、コード量も飛躍的に減らすことができます。
同様に、OpenFOAMが提供する文字列型にも多数の役立つ機能が定義されているので、 OpenFOAM独自の入力ファイルの読み込みなどのプログラミングを行う際に非常に便利です。
関連記事/関連ページ
●OpenFOAM ライブラリでプログラムを書く (2) ListクラスとDynamicListクラス
●OpenFOAM ライブラリでプログラムを書く (4) 入力ファイル
●OpenFOAM 解説書発刊のご案内