{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Section Averaged 1D SIMPLE method" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 基礎式" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", " \\begin{align}\n", " \\frac{\\partial h}{\\partial t}+\\frac{\\partial uh}{\\partial x} &= 0 \\\\\n", " \\frac{\\partial u}{\\partial t}+\\frac{\\partial u u}{\\partial x} &= - g\\frac{\\partial h}{\\partial x} + g ( i_0 - i_e )\n", " \\end{align}\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 基礎式の離散式" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", " \\begin{align}\n", " \\frac{h^{n+1}_i - h^{n}_i}{\\Delta t}+\\frac{ u^{n+1}_{i+1/2} h^{n+1}_{i} - u^{n+1}_{i-1/2} h^{n+1}_{i-1} }{ \\Delta x} &= 0 \\\\\n", " \\frac{u^{n+1}_{i+1/2} - u^{n}_{i+1/2}}{\\Delta t}+\\frac{ u^{n}_{i+1} u^{n+1}_{i+1/2} - u^{n}_{i} u^{n+1}_{i-1/2} }{ \\Delta x} &= -g\\frac{h^{n+1}_{i+1} - h^{n+1}_i}{\\Delta x} + g ( i_0 - i_e)\\\\\n", " \\end{align}\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "運動方程式を以下の代数方程式の形式に書き換える" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", " \\begin{align}\n", " a_{i+1/2} u^{n+1}_{i+1/2} + a_{i+3/2} u^{n+1}_{i+3/2} + a_{i-1/2} u^{n+1}_{i-1/2} &= b_{i+1/2}\n", " -g\\frac{h^{n+1}_{i+1} - h^{n+1}_i}{\\Delta x} + g ( i_0 - i_e) \\\\\n", " a_{i+1/2} &= \\dfrac{1}{\\Delta t} + \\dfrac{u^n_{i+1}}{\\Delta x} \\\\\n", " a_{i+3/2} &= 0 \\\\\n", " a_{i-1/2} &= - \\dfrac{u^n_{i}}{\\Delta x} \\\\\n", " b_{i+1/2} &= \\dfrac{u^n_{i+1/2}}{\\Delta t}\n", " \\end{align}\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ここに,$u^n_{i} = 0.5( u^n_{i+1/2} + u^n_{i-1/2})$, $u^n_{i+1} = 0.5( u^n_{i+3/2} + u^n_{i+1/2})$とする." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 基礎式の離散式の近似式" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "上式の近似式は" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", " \\begin{align}\n", " \\frac{h^{*}_i - h^{n}_i}{\\Delta t}+\\frac{ u^{n+1}_{i+1/2} h^{*}_{i} - u^{n+1}_{i-1/2} h^{*}_{i-1} }{ \\Delta x} &= 0 \n", " \\end{align}\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", " \\begin{align}\n", " a_{i+1/2} u^{*}_{i+1/2} + a_{i+3/2} u^{*}_{i+3/2} + a_{i-1/2} u^{*}_{i-1/2} &= b_{i+1/2}\n", " -g\\frac{h^{*}_{i+1} - h^{*}_i}{\\Delta x} + g ( i_0 - i_e)\n", " \\end{align}\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 流速の補正式" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", " \\begin{align}\n", " h^{n+1} &= h^* + \\delta h \\\\\n", " u^{n+1} &= u^* + \\delta u \n", " \\end{align}\n", "$$\n", "\n", "として,運動方程式の元式と近似式の差分をとると," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", " \\begin{align}\n", " a_{i+1/2} \\delta u_{i+1/2} + a_{i+1/2} \\delta u_{i+3/2} + a_{i+1/2} \\delta u_{i-1/2} &= \n", " -g\\frac{ \\delta h_{i+1} - \\delta h_i}{\\Delta x} \n", " \\end{align}\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "左辺第2,3項をキャンセルして," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", " \\begin{align}\n", " \\delta u_{i+1/2} &= \n", " -\\dfrac{g}{a_{i+1/2}}\n", " \\frac{ \\delta h_{i+1} - \\delta h_i}{\\Delta x} \n", " \\end{align}\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 圧力の補正式" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "これらを連続式の近似式に代入すると," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", " \\begin{align}\n", " \\frac{h^{*}_i - h^{n}_i}{\\Delta t}\n", " +\\dfrac{1}{\\Delta x} \n", " \\left[ (u^*_{i+1/2} + \\delta u_{i+1/2}) h^*_{i} - (u^*_{i-1/2} + \\delta u_{i-1/2}) h^*_{i-1} \\right]\n", " = 0\n", "% h^{n+1}_{i} - u^{n+1}_{i-1/2} h^{n+1}_{i-1} }{ \\Delta x} &= 0 \\\\\n", "% \\frac{u^{n+1}_{i+1/2} - u^{n}_{i+1/2}}{\\Delta t}+\\frac{ u^{n}_{i+1} u^{n+1}_{i+1/2} - u^{n}_{i} u^{n+1}_{i-1/2} }{ \\Delta x} &= -g\\frac{H^{n+1}_{i+1} - H^{n+1}_i}{\\Delta x} - g i_0 \\\\\n", " \\end{align}\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "代数方程式の形式に書き換えると," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", " \\begin{align}\n", " A_{i} \\delta h_{i} + A_{i+1} \\delta h_{i+1} + A_{i-1} \\delta h_{i-1} &= B_i \\\\\n", " A_{i} &= \\dfrac{g}{\\Delta x^2} \\left( \\dfrac{h^*_i}{a_{i+1/2}} + \\dfrac{h^*_{i-1}}{a_{i-1/2}} \\right) \\\\ \n", " A_{i+1} &= - \\dfrac{g}{\\Delta x^2} \\dfrac{h^*_{i}}{a_{i+1/2}} \\\\\n", " A_{i-1} &= - \\dfrac{g}{\\Delta x^2} \\dfrac{h^*_{i-1}}{a_{i-1/2}} \\\\\n", " B_{i} &= -\\frac{h^{*}_i - h^{n}_i}{\\Delta t} - \\dfrac{ u^*_{i+1/2} h^*_{i} - u^*_{i-1/2} h^*_{i-1} }{ \\Delta x}\n", " \\end{align}\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 緩和係数の導入" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "緩和係数$\\alpha_p$,$\\alpha_u$を導入すると,水深の更新式および運動方程式の近似式は以下となる." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", " \\begin{align}\n", " h^{n+1} &= h^* + \\alpha_p \\delta h \\\\\n", " \\end{align}\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", " \\begin{align}\n", " \\dfrac{a_{i+1/2}}{\\alpha_u} u^{*}_{i+1/2} + a_{i+3/2} u^{*}_{i+3/2} + a_{i-1/2} u^{*}_{i-1/2} &= b_{i+1/2}\n", " -g\\frac{h^{*}_{i+1} - h^{*}_i}{\\Delta x} + g ( i_0 - i_e) + (1-\\alpha_u)\\dfrac{a_{i+1/2}}{\\alpha_u} u^{*old}_{i+1/2}\n", " \\end{align}\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ここに,$u^{*old}$は,反復計算の前のステップの値を示す." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 計算手順\n", "\n", "1. $h^*$の仮値を設定\n", "1. 運動方程式の近似式より$u^*$を計算\n", "1. 圧力の補正式より$\\delta h$を計算\n", "1. 流速の補正式より$\\delta u$を計算\n", "1. 収束判定:$\\delta h$が十分小さいか\n", "1. 小さくない場合.$h^{n+1}$を$h^*$として計算を進める\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }