Salome による OpenFOAM 用メッシュの作成

2011年7月31日

はじめに

Salome で OpenFOAM 用メッシュを作成する。

使用バージョン

SALOME-MECA-2011.1-x86_64, OpenSUSE 11.3 x86_64

インストール

Salome-Meca は Code_Aster のページ から入手できる。

パッケージを展開。

$ tar xvzf SALOME-MECA-2011.1-LGPL-x86_64.tgz -C ~/
$ cd ~/SALOME-MECA-2011.1-LGPL-x86_64

設定スクリプトの実行。

$ cd postinstall
$ ./postinstall.py

Salome-Meca を起動。

$ ..
$ ./runSalomeMeca

~/SALOME-MECA-2011.1-LGPL-x86_64 を PATH に追加しておくとよい。~/.bashrc につぎのように記述する。

export PATH=~/SALOME-MECA-2011.1-x86_64:$PATH

~/.bashrc を読み込み設定を反映させる。

$ . ~/.bashrc

Salome 入門

Salome は様々なモジュールで構成されており、それぞれのモジュールでメニューや操作が異なる。以下では Geometry モジュールを例にして基本的な使い方を示す。

Salome-Meca を起動。

$ runSalomeMeca

"New document" ボタンを押してドキュメントを新規作成する。

新規ドキュメントが開く。

"Geometry" ボタンを押して Geometry モジュールを起動する。

ジオメトリ作成ボタンをどれか押す。

ダイアログが表示される。"Apply and Close" ボタンを押すと、形状が作成される。

表示モードの切り替え

メニューの [View]-[Display Mode] で "Wireframe" と "Shading" の切り替えができる。

マウスによる画面操作

回転Ctrl + 右ボタンドラッグ
平行移動Ctrl + 中央ボタンドラッグ
拡大・縮小Ctrl + 左ボタンドラッグ/ホイール回転

オブジェクトの選択

直接選択左クリック/Object Browser で項目クリック
矩形選択左ボタンドラッグ
多角形選択右ボタンドラッグしながら左クリック、終了は左ダブルクリック

オブジェクトの作成・削除

オブジェクトの作成

オブジェクトの作成はメニュー [New Entity] かツールバーのボタンで行う

オブジェクトの削除

オブジェクトの削除は、オブジェクトを選択してポップアップメニュー (右クリック) "Delete" か、Del キーを押す。画面左の Object Browser でも可能。

オブジェクトの操作

オブジェクトの操作はメニュー [Operations] かツールバーのボタンで行う。ダイアログでオブジェクトを選択する場合、矢印ボタンを押した後、画面か Object Browser でオブジェクトを指定する (自動で選択されることもある)。

オブジェクトの表示・非表示

オブジェクトを選択してポップアップメニュー Hide/Show で表示・非表示を切り替えられる。Object Browser でも可能。

終了

メニュー [File]-[Exit] で終了。GUI が終了してもコマンドラインでは Python が起動したままになるので、Ctrl+D で終了する。

作成するモデル

ミキシングエルボー

モデルの作成

  1. Salome を起動しドキュメントの新規作成、Geometry モジュールを起動する。
  2. メニュー [New Entity]-[Primitives]-[Cylinder] で円筒を作る。Radius : 5, Height : 30 とする。
  3. 円筒を回転する。その前に回転軸を作る。メニュー [New Entity]-[Basic]-[Point] で (0, 0, 0), (0, 1, 0) の 2 点を作る。メニュー [New Entity]-[Basic]-[Line] で先の 2 点から線分を作る。メニュー [Operations]-[Transformation]-[Rotation] で "Object" に円筒を選び、"Axis" に線分を選び、Angle に 90 を入れて、"Create a copy" のチェックを外して "Apply" ボタンを押す。
  4. Object Browser で円筒を右クリック、"Create Group" を選ぶ。ダイアログが表示されるので、"Shape Type" にフェイスを選び、円筒の端の面 (曲がり部を作るための面) を選んで "Add" ボタンを押し "Apply" ボタンを押す。名前はなんでもよい。
  5. 円筒の端の面を回転させて曲がり部を作る。その前に回転軸を作る。上と同様に (30, 0, 15) - (30, 1, 15) の線分を作る。メニュー [New Entity]-[Generation]-[Revolution] を選び、"Object" に Object Browser から円筒の端のグループを選択、"Axis" に回転軸を設定して "Angle" を -90 とし "Apply" ボタンを押す。
  6. 上と同様に曲がり部の端の面のグループを作る。今度はそれに対してメニュー [New Entity]-[Generation]-[Extrusion] を使って 30 だけ上に伸ばす。Vector が必要なので前もって (0, 0, 1) の Vector を作っておく。
  7. 半径 2.5、高さ 15 の円筒を作る。それを [Operations]-[Transformation]-[Translate] で -10 だけ z 方向に移動させる。そのあと、はじめに作った回転軸 (0, 0, 0) - (0, 1, 0) で -45 度回転させる。それを (50, 0, 15) 移動させる。それを曲がり部を作ったときの回転軸で 45 度回転させる。
  8. ソリッドをすべてくっつける。メニュー [Operations]-[Boolean]-[Fuse] で行うのだが、2 つずつしか選べないので、2 つずつちまちまくっつけていく。
  9. すべてくっつけたソリッドに対して、"Create Group" で境界条件をつける面を作成する。
  10. "Mesh" ボタンを押して Mesh モジュールを起動する。
  11. メニュー [Mesh]-[Create Mesh] を選ぶ。Object としてすべてくっつけたオブジェクトを選択する。"Assign a set of hypotheses" の "Automatic Tetrahedralization" を選び、メッシュサイズを適当に設定する。"Algorithm" として自動的に "Tetrahedron (Netgen)" (テトラメッシュを作るアルゴリズム) が選ばれる。"Apply and Close" ボタンを押す。
  12. Object Browser の Mesh ツリーから今作ったメッシュ (名前を変えていなければ "Mesh_1") を選択、ポップアップメニューで "Compute" を選ぶと、メッシュが作成される。
  13. 境界上件をつける面を作成する。Object Browser の "Mesh_1" を右クリックし "Create Group" を選ぶ。"Elements Type" を "Face" にし、"Group type" を "Group on geometry" とする。"Geometry Object" の矢印ボタンで "Direct Geometry Selection" を選び、前もって作成しておいた境界条件用の面グループを選択する。必要な分だけグループを作成する。
  14. Object Browser の "Mesh_1" を右クリックし "Export to UNV file" を選び、UNV ファイル (メッシュファイル) を保存する。

OpenFOAM で UNV ファイルを使う場合は、ideasUnvToFoam で変換する。

$ ideasUnvToFoam Mesh_1.unv