LoginSignup
2
1

More than 5 years have passed since last update.

OpenFOAM: 導入編 cfMeshのインストール for OpenFOAM 6

Posted at

3月の初歩情報交換会@北東北の資料用第2弾です。

OpenFOAM用メッシュ生成にはいくつかの方法がありますが、大別すると2つに分けられると思います。

1.OpenFOAM標準のblockMesh, snappyHexMeshコマンドを利用する
2.商用あるいはオープンソースmesherを利用する。最近のメッシュ生成ソフトウェアのいくつかは標準でOpenFOAM用メッシュを出力できるようですが、必要に応じてOpenFOAMに付属するコンバートコマンドを利用する

今回は後者に関して、cfMeshと呼ばれるオープンソースmesher(テトラやポリヘドラルメッシュ、境界層メッシュ生成に対応)の導入についてまとめます。

cfMeshとは?

https://cfmesh.com/ にサイトがあります。もともとは商用GUIメッシュ生成ソフトウエア(cfMesh-pro→CF-Mesh+)ですが、そのコア部分をライブラリおよびCUIコマンドツール群cfMeshとして公開(GPLv3)しています。商用版の最新版よりも機能的に少しバージョンが古くなるようですが、ありがたく利用させていただくことにします。

機能的にはsnappyHexMesh(以下sHM)と似ていますが、STLファイルを取り込み、Cartesian, tetrahedra, hexahedra, polyhedraなどの各種メッシュを生成したり、境界層メッシュなどを生成することができ、自動mesh refinementなども可能になっています。全体的にsHMよりも使いやすい感じです(メッシュ生成対象によりけりですが)。

cfMeshのダウンロード・インストール

https://sourceforge.net/p/cfmesh/code/ci/development/tree/ からdevelopment branchを利用します。
ダウンロードには、コマンドラインでgitを使います。gitはシステムに入っていると思いますが、
sudo apt install gitでもインストールできます。

なお、今回はOpenFOAM 6と連携して使うことを想定しています。cfMeshのライブラリはOpenFOAMに依存する部分があるので、cfMeshのビルドの際は、連携するOpenFOAMのバージョンに合わせたもの(OpenFOAM 5/6はdevelopment branch)が必要です。

また、OpenFOAM v1812などのESI版にはcfMeshが同梱されるようになっていますので、そちらをお使い下さい。

cd ~/OpenFOAM
mkdir user-6 (ユーザー名は適宜読み替えてください。ここではuserというユーザー名にしています)
cd user-6
git clone https://git.code.sf.net/p/cfmesh/code cfmesh-development
Cloning into 'cfmesh-development'...
remote: Enumerating objects: 9814, done.
remote: Counting objects: 100% (9814/9814), done.
remote: Compressing objects: 100% (4954/4954), done.
remote: Total 9814 (delta 6299), reused 7459 (delta 4675)
Receiving objects: 100% (9814/9814), 22.16 MiB | 3.92 MiB/s, done.
Resolving deltas: 100% (6299/6299), done.

cd cfmesh-development
git checkout development
git pull
of6 (OpenFOAMの環境設定が必要です)
./Allwmake -j 2
 :

ビルドに成功したら、動作確認です。
なぜか、Default-6というフォルダにインストールされてしまいましたが、pathが通っているのでこのまま使います。

$ which cartesianMesh
/home/user/OpenFOAM/Default-6/platforms/linux64GccDPInt32Opt/bin/cartesianMesh
$ cartesianMesh -help

Usage: cartesianMesh [OPTIONS]
options:
  -case <dir>       specify alternate case directory, default is the cwd
  -fileHandler <handler>
                    override the fileHandler
  -hostRoots <(((host1 dir1) .. (hostN dirN))>
                    slave root directories (per host) for distributed running
  -noFunctionObjects
                    do not execute functionObjects
  -parallel         run in parallel
  -roots <(dir1 .. dirN)>
                    slave root directories for distributed running
  -srcDoc           display source code in browser
  -doc              display application documentation in browser
  -help             print the usage

Using: OpenFOAM-6 (see www.OpenFOAM.org)
Build: 6-6257b17a4cf8

導入されるコマンド

個々のコマンドの機能については、付属のusers Guide 23Pageをご覧ください。
(個人的に)よく使うものは、cartesianMesh, cartesian2DMesh, checkSurfaceMesh, surfaceFeatureEdgesです。

$ cd $FOAM_USER_APPBIN
$ ls -1
FLMAToSurface
FMSToSurface
FMSToVTK
cartesian2DMesh
cartesianMesh
checkSurfaceMesh
copySurfaceParts
extrudeEdgesInto2DSurface
generateBoundaryLayers
importSurfaceAsSubset
improveMeshQuality
improveSymmetryPlanes
mergeSurfacePatches
meshToFPMA
pMesh
patchesToSubsets
preparePar
removeSurfaceFacets
scaleMesh
scaleSurfaceMesh
subsetToPatch
surfaceFeatureEdges
surfaceGenerateBoundingBox
surfaceToFMS
tetMesh

付属Totorial

いくつかTutorialが付属していますので、cfMeshの使い方を説明する「活用編」で、いくつか紹介することにします。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1