*[[OpenFOAMのメッシュの記述]] [#d5674751]

[[OpenFOAM:http://www.openfoam.org]]におけるメッシュの記述について説明します。


**基本的なブロック [#uef355d0]
**基本的なメッシュの構成物 [#uef355d0]

OpenFOAMのメッシュは4つの基本的なブロックで記述されます。
OpenFOAMのメッシュは4つの基本的な構成物から成ります。

-Points: Point(点)は座標ベクトルによって3次元空間における場所を定義します。2つのPointが同一の座標をもつことは許されていません。また、点は少なくとも1つのface(面)に属す必要があります。pointにはlabel(番号)によって名前が付けられます。

-Faces: face(面)はfaceを構成するpointのlabelを順番に並べたリストで定義されます。

-Cells: cell(セル)は面を構成するfaceのlabelリストで定義されます。

-Edges: edge(辺)は2つのpointをつなぐ線分で定義されます。edgeにつながるpointは、pointのlabelで参照されます。
-Edges: edge(辺)は2つのpointをつなぐ線分で定義されます。edgeにつながっているpointは、pointのlabelで参照されます。

全てのpoint, face, cell, edgeは唯一のlabelが割り振られます。これらの構成物を記述するメッシュが、最も基本のメッシュクラスとなる'''primitiveMesh'''です。

**'''primitiveMesh'''クラス [#g066384b]

'''primitiveMesh'''は名前の通り、メッシュを構成する最も基本的なクラスです。実際、'''primitiveMesh'''クラスは、基本的なメッシュデータを保持し、また、メッシュの隣接構造を構築する関数と、いくつかの幾何データを計算する関数を提供します。

'''primitiveMesh'''クラスが計算する幾何データは、セル中心、セル体積、面中心、面の面積です。

また、メッシュの隣接構造は、例えば、あるpointを有するcellやedgeは何か?やあるcellの隣のcellは何か?の質問に答えるための情報です。

pointsやcellsなどを取得するための仮想関数として'''points()''', '''faces()''', '''faceOwner()''', '''faceNeighbour'''が用意されています。これらは仮想関数なので、サブクラスで実装する必要があります。

**'''polyMesh'''クラス [#wb6fb446]

'''polyMesh'''クラスは、'''primitiveMesh'''クラスを継承します。したがって、'''primitiveMesh'''の仮想関数'''points()''', '''faces()''', '''faceOwner()''', '''faceNeighbour'''をオーバライドします。

'''polyMesh'''は、polyhedral cell(多面体セル)からなるメッシュを表現します。

'''polyMesh'''オブジェクトを作成するためには、メッシュの情報(point, face, cell)を、現在のcaseディレクトリから読み込んで構成します。

**'''fvMesh'''クラス [#g1f17510]

'''fvMesh'''クラスは'''polyMesh'''クラスを継承します。

'''fvMesh'''クラスは有限体積を記述する機能が追加されます。例えば、face area motion fluxの計算や、面積ベクトル、面積ベクトルの大きさを計算する機能が追加されます。



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS