趣味で計算流砂水理

趣味で計算流砂水理 Computational Sediment Hydraulics for Fun Learning

数値計算とか河川工学とかプログラミングのことを書いています

MENU

hologridgenでサクッと計算格子をつくる

スポンサーリンク

最近githubで見つけたhologridgenというpythonモジュール(後述)を使うと、なんと以下の3手順で計算格子が作れました。(作業時間3分程度)

  • 手順1:計算範囲のアウトライン(図中、緑線)を作成
  • 手順2:ノードの属性(後述、図中、赤、青、中抜きの〇)を設定(マウスクリックで設定可)

f:id:SedimentHydraulics:20210831133121p:plain

  • 手順3:格子数を決定し、Generate meshボタンをクリック

f:id:SedimentHydraulics:20210831133140p:plain


hologridgenとは

C++で記述された二次元のメッシュジェネレータであるgridgen-cpythonラッパー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点は欠点になります。

MacLinuxでしか使えない

gridgen-c自体がwindowsで上手くコンパイルできないです。多分makefileの問題なので頑張れば何とかなると思いますがかなり膨大なファイルなので。。。

pygridgenはコンパイルしたgridgen-cを使っているのでMacLinuxでしか使えないです。あわせて、hologridgenも同様になっています。

なお、私はWSL2上のUbuntu18.04で動かしています。

座標系が設定できない

前述のとおり、地図を背景としたメッシュ作成が可能ですが、web地図なのでwebメルカトル図法となります。格子生成もwebメルカトル図法による座標を基に作成していますが、webメルカトル図法は実際の距離との差が大きいため、格子を生成する際は、19座標系等のローカルの座標系を使うことが一般的だと思います。

そのため、座標系が設定できないことはデメリットの一つです。

まとめ

jupyter上でサクッと直交曲線座標系のメッシュが作れるのは凄い。