お知らせ
OpenFOAM v1712では,標準状態でcfMeshが同梱されています。
関連資料
cfMesh インストール方法
cfMeshには,最近のOpenFOAMあるいはfoam-extendが必要です。先にインストールしておいてください。

下記サイトからソースコード cfMesh-v1.1.1.tgz をダウンロードする。
http://sourceforge.net/projects/cfmesh/files/v1.1.1/

ダウンロードしたファイルを展開する。cfMesh-v1.1.1ディレクトリができる。これを、インストール先(例えば、~/OpenFOAM/ に移動する。)

OpenFOAMの設定が完了している端末から,先ほどのディレクトリに移動して,Allwmakeを実行する。

例題は,展開したディレクトリに含まれている。必要であれば,このディレクトリを実行用ディレクトリにコピーする。
cfMesh でのメッシュ生成法(メモ1)
cfMesh の使い方に関するメモ。
## cfMeshの利点 ##

最低限,次の2つだけを指定すれば,メッシュが生成できる。
・ surfaceFile   points to a geometry file. The path to the geometry file is relative to the path of the case directory.
・ maxCellSize   represent the default cell size used for the meshing job. It is the maximum cell size generated in the domain.

さらに領域を指定した細分化なども可能。

メモリ使用量が少ない

マルチスレッドに標準対応している。複数コアを搭載したマシンであれば,単にコマンドを実行するだけで,マシン内のマルチコアを活用した並列処理が行われる。

## 一連の作業の流れ ##

Salomeでパッチ毎にSTLファイルを書き出す。そのSTLファイルを結合する。特徴線を抽出してcfMesh形式のファイルにする。

## 作業 ##

 cfMesh では,単一のSTLファイルを使う。

 下記の例題を見ると,STLファイル内で,面毎に名前が付いている。これによって,作成されたメッシュでのパッチ名が変わる。
   /home/user/OpenFOAM/user-2.3.x/run/cfMesh-tutorials/cartesianMesh/sawOctree

 ファイル内部構造は下記のようなもの.

solid patch000
  facet normal 0.811072 -0.468654 0.350037
    outer loop
       vertex 4.76676 10.8144 51.1671
       vertex 4.64955 10.8767 51.5221
       vertex 4.59512 10.6202 51.3048
    endloop
  endfacet
  同様・・・
endsolid patch000
solid patch001
  facet ...
endsolid patch001


パッチ毎のSTLファイルを作成.その中でsolid名を付けておく。
それらのSTLファイルを結合して,1つのSTLとする。
これで良さそう。

salome でSTLファイルを作成したところ,solid名が空だった。
その場合には,例えば,下記の様なコマンドで,各ファイルにsolid名を追加する。そのファイルを結合すればよい。
sed -i".org" -e "s/solid/solid name01/g" name01.stl
sed -i".org" -e "s/solid/solid name02/g" name02.stl
cat name01.stl name02.stl > newName.stl

元のstlファイルだけだと,エッジがつぶれることがある。
特徴線を含んだ形に変更するためには,下記のコマンドを実行する。(引数は入力ファイル名と出力ファイル名)
surfaceFeatureEdges newName.stl newNameWithFeature.stl
このsurfaceFeatureEdgesでは,出力ファイルの拡張子をfmsにすることで,cfMeshのファイル形式で出力される。
surfaceFeatureEdges newName.stl newNameWithFeature.fms
cfMesh と symmetryPlane
 OpenFOAM で symmetryPlane 境界条件を使うとき,面からのズレが厳しくチェックされる。

 cfMeshでメッシュを生成したとき,メッシュの生成は完了するが,paraFoam や 計算実行時に,これが原因で下記のエラーが発生することがある。
--> FOAM FATAL ERROR: 
Symmetry plane 'xMin' is not planar.

 symmetryPlaneが曲面と接するところで,このエラーが発生しやすい。エラー発生箇所近傍でのメッシュ解像度を向上させると,エラーがなくなることがある。

 cfMeshの最新版(v.1.0.1)では,上記問題へ対応するためのユーティリティー improveSymmetryPlanes が追加された。cartesianMeshなどでメッシュを生成した後,このユーティリティーを実行することで,symmetryPlane での節点を揃えてくれる。

 実行方法は,単純にユーティリティーを実行するだけ。設定ファイルは不要である。constant/polyMesh/boundary ファイルから symmetryPlane を探しだし,修正してくれる。ソースを見ると,3つ以上の対称面があるとダメらしい。
標準チュートリアル の修正について
標準で添付されている tutorials には,エラーが発生するものがあります。

cartesianMesh/sBendOctree
   パイプの左右対称性を利用して,対象境界 symmetryPlane を使う例題です。
   標準の設定のままでは,symmetryPlane が平面でないというエラーが発生します。
   system/meshDict 内で,maxCellSize を 0.08 に小さくすると,解決しました。
   セルサイズが局所的な特徴に対して大きすぎるとき,このようなエラーが発生することがあります。

cartesianMesh/sawOctree
   並列処理後のセル統合でエラーが発生します。
   ./Allrun の reconstructParMesh のオプションを下記の様に修正します。
   runApplication reconstructParMesh -constant -fullMatch
お知らせ
OpenFOAM 入門講習会,および,OpenFOAM 中上級者向け講習会を開催します。

2015年11月27日(金)富山国際会議場で開催するオープンCAEシンポジウム2015@富山 トレーニングの一環です。

(入門講習会)
FreeCADで3Dモデルを作成し,cfMeshで計算用セルを生成,OpenFOAMで流体計算を実施するという,一連の流れを体験できます。

(中上級者向け講習会)
ソースコードの読み方,コンパイルの方法,境界条件の種類・実装方法,新しい境界条件の作成など,豊富な内容です。

ぜひ,ご参加ください。詳細は,下記サイトをご覧ください。
http://www.opencae.or.jp/wiki/オープンCAEシンポジウム2015