Python で非構造四角形メッシュ2D浅水流GUIアプリ(Stream2D_UnstructuredQuad_GUI_r003)を作成しました
概要
Stream2D_UnstructuredQuad_GUI_r003は、非構造四角形メッシュを使って、浅水流解析の基本的な挙動を確認するための Python GUI アプリです。
GeoJSON / CSV で作成した四角形ポリゴンメッシュを読み込み、セル面積・面接続・境界条件を使って、水深・水位・流速・最大水深などを計算、2D / 3D で可視化できます。
泥流モデル、土石流モデル、河床変動モデルへ拡張するための基礎版として作成しています。
主な機能
- 非構造四角形メッシュの読み込み
- GeoJSON
- CSV
- セル属性の管理
elevationroughnessbed_typeboundary_type
- 面接続の自動作成
- セル面積・面長・法線ベクトルの計算
- 浅水流計算
- wet / dry 判定
- CFL による dt 自動調整
- inlet / outlet / wall 境界
- 負水深防止
- 流出量制限
- 2D 表示
- メッシュ表示
- 水深・最大水深・水位・流速表示
- コンター線
- 面流量矢印
- セル流速ベクトル
- 3D 表示
- 地形表示
- DEM + hmax 表示
- 診断グラフ
- 水深
- 流速
- 流入・流出流量
- 累積水量
- 質量収支
- CFL dt
- wet / dry セル数
- セル属性表・面接続表・計算結果表
- 計算結果 CSV 出力
- 初心者向け使用方法タブ
- 概念図タブ
画面構成
主なタブ構成は以下です。
概念図
2Dメッシュ
3D地形
2D結果
3D結果
診断グラフ
セル属性
面接続
セル計算結果
面流量
使用方法
ログ
基本的な計算イメージ
セル中心有限体積法の考え方で、水量を更新します。
h_{new} = h_{old} - \frac{\Delta t}{A} \sum Q_{face}
ここで、
\begin{aligned}
h &: \text{水深} \\
A &: \text{セル面積} \\
Q_{face} &: \text{各面を通過する流量} \\
\Delta t &: \text{時間刻み}
\end{aligned}
水位は次のように計算します。
\eta = z + h
ここで、z は地形標高、h は水深です。
CFL 条件は、計算を安定させるための時間刻み制御です。
\Delta t \leq CFL \times \frac{\Delta x}{|u| + \sqrt{g h}}
ここで、Δx はセルの代表長さ、u は代表流速、g は重力加速度です。
wet / dry 判定
浅水流解析では、セルが水を持っているかどうかを判定します。
wet : 水深が dry判定水深より大きいセル
dry : 水深がほぼ 0 のセル
dry に近いセルで流速を計算すると、数値的に大きな流速が出る場合があります。
そのため、流速計算下限水深を設定し、微小水深セルの異常流速を抑えるようにしています。
境界条件
サンプルデータでは、以下の境界条件を使っています。
inlet : 流入境界
outlet : 流出境界
wall : 壁境界
none : 内部セル
流入単位流量は m2/s で入力します。
総流入量は、次のように計算されます。
総流入量 Qin = 流入単位流量 qin * inlet境界総幅
たとえば qin = 2.0 m2/s で、inlet境界総幅が約 153 m の場合、
Qin ≒ 306 m3/s
になります。
サンプルデータ
r003 には、複雑地形のサンプルメッシュを同梱しています。
sampledata/sample_quad_mesh_complex_20x14_280cells.geojson
sampledata/sample_quad_mesh_complex_20x14_280cells.csv
サンプルの概要です。
x方向 20 分割
y方向 14 分割
合計 280 セル
地形は、谷筋・丘陵・尾根を含む簡易的な複雑地形です。
谷筋に沿って水が流れるように、inlet と outlet を設定しています。
データ作成方法
GeoJSON の場合
1つの Feature を 1つの四角形セルとして作成します。
必要な属性は以下です。
cell_id : セル番号
elevation : 標高
roughness : 粗度係数
bed_type : fixed または mobile
boundary_type : inlet / outlet / wall / none
概念的には以下のような形式です。
{
"type": "Feature",
"properties": {
"cell_id": 1,
"elevation": 50.0,
"roughness": 0.04,
"bed_type": "mobile",
"boundary_type": "inlet"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[[0,0], [50,0], [50,50], [0,50], [0,0]]
]
}
}
CSV の場合
CSV では、四角形の4頂点座標を列として持たせます。
例です。
cell_id,x1,y1,x2,y2,x3,y3,x4,y4,elevation,roughness,bed_type,boundary_type
1,0,0,50,0,50,50,0,50,50.0,0.04,mobile,inlet
実行方法
ZIPを展開して、以下のexeファイルを実行します。
今後gitに公開予定です。
Stream2D_UnstructuredQuad_GUI_r003.exe
診断グラフの確認ポイント
計算結果を見るときは、2D結果だけでなく、診断グラフも確認します。
特に重要なのは以下です。
-
QinとQoutが最終的に近づくか - 質量収支誤差が小さいか
- 最大流速が異常に大きくないか
- wet セル数が不自然に増減していないか
- dt が極端に小さくなっていないか
水理チェックボタンを押すと、総流入量、流出量、質量収支、最大水深、最大流速などをまとめて確認できます。
今後の拡張予定
この r003 は、浅水流解析の基礎版です。
今後は、この骨格に以下のモデルを追加していく予定です。
- 泥流モデル
- 土石流モデル
- 河床変動モデル
- 土砂濃度の輸送
- 堆積・洗掘
- 移動床 / 固定床の切り替え
- 結果アニメーション
- 実地形データからのメッシュ作成
まとめ
Stream2D_UnstructuredQuad_GUI_r003では、非構造四角形メッシュを使った浅水流解析の基礎機能を整理しました。
特に、以下を確認できるようにしています。
- 非構造四角形メッシュの読み込み
- 面接続を使った水深更新
- wet / dry 判定
- CFL 条件
- 流速ベクトル
- 質量収支
- 2D / 3D 表示
- 診断グラフ
今後、泥流・土石流・河床変動へ拡張するためのベースとして利用できます。
2次元浅水流解析 リンク集
2次元浅水流解析、氾濫解析、非構造格子、有限体積法、wet/dry処理、CFL条件などを調べるためのリンク集です。
Stream2D_UnstructuredQuad_GUI_r003 の今後の拡張や、泥流・土石流・河床変動モデルへの発展を考えるときの参考資料として整理しています。
1. 基礎理論・浅水流方程式
2D Shallow Water Equations - HEC-RAS Technical Reference
- URL: https://www.hec.usace.army.mil/confluence/rasdocs/rasmuddebris/non-newtonian-technical-reference-manual/non-newtonian-flow-equations/2d-shallow-water-equations
- 内容:
- 2次元浅水流方程式の概要
- 体積保存式・運動量保存式
- Diffusion Wave と Shallow Water Equations の違い
- 参考ポイント:
-
Stream2Dの水深h、水位eta、流速u, vの整理に使いやすい資料です。
-
2次元自由水面非定常流 - iRIC / Nays2D 関連資料
- URL: https://i-ric.org/yasu/nbook2/05_Chapt05.html
- 内容:
- 2次元自由水面流れの基礎式
- 水深、水位、流速の関係
- 分離解法の説明
- 参考ポイント:
- 日本語で読める基礎資料として有用です。
洪水氾濫解析を対象とした浅水流方程式の適用性に関する検討
- URL: https://www.jstage.jst.go.jp/article/jscejhe/73/4/73_I_1405/_pdf
- 内容:
- 洪水氾濫解析における浅水流方程式の適用性
- 実地形・大規模計算への適用
- 参考ポイント:
- 氾濫解析で浅水流方程式を使う意味を確認できます。
2. 非構造格子・有限体積法
非構造格子を用いた有限体積法に基づく平面二次元洪水流数値モデル
- URL: https://library.jsce.or.jp/jsce/open/00037/2002/705-0031.pdf
- 内容:
- 非構造格子
- 有限体積法
- 2次元浅水流方程式
- 洪水流モデル
- 参考ポイント:
-
Stream2Dの「セル面積 A」「面流量 Qface」「面接続」に近い考え方を確認できます。
-
非構造格子有限体積法を用いた数値解析プログラムの精度向上
- URL: https://library.jsce.or.jp/jsce/open/00549/2013/65-02-0017.pdf
- 内容:
- 非構造格子有限体積法
- 平面2次元浅水流方程式
- 精度向上の検討
- 参考ポイント:
- 非構造格子での精度・再構築処理を考える際に参考になります。
任意の境界形状を有する二次元浅水流の高精度解析手法の開発
- URL: https://hiroshima.repo.nii.ac.jp/record/2010251/files/suikogaku_50_799.pdf
- 内容:
- 任意境界形状
- 二次元浅水流解析
- 境界適合・高精度解析
- 参考ポイント:
- 複雑な地形境界や河道形状を扱う場合に参考になります。
The FVC scheme on unstructured meshes for the two-dimensional Shallow Water Equations
- URL: https://arxiv.org/abs/2105.11290
- 内容:
- 非構造三角形メッシュ
- 有限体積法
- 特性曲線法
- 2次元浅水流方程式
- 参考ポイント:
- 非構造メッシュでのフラックス計算やリーマンソルバー代替手法の参考になります。
A well balanced FVC scheme for 2D shallow water flows on unstructured triangular meshes
- URL: https://arxiv.org/abs/2110.11457
- 内容:
- well-balanced スキーム
- 非構造格子
- Coriolis 効果
- 底面摩擦
- 参考ポイント:
- 地形勾配と静水状態のバランスを保つ方法を考えるときに参考になります。
3. wet / dry 処理・ベンチマーク
SWASHES - Shallow Water Analytic Solutions
- URL: https://www.idpoisson.fr/swashes/
- 内容:
- 浅水流方程式の解析解ライブラリ
- 1次元・2次元の検証問題
- 常流・射流・衝撃波・摩擦・雨など
- 参考ポイント:
-
Stream2Dの検証用ベンチマークとして有用です。
-
SWASHES: a compilation of Shallow Water Analytic Solutions
- URL: https://arxiv.org/abs/1110.0288
- 内容:
- SWASHES の論文
- 浅水流解析の検証用解析解
- 参考ポイント:
- 解析解によるソルバー検証の考え方を確認できます。
FullSWOF: A free software package for the simulation of shallow water flows
- URL: https://arxiv.org/abs/1401.4125
- 内容:
- 浅水流解析用オープンソースソフト
- 有限体積法
- well-balanced スキーム
- wet/dry 遷移
- 降雨・浸透
- 参考ポイント:
- wet/dry、微小水深、降雨流出を扱う実装の参考になります。
ダム崩壊問題における Dry bed と Wet bed の違い
- URL: https://mathlang.hatenablog.com/entry/2019/04/08/212812
- 内容:
- ダムブレーク問題
- dry bed / wet bed の違い
- 浅水流方程式の基礎的な確認
- 参考ポイント:
- wet/dry の概念を初心者向けに確認できます。
4. 実用ソフト・解析モデル
HEC-RAS 2D User's Manual
- URL: https://www.hec.usace.army.mil/software/hec-ras/documentation/HEC-RAS_2D_Users_Manual_v6.6.pdf
- 内容:
- HEC-RAS の2D解析機能
- メッシュ作成
- 境界条件
- 結果表示
- 参考ポイント:
- GUI設計、解析条件設定、結果確認方法の参考になります。
HEC-RAS Hydraulic Reference Manual
- URL: https://www.hec.usace.army.mil/software/hec-ras/documentation/HEC-RAS_Hydraulic_Reference_Manual_v6.6.pdf
- 内容:
- HEC-RAS の水理計算理論
- 2D解析
- Diffusion Wave / Shallow Water Equations
- 参考ポイント:
- 水理チェックや診断グラフの考え方の参考になります。
TELEMAC-2D / openTELEMAC
- URL: https://www.opentelemac.org/
- 内容:
- 2D自由表面流解析
- 非構造三角形格子
- 有限要素法・有限体積法
- 河川・沿岸・津波・氾濫解析
- 参考ポイント:
- 非構造メッシュでの本格的な2D水理解析ソフトとして参考になります。
TELEMAC-2D Validation / Manual PDF
- URL: https://www.opentelemac.org/downloads/MANUALS/TELEMAC-2D/vali50_gb.pdf
- 内容:
- TELEMAC-2D の検証事例
- 非構造三角形要素
- 2次元浅水流方程式
- 参考ポイント:
- ベンチマークや検証結果の整理方法を参考にできます。
Delft3D Flexible Mesh / D-Flow FM
- URL: https://oss.deltares.nl/web/delft3dfm
- 内容:
- Flexible Mesh による流況解析
- 河川・沿岸・都市域の流れ
- 水理・波浪・水質・河床変動との連携
- 参考ポイント:
- Flexible Mesh の概念や、将来的な地形・河床変動連携の参考になります。
D-Flow Flexible Mesh User Manual
- URL: https://content.oss.deltares.nl/delft3d/D-Flow_FM_User_Manual.pdf
- 内容:
- D-Flow FM の利用方法
- Flexible Mesh の設定
- 計算条件・境界条件
- 参考ポイント:
- GUIの入力項目やメッシュ・境界条件設定の参考になります。
iRIC Nays2DFlood
- URL: https://i-ric.org/en/solvers/nays2dflood/
- 内容:
- 2次元洪水氾濫解析ソルバー
- 河川・氾濫原の流れ
- 複数流入河川の設定
- 参考ポイント:
- 河川・氾濫解析GUIの構成を考える上で参考になります。
Nays2D Flood Solver Manual 日本語版
- URL: https://i-ric.org/webadmin/wp-content/uploads/2024/09/Nays2D_Flood_SolverManual_ja_20240910.pdf
- 内容:
- 一般曲線座標系
- 2次元流れの基礎式
- 境界条件
- iRICでの設定方法
- 参考ポイント:
- 座標変換型格子・一般曲線座標の参考になります。
SRH-2D Theory and User's Manual
- URL: https://www.usbr.gov/tsc/techreferences/computer%20software/models/srh2d/downloads/Manual-SRH2D-v2.0-Nov2008.pdf
- 内容:
- 2D河川水理モデル
- 浅水流方程式
- 河川流況解析
- 参考ポイント:
- 河川流解析、境界条件、将来的な土砂・植生モデル拡張の参考になります。
LISFLOOD-FP 8.0
- URL: https://gmd.copernicus.org/articles/14/3577/2021/gmd-14-3577-2021.pdf
- 内容:
- 2次元氾濫解析モデル
- DG2 / FV1 ソルバー
- 浅水流方程式
- 大規模氾濫解析
- 参考ポイント:
- 計算効率、洪水氾濫解析、格子ベース解析の参考になります。
OpenFOAM shallowWaterFoam
- URL: https://www.openfoam.com/documentation/guides/latest/man/shallowWaterFoam.html
- 内容:
- OpenFOAM の浅水流ソルバー
- 非粘性浅水流方程式
- 回転項を含む計算
- 参考ポイント:
- CFDソフト内での浅水流ソルバー実装を確認できます。
5. 土砂・泥流・河床変動への拡張
近似リーマンソルバーに基づく有限体積法を用いた土石流・土砂流の数値モデル開発
- URL: https://www.jsece.or.jp/event/conf/abstract/2025/pdf/39.pdf
- 内容:
- 土石流・土砂流
- 近似リーマンソルバー
- HLL法
- wet/dry境界
- CFL条件
- 参考ポイント:
-
Stream2Dを泥流・土石流へ拡張する際に特に参考になります。
-
SRH-2D Sediment Transport and Mobile-Bed Modeling Resources
- URL: https://aquaveo.com/software/sms/srh2d-hydraulic-modeling-resources
- 内容:
- SRH-2Dの土砂移動・移動床解析関連資料
- SMSとの連携
- 参考ポイント:
- 河床変動モデルを追加する場合の参考になります。
Nays2D Flood Examples
- URL: https://kankyou.ceri.go.jp/data/JICA2013/2_1_Nays2D_Flood_Examples_en.pdf
- 内容:
- Nays2D Flood の解析例
- 河川流・河床変動への応用例
- 参考ポイント:
- 2D流れと河床変動を統合する方向の参考になります。











