有限要素法におけるメッシュ作成ソフトウェアである。
Gmsh
を Google Colaboratory で使う方法をメモとして残します。
はじめに
今回は、Gmsh の チュートリアル
https://gitlab.onelab.info/gmsh/gmsh/-/blob/master/tutorial/python/t1.py
を Google Colaboratory(以下 colab) で実行できることをゴールとします。
ソースはここに置いておきます。
https://colab.research.google.com/drive/1E_jqvzYpJ84iBfVAPFV5v55szWo0xpVv?usp=sharing
環境設定
Google Colaboratory に gmsh をインストールします。
1. gmsh 本体のインストール
gmsh 本体 は apt-get
でインストールします。
!apt-get install gmsh
2. python モジュール gmsh のインストール
python モジュール gmsh は pip
でインストールします。
!pip install --upgrade gmsh
3. import gmsh に失敗する
2021.08.22 現在 import gmsh に失敗する
原因は、 以下の示す colab のモジュールの参照 path に gmsh のインストールフォルダ/usr/local/lib/python3.7/site-packages/
が含まれていないからです。
import sys
import pprint
pprint.pprint(sys.path)
['',
'/content',
'/env/python',
'/usr/lib/python37.zip',
'/usr/lib/python3.7',
'/usr/lib/python3.7/lib-dynload',
'/usr/local/lib/python3.7/dist-packages',
'/usr/lib/python3/dist-packages',
'/usr/local/lib/python3.7/dist-packages/IPython/extensions',
'/root/.ipython']
対策としてcolab の参照に一時的に追加します。
import sys
sys.path.append('/usr/local/lib/python3.7/site-packages/gmsh-4.8.4-Linux64-sdk/lib/')
チュートリアルを実行します。
gmsh でモデルを作成する
import gmsh
gmsh.initialize()
gmsh.model.add("t1")
lc = 1e-2
gmsh.model.geo.addPoint(0, 0, 0, lc, 1)
gmsh.model.geo.addPoint(.1, 0, 0, lc, 2)
gmsh.model.geo.addPoint(.1, .3, 0, lc, 3)
p4 = gmsh.model.geo.addPoint(0, .3, 0, lc)
gmsh.model.geo.addLine(1, 2, 1)
gmsh.model.geo.addLine(3, 2, 2)
gmsh.model.geo.addLine(3, p4, 3)
gmsh.model.geo.addLine(4, 1, p4)
gmsh.model.geo.addCurveLoop([4, 1, -2, 3], 1)
gmsh.model.geo.addPlaneSurface([1], 1)
gmsh.model.geo.synchronize()
gmsh.model.addPhysicalGroup(1, [1, 2, 4], 5)
ps = gmsh.model.addPhysicalGroup(2, [1])
gmsh.model.setPhysicalName(2, ps, "My surface")
gmsh.model.mesh.generate(2)
gmsh.write("t1.msh")
gmsh.finalize()
モデルを表示してみる
meshio
と matplotlib
を使って結果を表示してみます。
!pip install meshio
import meshio
meshio.read("t1.msh")
import matplotlib.pyplot as plt
reader = meshio.read("t1.msh")
x = reader.points
fig = plt.figure()
plt.rcParams["font.size"] = 18
plt.rcParams["figure.figsize"] = (10.0, 6.0)
plt.figure(figsize=(16, 16))
plt.triplot(x[:, 0], x[:, 1], color="gray")
plt.gca().set_aspect("equal")
plt.savefig("mesh.svg")
まとめ
結局この記事は、
ハマったポイント
インストールフォルダがエラーの原因になるらしい
ので
sys.path.append('/usr/local/lib/python3.7/site-packages/gmsh-4.8.4-Linux64-sdk/lib/')
を実行する
が言いたかっただけ