最近githubで見つけたhologridgenというpythonモジュール(後述)を使うと、なんと以下の3手順で計算格子が作れました。(作業時間3分程度)
- 手順1:計算範囲のアウトライン(図中、緑線)を作成
- 手順2:ノードの属性(後述、図中、赤、青、中抜きの〇)を設定(マウスクリックで設定可)
- 手順3:格子数を決定し、Generate meshボタンをクリック
hologridgenとは
C++で記述された二次元のメッシュジェネレータであるgridgen-cのpythonラッパーpygridgenに、Holoviz(過去記事:pythonによる可視化はHoloviews一択 - 趣味で計算流砂水理参照)を用いたGUIを付加したモジュールがhologridgenである。
使い方は、公式hologridgen/Using_HoloGrid.ipynb at master · computational-sediment-hyd/hologridgen · GitHubが詳しい。
gridgen-cについて
私が初めて使ったのは、もう10年前くらいだと思います。 githubにコードや論文も公開していますが、アルゴリズムが激ムズで全然解読できません。 複素平面とか複比とかを使ってゴリゴリ計算しています。 前述のノードの属性、赤丸:ポジティブポイント、青丸:ネガティブポイントを用いて、上手く幾何変換しているようです。
hologridgenのニーズ
二次元の直交曲線座標系のニーズがあまりなかったりします。 流体解析だと三次元が一般的であり、それに対応したものが多いためです。 なので、この手ツールは市販のものを含めてあまりないです。
ただし、河川分野ではかなり使います。(河川分野では非直交メッシュが一般化していますが、個人的には駄目だと思ってます。このあたりは後日)
hologridgen等も更新頻度が低いので急に使えなくかもしれないですね。
hologridgenの欠点
基本的には便利なツールですが、以下の2点は欠点になります。
MacかLinuxでしか使えない
gridgen-c自体がwindowsで上手くコンパイルできないです。多分makefileの問題なので頑張れば何とかなると思いますがかなり膨大なファイルなので。。。
pygridgenはコンパイルしたgridgen-cを使っているのでMacかLinuxでしか使えないです。あわせて、hologridgenも同様になっています。
なお、私はWSL2上のUbuntu18.04で動かしています。
座標系が設定できない
前述のとおり、地図を背景としたメッシュ作成が可能ですが、web地図なのでwebメルカトル図法となります。格子生成もwebメルカトル図法による座標を基に作成していますが、webメルカトル図法は実際の距離との差が大きいため、格子を生成する際は、19座標系等のローカルの座標系を使うことが一般的だと思います。
そのため、座標系が設定できないことはデメリットの一つです。
まとめ
jupyter上でサクッと直交曲線座標系のメッシュが作れるのは凄い。