Gmshでモデルを作成したら、そのままメッシュを切ることができます。 下図の立方体のモデルを作成し、メッシュ作成の過程を見てみます。
とりあえず切ってみる
モデルの準備ができたら、とりあえずメッシュを作成してみます。 画面左から[Modules]-[Geometry]-[Mesh]-[2D](または [3D] )を選択します。( [1D] はあまり使わないと思われます。 )
- 2D : 線と面を分割します。体積が有ってもメッシュは作成されません。
- 3D : 2D + 体積を分割します。
いきなり[3D]でもよいですし、[2D]で大まかな分割具合を確認してから[3D]でもいいと思います。
とりあえず [3D] で切ってみます。
デフォルトの設定では、3角形1次要素で作成されるようです。メッシュの状態(要素の種類と数)を確認するには、メニューバーから[Tools]-[Statistics]を選択、Statisticsの画面が出てくるので、[Mesh]タブを選択します。下図では、三角形要素が24、四面体要素が24あるようです。
要素形状を変更する
解析には四角形要素もよく使われるので、要素形状を四角形(六面体)に変更します。メニューバーから[Tools]-[Options]を選択、Options画面が出てくるので、[Mesh]メニュー、[General]タブを選択します。Subdivision algorithmの欄を、「All Hexas」に変更します。
この状態で再度メッシュを切ってみます。(前のメッシュの存在が気になる場合は、[Modules]-[Geometry]-[Reload script]でファイルを再読込することでメッシュが消えます)
四角形(六面体)要素に分割することができました。
もう少しきれいなメッシュにしたい
メッシュは切れましたが、あまりきれいなメッシュではありません。メッシュの状態は解析の精度に影響してくるので、できればきれいなメッシュを作成したいところです。
立方体メッシュの作成
ここでは、[Modules]-[Mesh]-[Define]-[Transfinite]-[Curve] ( [Surface] [Volume] ) と[Modules]-[Mesh]-[Define]-[Recombine]を使います。
下記の手順でメッシュを整えます。オプションのSubdivision algorithmは、「None」にしておきます。(「All Hexas」でも構いません)
Transfinite curve
[Modules]-[Mesh]-[Define]-[Transfinite]-[Curve]を選択します。現れるMesh Context の Number of points 欄に1辺に作成するノード数を入力します。数値は自由です。適用する線(ここでは全ての線)を選択し、線が赤くなったらキーボード「e」で適用します。
Transfinite Surface
[Modules]-[Mesh]-[Define]-[Transfinite]-[Surface] を選択します。Mesh Context が現れますが変更はしません。面を1つ選択し、面が赤くなったらキーボード「e」で適用します。複数の面を選択できないので、1面ずつ6回繰り返します。
Recombine
[Modules]-[Mesh]-[Define]-[Recombine]を選択します。コンテキスト画面はでないので、すべての面を選択し、赤くなったらキーボード「e」で適用します(ここは複数面の選択が可能)。この状態で 2D のメッシュを切ると、立方体の表面はきれいな四角形になっています。3D のメッシュはまだ美しくありません。
Transfinite Volume
[Modules]-[Mesh]-[Define]-[Transfinite]-[Volume]を選択します。ここでは、1つの体積と8つの点を選択します。選択する順番に注意が必要です。
- まず体積を選択
- 任意の面を1周するように点を選択
- 反対の面を↑の順に対応する順で点を選択
下図の①~⑨が選択する順番となります。
選択したら、キーボード「e」で適用します。そして 3D でメッシュを切ると、きれいな立方体で分割されたメッシュを得ることができました。
もう少し簡単に作りたい
上記の1~4までの作業は、マウス操作が多く手間がかかります。また、.geoファイル上には次のように記録されています。
Transfinite Curve {11, 6, 7, 3, 12, 9, 10, 5, 4, 8, 1, 2} = 5 Using Progression 1;
Transfinite Surface {1};
Transfinite Surface {3};
Transfinite Surface {2};
Transfinite Surface {5};
Transfinite Surface {4};
Transfinite Surface {6};
Recombine Surface {5, 6, 2, 4, 1, 3};
Transfinite Volume{1} = {1, 5, 6, 2, 4, 8, 7, 3};
点や面の番号を直接しているので、モデル形状が修正され番号が変わってしまうと、同じ命令は使えません。そこで、上記を削除し、下記の命令に置き換えます。
Transfinite Line "*" = 5 Using Progression 1;
Transfinite Surface "*";
Recombine Surface "*";
Transfinite Volume "*";
これでマウス操作をしなくても、立方体メッシュを作成できます*1。
モデル作成段階から
Extrude を使ってモデルを作成すると、上記の Transfinite を使った設定は不要です。この辺はまた別の機会に書こうと思います。
以上
上記は、私がネットの情報やマニュアルを調べたり試行錯誤した上で、「こうやったらできた」というものであり、スマートな方法ではないかも知れません。内容に誤りや、「もっとこうしたほうがいい」という点がありましたら、コメントにて指摘いただければ幸いです。