1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python で非構造四角形メッシュ2D浅水流GUIアプリ(Stream2D_UnstructuredQuad_GUI_r003)を作成しました

1
Posted at

Python で非構造四角形メッシュ2D浅水流GUIアプリ(Stream2D_UnstructuredQuad_GUI_r003)を作成しました

概要

Stream2D_UnstructuredQuad_GUI_r003は、非構造四角形メッシュを使って、浅水流解析の基本的な挙動を確認するための Python GUI アプリです。

GeoJSON / CSV で作成した四角形ポリゴンメッシュを読み込み、セル面積・面接続・境界条件を使って、水深・水位・流速・最大水深などを計算、2D / 3D で可視化できます。

泥流モデル、土石流モデル、河床変動モデルへ拡張するための基礎版として作成しています。

主な機能

  • 非構造四角形メッシュの読み込み
    • GeoJSON
    • CSV
  • セル属性の管理
    • elevation
    • roughness
    • bed_type
    • boundary_type
  • 面接続の自動作成
  • セル面積・面長・法線ベクトルの計算
  • 浅水流計算
    • wet / dry 判定
    • CFL による dt 自動調整
    • inlet / outlet / wall 境界
    • 負水深防止
    • 流出量制限
  • 2D 表示
    • メッシュ表示
    • 水深・最大水深・水位・流速表示
    • コンター線
    • 面流量矢印
    • セル流速ベクトル
  • 3D 表示
    • 地形表示
    • DEM + hmax 表示
  • 診断グラフ
    • 水深
    • 流速
    • 流入・流出流量
    • 累積水量
    • 質量収支
    • CFL dt
    • wet / dry セル数
  • セル属性表・面接続表・計算結果表
  • 計算結果 CSV 出力
  • 初心者向け使用方法タブ
  • 概念図タブ

画面構成

主なタブ構成は以下です。

概念図
2Dメッシュ
3D地形
2D結果
3D結果
診断グラフ
セル属性
面接続
セル計算結果
面流量
使用方法
ログ

概念図
Screenshot 2026-06-09 134810.png

2Dメッシュ(データ読み込み後)
Screenshot 2026-06-09 134859.png

3D地形
Screenshot 2026-06-09 134936.png

2D結果
Screenshot 2026-06-09 144622.png

3D結果
Screenshot 2026-06-09 144657.png

診断グラフ
Screenshot 2026-06-09 144712.png

セル属性
Screenshot 2026-06-09 144726.png

面接続
Screenshot 2026-06-09 144743.png

セル計算結果
Screenshot 2026-06-09 144753.png

面流量
Screenshot 2026-06-09 144803.png

使用方法
Screenshot 2026-06-09 144815.png

ログ
Screenshot 2026-06-09 144828.png

基本的な計算イメージ

セル中心有限体積法の考え方で、水量を更新します。

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結果だけでなく、診断グラフも確認します。

特に重要なのは以下です。

  • QinQout が最終的に近づくか
  • 質量収支誤差が小さいか
  • 最大流速が異常に大きくないか
  • 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

2次元自由水面非定常流 - iRIC / Nays2D 関連資料

  • URL: https://i-ric.org/yasu/nbook2/05_Chapt05.html
  • 内容:
    • 2次元自由水面流れの基礎式
    • 水深、水位、流速の関係
    • 分離解法の説明
  • 参考ポイント:
    • 日本語で読める基礎資料として有用です。

洪水氾濫解析を対象とした浅水流方程式の適用性に関する検討


2. 非構造格子・有限体積法

非構造格子を用いた有限体積法に基づく平面二次元洪水流数値モデル

非構造格子有限体積法を用いた数値解析プログラムの精度向上

任意の境界形状を有する二次元浅水流の高精度解析手法の開発

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 の違い


4. 実用ソフト・解析モデル

HEC-RAS 2D User's Manual

HEC-RAS Hydraulic Reference Manual

TELEMAC-2D / openTELEMAC

  • URL: https://www.opentelemac.org/
  • 内容:
    • 2D自由表面流解析
    • 非構造三角形格子
    • 有限要素法・有限体積法
    • 河川・沿岸・津波・氾濫解析
  • 参考ポイント:
    • 非構造メッシュでの本格的な2D水理解析ソフトとして参考になります。

TELEMAC-2D Validation / Manual PDF

Delft3D Flexible Mesh / D-Flow FM

  • URL: https://oss.deltares.nl/web/delft3dfm
  • 内容:
    • Flexible Mesh による流況解析
    • 河川・沿岸・都市域の流れ
    • 水理・波浪・水質・河床変動との連携
  • 参考ポイント:
    • Flexible Mesh の概念や、将来的な地形・河床変動連携の参考になります。

D-Flow Flexible Mesh User Manual

iRIC Nays2DFlood

  • URL: https://i-ric.org/en/solvers/nays2dflood/
  • 内容:
    • 2次元洪水氾濫解析ソルバー
    • 河川・氾濫原の流れ
    • 複数流入河川の設定
  • 参考ポイント:
    • 河川・氾濫解析GUIの構成を考える上で参考になります。

Nays2D Flood Solver Manual 日本語版

SRH-2D Theory and User's Manual

LISFLOOD-FP 8.0

OpenFOAM shallowWaterFoam


5. 土砂・泥流・河床変動への拡張

近似リーマンソルバーに基づく有限体積法を用いた土石流・土砂流の数値モデル開発

SRH-2D Sediment Transport and Mobile-Bed Modeling Resources

Nays2D Flood Examples


1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?