OpenFOAMのメッシュの記述

OpenFOAMにおけるメッシュの記述について説明します。

基本的なメッシュの構成物

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で参照されます。

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

primitiveMeshクラス

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

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

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

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

polyMeshクラス

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

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

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

fvMeshクラス

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

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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-05-31 (火) 08:18:13 (560d)