工学系大学院生のブログ

2人の大学院生による雑記ブログ

カテゴリー: 第6回 高次精度化

第6-5回 高次精度一次元オイラー方程式[python]

$$\frac{\partial Q}{\partial t}+ \frac{\partial F}{\partial x} =0$$ $$Q=\left\{ \begin{array}{c} \rho \\ \rho u \\ e \end{array}\right\} , F=\left\{ \begin{array}{c} \rho u \\ p+\rho u^2 \\ (e+p)u \end{array}\right\} $$ 第5回との比較を行いたいので、同様のSod shock tubeと呼ばれる衝撃波管に対して数値解析を行います。 pythonのコードは最後に書いておきます。 衝撃波管の条件は以下の通りです。 $$\left(\begin{ar.....

第6-4回 MUSCL法と流束制限関数[python]

今回は,第6-2回と第6-3回でそれぞれ説明したMUSCL法と流速制限関数を組み合わせます。 まず,なぜ流速制限関数を用いなければならないのか、考えます。 第6-2回で算出したMUSCL法は次の形でした。 $$u^L_{j+1/2}=u_j+\frac{1}{4}(1-k)(u_j-u_{j-1})+\frac{1}{4}(1+k)(u_{j+1}-u_j)$$ 上記の式に対して、次のように変形を行います。 $$u^L_{j+1/2}-u_{j+1}=u_j-u_{j+1}+\frac{1}{4}(1-k)(u_j-u_{j-1})+\frac{1}{4}(1+k)(u_{j+1}-u_j)$$ $$⇔u^L_{j+1/2}-u_{j+1}=\frac{1}.....

第6-3回 流束制限関数(minmod関数)[python]

この第6回を通して高次精度化を行っており,時間,空間についての高次精度化を説明してきました. 今回は流束すなわちフラックスの高次精度化を考えており,『一次精度風上差分から精度を上げたい』と考えています. しかし,以下の事を証明したGodunovの定理と呼ばれる定理が存在します. 「\( \frac{\partial u}{\partial t} + c\frac{\partial u}{\partial x}=0\)に対して,次の形をした2次以上の精度を持つどのようなスキームも解の単調性を維持することができない」 $$u_j^{n+1}= \sum _k c_k u_{j+k}^n$$ 簡単に言いますと,「全ての領域で同じスキーム(一次風上または中心差分など.....

第6-2回 MUSCL法(有限体積法)[python]

今回は空間高次精度化にあたり、MUSCL法( Monotone Upwind Scheme for Conservation Laws )を用います。 この方法の考え方をまず述べます。 有限体積法では検査体積をとり、そのセル内で一定の値を取るとして考えています。 MUSCL法では、セル内で一次関数や二次関数の分布があると考え、高次精度化します。 上の図のようにセル内の値を考えると、左から一次精度、二次精度、三次精度で表すことができます。 セル内の物理量の分布を求めるため、物理量\(u\)の分布関数を\(x_{j-1/2} \le x \le x_{j+1/2}\)の範囲でテーラー展開します。 $$u(x)=u(x_j)+(x-x_j)u^.....

第6-1回 時間二次精度化(ルンゲクッタ法、有限体積法)[python]

第5回では、有限体積法を用いてSod shock tubeに対する数値解析を行い、次の結果を得ました。 青:厳密解  赤:解析解 定性的に特徴は捉えられていますが、時間、空間ともに一次精度であるため、急峻な変化をとらえることができていません。(x=0.7,0.85付近) そこで、第6回を通して時間、空間の高次精度化を行いたいと思います。 まず、ルンゲクッタ法を用いて時間の二次精度化を行います。 この方法は、時間一次精度の数値流束をnステップとn+1ステップにおいて求め平均化し、n+1/2ステップの数値流束を用いて時間を進めるという方法になります。 式としては次のようになります。*は結果として用いる値でなく、計算途中で出てきた値と思ってください。 一次精度で次.....