OpenFOAMにおけるメッシュの記述について説明します。
OpenFOAMのメッシュは4つの基本的な構成物から成ります。
全てのpoint, face, cell, edgeは唯一のlabelが割り振られます。これらの構成物を記述するメッシュが、最も基本のメッシュクラスとなるprimitiveMeshです。
primitiveMeshは名前の通り、メッシュを構成する最も基本的なクラスです。実際、primitiveMeshクラスは、基本的なメッシュデータを保持し、また、メッシュの隣接構造を構築する関数と、いくつかの幾何データを計算する関数を提供します。
primitiveMeshクラスが計算する幾何データは、セル中心、セル体積、面中心、面の面積です。
また、メッシュの隣接構造は、例えば、あるpointを有するcellやedgeは何か?やあるcellの隣のcellは何か?の質問に答えるための情報です。
pointsやcellsなどを取得するための仮想関数としてpoints(), faces(), faceOwner(), faceNeighbourが用意されています。これらは仮想関数なので、サブクラスで実装する必要があります。
polyMeshクラスは、primitiveMeshクラスを継承します。したがって、primitiveMeshの仮想関数points(), faces(), faceOwner(), faceNeighbourをオーバライドします。
polyMeshは、polyhedral cell(多面体セル)からなるメッシュを表現します。
polyMeshオブジェクトを作成するためには、メッシュの情報(point, face, cell)を、現在のcaseディレクトリから読み込んで構成します。
fvMeshクラスはpolyMeshクラスを継承します。
fvMeshクラスは有限体積を記述する機能が追加されます。例えば、face area motion fluxの計算や、面積ベクトル、面積ベクトルの大きさを計算する機能が追加されます。