Gmsh の使い方2015年11月22日 | |
はじめにGmsh の使い方について。 バージョンGmsh 2.11.0 Windows 版 セットアップパッケージを適当なところに入れて、ショートカットをデスクトップにでも置いておけばよいが、そのままだとフォントサイズが小さすぎて下のメッセージウインドウの文字が読めないので、ショートカットに起動オプションとして "-fontsize 18" を付ける。 2 次元メッシュの作成Gmsh は ".geo" ファイルを作成からメッシュを作成する。GUI ではこのファイルを作成していくことになる。はじめに名前を付けたら、あとは GUI の操作に応じてコマンドが自動的にファイルに追記していく。操作のやりなおしはエディタで行うので、GUI の操作に対してどういうコマンドが追記されているか確認しておいたほうがよい。
![]() 四辺形メッシュの作成デフォルトでは三角形メッシュができる。四辺形メッシュを作りたい場合は、メニュー [Tools]-[Options] の [Mesh]-[General] の "Recombine all triangular meshse" にチェックを入れる。あるいは、ツリー [Modules]-[Mesh]-[Define]-[Recombine] で四辺形メッシュにしたい面を指定する。 ![]() 同オプション画面の "2D algorithm" で "Delaunay for quads" を選ぶときれいなメッシュが得られるかもしれない。 ![]() ツリー [Modules]-[Mesh]-[Define]-[Transfinite] を使う方法もある。 サンプルsquare.geo
Point(1) = {0, 0, 0, 1.0};
Point(2) = {1, 0, 0, 1.0};
Point(3) = {1, 1, 0, 1.0};
Point(4) = {0, 1, 0, 1.0};
Line(1) = {1, 2};
Line(2) = {2, 3};
Line(3) = {3, 4};
Line(4) = {4, 1};
Line Loop(5) = {4, 1, 2, 3};
Plane Surface(6) = {5};
Physical Line("left") = {4};
Physical Line("right") = {2};
Physical Line("top") = {3};
Physical Line("bottom") = {1};
Physical Surface("fluid") = {6};
3 次元メッシュの作成3 次元メッシュの作成は 2 次元の場合と同様で、Volume まで作成するのと、Physical groups の選択が Line、Surface の代りに Surface、Volume に変わるだけである。 Point - Line - Surface - Volume と作っていく代わりに、ツリー [Modules]-[Geometry]-[Element entities]-[Translate]-[Extrude surface] で Surface を伸ばしてボリュームを作ることもできる。 メッシュは 1D - 2D - 3D と作成していく (いきなり 3D でもよい)。 ![]() 六面体メッシュの作成六面体メッシュの作成にはツリー [Modules]-[Mesh]-[Define]-[Transfinite] を用いる。これを用いるには、面がそれぞれ 4 辺からなり、ボリュームが 6 面からなる必要がある。 まず、[Transfinite]-[Surface] でそれぞれの面について指定する。それから [Transfinite]-[Volume] でボリュームを選ぶ。その時、点を選択する必要があるが、表を反時計回りに、次に裏を反時計回りに、という風に規則的に点を選択する必要がある。 ![]() サンプルbox.geo
Point(1) = {0, 0, 0, 1.0};
Point(2) = {1, 0, 0, 1.0};
Point(3) = {1, 1, 0, 1.0};
Point(4) = {0, 1, 0, 1.0};
Line(1) = {1, 2};
Line(2) = {2, 3};
Line(3) = {3, 4};
Line(4) = {4, 1};
Line Loop(5) = {4, 1, 2, 3};
Plane Surface(6) = {5};
Extrude {0, 0, 1} {
Surface{6};
}
Physical Surface("left") = {15};
Physical Surface("right") = {23};
Physical Surface("top") = {28};
Physical Surface("bottom") = {6};
Physical Surface("front") = {19};
Physical Surface("back") = {27};
Physical Volume("fluid") = {1};
Transfinite Surface {15};
Transfinite Surface {23};
Transfinite Surface {27};
Transfinite Surface {19};
Transfinite Surface {28};
Transfinite Surface {6};
Recombine Surface {15, 23, 27, 19, 28, 6};
Transfinite Volume{1} = {1, 2, 10, 6, 4, 3, 14, 5};
メッシュサイズの指定メニュー [Tools]-[Options] でのメッシュサイズの指定は、".geo" ファイルに残らない。コマンドで全体のメッシュサイズを指定するには、次のように書き込む。 Mesh.CharacteristicLengthMin = 0.; Mesh.CharacteristicLengthMax = 0.1; ツリー [Modules]-[Mesh]-[Define]-[Element size at points] で点に対してメッシュサイズを指定することができる。 ![]() コマンドは以下のようになる。
Characteristic Length {1} = 0.01;
Characteristic Length {2} = 0.1;
Characteristic Length {3} = 0.1;
Characteristic Length {4} = 0.1;
メッシュの出力形式の指定メニュー [File]-[Save As ...] で Gmsh 以外のメッシュ形式でメッシュを出力できる。 STL の利用STL を利用するには、次のような ".geo" ファイルを用いる。
Merge "mixing_elbow.stl";
CreateTopology;
ll[] = Line "*";
For i In {0: #ll[]-1}
Compound Line(newl) = ll[i];
EndFor
ss[] = Surface "*";
s = news;
For i In {0 : #ss[]-1}
Compound Surface(s+i) = ss[i];
EndFor
Surface Loop(1) = {s : s + #ss[] - 1};
Volume(1) = {1};
Physical Surface ("in1") = {s};
Physical Surface ("in2") = {s+1};
Physical Surface ("out") = {s+2};
Physical Surface ("side") = {s+3};
Physical Volume ("fluid") = {1};
Geometry.HideCompounds = 0;
1 行目の "Merge" で STL ファイルを指定する。それ以下で Compound LIne, Compound Surface というものを作り、形状に直している。そうしないと STL 自体メッシュデータなので、表面のメッシュが STL に依存してしまう (2D でメッシュを切りなおせない) ことになる。 メッシュ作成後、STL の線が邪魔な場合は、メニュー [Tools]-[Visibility] の [List browser] で表面を見えなくすればよい。 Gmsh メッシュファイルの書式2 次元メッシュを例に説明する。 $MeshFormat 2.2 0 8 $EndMeshFormat ヘッダー。バージョン、ファイルタイプ、データサイズを指定するが、このまま書けばよい。 $PhysicalNames 5 1 1 "left" 1 2 "right" 1 3 "top" 1 4 "bottom" 2 5 "fluid" $EndPhysicalNames 境界・領域 (Physical group) の名前。最初の数字は項目の数。続いて、次元、Physical group の番号、名前を書く。上の例では 2 次元メッシュなので、境界は 1 次元、領域は 2 次元が指定されている。 $Nodes 45 1 0 0 0 2 1 0 0 3 1 1 0 ... $EndNodes 節点。最初の数字は節点の数。続いて、節点番号、座標を書く。 $Elements 88 1 1 2 4 1 1 5 2 1 2 4 1 5 6 3 1 2 4 1 6 7 ... 21 2 2 5 6 22 34 28 22 2 2 5 6 28 34 36 23 2 2 5 6 24 36 29 ... $EndElements 要素。最初の数字は要素の数。続いて、要素番号、要素タイプ、タグの数、タグリスト、節点番号リスト。 要素タイプは次のようなものがある。
タグは、通常は 2 つで、1 つめは境界・領域 (Physical group) 番号、2 つめはジオメトリの番号らしい。 | |
| PENGUINITIS | |