SwiftSnap によるメッシュの作成2012年6月19日 | |
はじめにBlender アドオン SwiftSnap で OpenFOAM のメッシュを作る。 使用バージョンOpenFOAM 2.1.1, PyFoam 0.5.7, Blender 2.62 SwiftSnap の入手SwiftSnap を ここ から入手。 Blender のセットアップSwiftSnap の Blender 対応バージョンが "v2.6x, with x<3" とあるので、ここ から Blender 2.62 を入手する。 パッケージを適当なところに展開。 $ tar xvjf blender-2.62-linux-glibc27-x86_64.tar.bz2 -C ~/opt パスを通しておく。 SwiftSnap のセットアップSwiftSnap のパッケージを展開し、Blender のディレクトリのバージョンディレクトリの中の "scripts/addons" の中に置く。 $ tar xvzf Swiftsnap.tar.gz $ cp -r Swiftsnap ~/opt/blender-2.62-linux-glibc27-x86_64/2.62/scripts/addons Blender を起動 $ blender メニュー [File]-[User Preferences...] で "Addons" を選び、"Categories" に "OpenFOAM"、その中に "OpenFOAM: SwiftSnap" という項目があればアドオンは認識されている。あとは項目にチェックを入れ、"Save As Default" ボタンを押せば起動時に SwiftSnap が有効になる。 ![]() SwiftSnap を使ってみるBlender を起動時に設置されている Cubic を使ってメッシュを作ってみる。Cubic を選択したまま、"Object" アイコンを押す。SwiftSnap が有効になっていれば、その一番下に項目が出てくる。 ![]() ![]() ボタンを押せば設定画面が開く。 ![]() "Patch settings" でパッチの設定ができる。"Edit Mode" 面を選び、名前を設定して "Set Patch" ボタンを押すとパッチが設定される。"Add Layers" にチェックを入れておけば、レイヤー数を設定できる。 ![]() ![]() 領域内部の座標を指定するために、カーソルを Cubic の内部に置いた状態で "Set locationMesh" ボタンを押す。 blockMesh によるベースメッシュのために、"Make base mesh" にチェックを入れ、"resolution" でメッシュサイズを指定する。 ![]() 最後に "Write" ボタンで設定ファイルを書き出す。"snappyHexMeshDict", "triSurface", "blockMeshDict" が書き出される。 メッシュの作成icoFoam のケースを作ってみる。 $ cp -r /opt/openfoam211/tutorials/incompressible/icoFoam/cavity square SwiftSnap で作ったファイルをそれぞれ設定する。 $ mv snappyHexMeshDict square/system $ mv blockMeshDict square/constant/polyMesh $ mv triSurface square/constant blockMesh を実行。 $ cd square $ blockMesh system/decomposeParDict を作る。 $ pyFoamDecompose.py --method=scotch . 4 system/decomposeParDict の "method" の "scotch" を "ptscotch" に書き換えておく。ここではパラレル実行しないので、processor* は消す。snappyHexMesh の実行。 $ rm -r processor* $ snappyHexMesh メッシュをチェック。 ![]() ![]() レイヤーもちゃんと設定されている。 問題なければ本番実行。 $ pyFoamClearCase.py . $ snappyHexMesh -overwrite 境界の名前を修正。 $ sed -i 's/_Exportedfromblender//' constant/polyMesh/boundary 必要なら snapEdge を実行。 $ snapEdge -overwrite フィールドの境界名を修正。 $ pyFoamCreateBoundaryPatches.py --verbose --overwrite --clear-unused 0/U $ pyFoamCreateBoundaryPatches.py --verbose --overwrite --clear-unused 0/p 境界条件を設定して icoFoam を実行。 $ icoFoam | |
| PENGUINITIS | |