ハウツー

gmshのメッシュをインポート

次のようにファイル quad.geo にパラメータ化されたメッシュがある場合

 1lc = 0.05 ;
 2
 3Point(1) = {0,0,0,lc};
 4Point(2) = {1,0,0,lc};
 5Point(3) = {1,1,0,lc};
 6Point(4) = {0,1,0,lc};
 7
 8Line(5) = {1,2};
 9Line(6) = {2,3};
10Line(7) = {3,4};
11Line(8) = {4,1};
12
13Line Loop(9) = {5,6,7,8};
14Plane Surface(10) = {9};
15
16Physical Line(101) = {7};
17Physical Line(102) = {5};
18Physical Line(103) = {8};
19Physical Line(104) = {6};
20
21Physical Surface(201) = {10};

次のように実行します.

$ gmsh -2 quad.geo -format msh1

ファイル quad.msh が作成され,メッシュとその領域のエンコーディングが格納されます.このファイル (quad.msh) をgetfemにインポートできます.

import getfem as gf

m = gf.Mesh('import','gmsh','quad.msh')
print m.regions()

2番目のコマンドでは, regions ids が表示されます.メッシュをインポートすると,次のような警告が表示される場合があります.

Level 3 Warning in getfem_import.cc, line 137:
  All regions must have different number!

これは, Gmsh .geo file で行われるメッシュのパラメータ化で,各領域に 異なる 番号を割り当ててくださいという意味です. 問題が発生するのは, Gmsh では "領域の種類" が異なるためです.例えば Gmsh では "物理面 (200)" と "物理線 (200)" が共存できます. GetFEM には "領域の種類" が1つしかないため,この状態にはなりません.