おはようございます、こんにちは、こんばんは。
おひさ。まぐまっぐです。
今回は完全に忘備録。
おんなじことしたい人がいたら何かの助けになればいいなというのと、
自分も忘れて困ることあるかもしれないので書く。
自分はOpenFOAM使ってCFD解析している人。
いつもならCartesianMeshでメッシングするところなんだけど、
残念ながら少々解析モデルの形状が複雑でtetraMeshで作成したかった。
というわけで、Netgenに目を付けましたが、うまくいかなかったのでそのメモ。
前置きの失敗談はどうでもいいという人は下のほうに簡潔に書いておくのでそっちを参照のこと。
Netgenを使う上でこんなサイト(http://penguinitis.g1.xrea.com/study/OpenFOAM/Netgen/Netgen.html)
を見つけたのでそれに従って頑張ろうとした。
はじめはOpenFOAMの環境整えてあるLinux環境(ubuntu系)でインストールした。
バージョンは6.2あたり(パッケージマネージャで一番新しいのを適当にインスコした)
インストールは問題なく終了。
気を付けることがあるとすればnetgenとnetgen-headersの両方をちゃんとインストールしましょうということくらい。
でいざメッシング。
ファイル(僕の場合はSTLを利用)を読み込んでGenerateMeshを押すだけ。
が、なんかよく失敗される。
で、デバック画面を見てみると、
Surface meshing not successful. Meshing aborted!
の文字。
どうやら表面のメッシュ作成の段階で躓いているらしい。
GenerateMeshはMesh>MeshingOptions内で設定しているものが自動的に動くだけなので
普通に
Analyze Geometry
Mesh Edges
Mesh Surface
Optimize Surface
Mesh Volume
Optimize Volume
をMesh>から順番におして行くことに。
するとMeshEdgesで詰まってることが分かった。
僕は残念なことにメッシングに関する知識はミジンコ以下なので、解決策が思い浮かばない。
ただこれモデルのせいかを確かめるために、
ほかにも簡素なモデルとかいろいろ用意。
行けるやつ行けないやつ行けたこともあればいけない時もあるモデルとかもあった。
ふざけんなマジ意味わからん
で偶然にもメッシングに成功したものをOpenFOAM用に出力しようと思う。
ちなみに成功したかどうか確認しかたはGUI画面下のstatsラベルのPoints,Elements,SurfElementsに0以外の数字が入ってる時はたいてい成功してる。
不安なときはMesh>Check Surface MeshかMesh>check Volume Meshで確認すればよい。
境界の設定のため
Mesh>Edit Boundary Conditionsでモデルの境界面に対して任意の番号を振る。
同じ番号を振ると同じ境界と認識される。
メッシュの出力を行う。
File>ExportFiletypeからOpenFOAM 1.5+ Formatを選択し
File>ExportMeshで任意の場所にOpenFOAM用のconstantディレクトリが作成される。
...はずなのだが作成されず。
どうしたものかと調べてると
こんなの(https://sourceforge.net)を見つける。
どうやらバグらしい。
じゃあ、成功してる人は何なんだと思うと、
どうやら成功してる人はみんなバージョン4.9を使っていた。おいおいおい。
ということでバージョン4.9をインストールしなおすことに、
パッケージマネージャで入れようと思ったが、配布元のファイルが破損しているらしく、
ソースコードから再コンパイルするのがめんどくさかったのと、
解析用のつおいPCが使えるようになったので、
constantディレクトリ吐き出すだけならWindows環境でいいやということで
Windows版のNetgen4.9.13を入れることに。
ダウンロードはここから(64bitWinPC用)→https://ja.osdn.net/projects/sfnet_netgen-mesher/downloads/netgen-mesher
zip版あるじゃんと思ったが中身makeFileでじぶんでMakeしなければならなかったのでおとなしくこっちのインストール版で入れたほうがPC弱い僕みたいな人はよい。
Windows版のインストールの仕方は
1.インストーラーを起動する
2.Next.
3.I Agree
4.chooseComponentsで必要に応じてチェック入れる。僕はNetgenWithOCCにチェック入れた。
でよければNext
5.ここでインストール場所を聞かれるがC:\直下に置いたほうが良い。
僕の場合違うところに置くと.dlファイルのと関連付けがうまくいかず、起動すると延々と○○.dllがありませんと言われる羽目になる。
人によってはうまくいくかもしれんがうまくいかなかったらおとなしくC:\直下においてください。
場所を決めたらNext.
6.settingのファイルをどこに置くか聞かれるがこれはどこでもいい。Next
7.スタートメニュー度するか聞かれるが好みでどうぞ。
8.インストール
インストールが終わった後起動するか聞かれて起動するにしてもなぜか落ちることがあるが、2回目以降はちゃんと起動する。
で、先の方法でメッシュを切り境界名を設定する。
File>SaveMeshで一度保存しておく。
時々openFOAM用の出力に失敗するのと、
一度保存しておいたほうがなんかOpenFOAM用の出力の成功する可能性が高くなる。気がする。
File>ExportFiletypeでOpenFOAM 1.5+を選択
File>ExportMeshで任意の場所にconstantディレクトリが生成できる。
なお、boundaryのpatchの種類設定はたぶんNetgen上ではできないので、
自分で必要に応じてテキストエディタなどで書き換える必要がある。
ちなみにデフォルトではすべてpatchになっている。
また、元データをミリ単位でCADで作っていた人はたぶんサイズが想像の1000倍のサイズで出ていると思うので、OpenFOAMユーティリティのscaleMeshとか使うとよい。
いろいろ設定いじるとそれなりに実用できるメッシュかな?くらいのレベルのメッシュができるけどなんかうまくいかない部分が多いソフトな感じがする。使ったことない機能とかまだあるので勉強していきたい。暇があれば。
忙しい人向け
- Netgenのバージョン4.9をインストールします。
- generateMeshなどをつかってメッシュを切ります。
- Mesh>EditBoundaryConditionsで協会の設定をします
- 一度File>SaveMeshで保存します。
- File>ExportFiletypeでOpenFOAM 1.5+を選択します。
-
File>ExportMeshで任意の場所にconstantディレクトリが生成できる
-
必要に応じてconstant/boundaryを書き換えます。
もうちょっと使い方のこと書きたいね。やる気と暇があれば。
あとPrismaticBoundaryLayerうまくいかないので誰か助けてください。
ではまたノシ