趣味で計算流砂水理

Computational Sediment Hydraulics for Fun

オープンデータによる河川流解析:平面二次元流解析 : 数値計算編

computational-sediment-hyd.hatenablog.jp

の続きです.

数値計算は,特に変わったことはせずに普通の平面二次元計算です.

ドライベッドの処理

ちょっとサボって連続式だけに以下のような条件を付け加えました.

{ \displaystyle
    \begin{align}
        h^{n+1} = h^n - \frac{\Delta t}{\Delta x}( {q_x}_{i+1/2} - {q_x}_{i-1/2})
    \end{align}
}

if {q_x}_{i+1} == 0

 if {q_x}_{i} > 0

  {q_x}_{i+1/2} = {q _ x} _ { i }

 else : {q_x}_{i+1/2} = 0

else if {q_x}_{i} == 0

 if {q_x}_{i+1}  \lt 0

  {q _ x} _ {i+1/2} = {q _ x} _ {i+1}

 else : {q_x}_{i+1/2} = 0

ぎりぎり質量が保存される感じです.

今後修正します.

計算速度

computational-sediment-hyd.hatenablog.jp

numba.jitでまたまた衝撃的な速度です. 時間がかかり過ぎるので,計算時間を120分の1にしています.

  • numba.jitあり : 実時間3600sec 計算時間30秒
  • numba.jitなし : 実時間30sec 計算時間150秒

なんと600倍です.意味がわかりません.

コードはこちら


Wuさんの本のDry Bedの処理のところ(6.1.4 Wetting and drying technique)が面白いです.

Computational River Dynamics

Computational River Dynamics