モチベーション
- 横断面平均一次元河川流計算で実河川を対象とする場合、地形条件は河川横断測量データを使用することが一般的である。
- このデータより、水位に対する河積、川幅、潤辺等を計算するが計算負荷が大きく、特に長期計算を行う場合には計算速度に大きく影響する。
- この改善方法として、河川横断測量データの簡略化とその影響について検証する。
河川横断データの簡素化
- 基本の横断図は以下の過去記事のものを使用する。
computational-sediment-hyd.hatenablog.jp
- 横断面の簡略化には、pythonのモジュールshapelyのsimplifyメソッドを使います。(手法の詳細は勉強中のため後日まとめます。)
- 簡略化のパラメータはtoleranceのみ。
- 簡略化した横断図と測点数は次のとおりとなる。
- スケールによるが、見た目だけで判断するとtolerance = 1.0および2.0は粗く感じる。tolerance = 0.2や0.5はoriginalとほとんど変わらないように思う。
- 測点数は、originalの80に対して、tolerance = 0.2でも24と大幅に減少している。
number of points | |
---|---|
original | 80 |
tolerance = 0.2 | 24 |
tolerance = 0.5 | 19 |
tolerance = 1.0 | 12 |
tolerance = 2.0 | 7 |
簡略化による物理量への影響
- 河川流の場合は、水位Hと流量Qの関係が重要となるのでこれへの影響を確認する。
- 等流を仮定して以下のマニングの式により評価する。
- 右辺の径深R、河積Aは水位Hの関数になるので、を比較する。
- Hが17~24の範囲で図化すると次のとおりとなる。
- tolerance = 2.0でoriginalとの誤差は10%と相対的に大きいが、それ以外では局所を除くと誤差は非常に小さい。
簡略化による計算時間への影響
- 上の関係の計算速度を比較しました。
- 時間計測はjupyterの%%timeitを使ってます。
- PCのスペックは、ノートPCのスペック : VAIO Pro PG - 趣味で計算流砂水理
- 計算時間は次のとおりで測点数の減少に比例して高速化する。
computational time | |
---|---|
original | 686 µs ± 11.5 µs |
tolerance = 0.2 | 288 µs ± 5.87 µs |
tolerance = 0.5 | 265 µs ± 12.1 µs |
tolerance = 1.0 | 207 µs ± 7.21 µs |
tolerance = 2.0 | 174 µs ± 2.27 µs |
まとめ
- tolerance = 0.2の場合でも計算時間は十分に高速し、計算精度は保証されるため、河川流計算の前処理として簡略化を行ったほうが合理的である。
- グラフの作成はHoloviewsを使用
computational-sediment-hyd.hatenablog.jp
- はてブロへのhtmlグラフの埋め込みは以下を参照