next up previous contents
: 補正フラックスの問題(1): clipping : いくつかの問題 : いくつかの問題   目次

応用性

Boris and Book(1973) では(4)または(5)のスキー ムに対して FCT を施したが, 拡散を含むような他のスキームに対しても 応用することができる. 例えば上流差分に FCT を応用すると以下のよう な手順で計算を行なう(Book et al., 1975).

  1. 普通に上流差分で計算する.

    \begin{displaymath}
\tilde{\rho }_{i} = \rho _{i}^{n}-\frac{\Delta t}{\Delta x}
[\rho _{i}^{n}u_{i}^{n}-\rho _{i-1}^{n}u_{i-1}^{n}].
\end{displaymath}

  2. 各格子点間で差分を計算する.

    \begin{displaymath}
\Delta _{i+\frac{1}{2}} = \tilde{\rho }_{i+1}-\tilde{\rho }_{i}.
\end{displaymath}

  3. 補正フラックスを計算する.

    \begin{displaymath}
f^{c}_{i+\frac{1}{2}} = S_{i+\frac{1}{2}} \mbox{max} \{0,
...
...}{2}}\vert, \; S_{i+\frac{1}{2}}\Delta _
{i+\frac{3}{2}})\},
\end{displaymath}


    \begin{displaymath}
S = \left\{
\begin{array}{lcl}
+1 & \mbox{if} & \Delta _...
...box{if} & \Delta f_{i+\frac{1}{2}} < 0.
\end{array} \right.
\end{displaymath}

    ここで,

    \begin{displaymath}
\eta _{i+\frac{1}{2}}=\frac{1}{2}\epsilon _{i+\frac{1}{2}}
(1-\epsilon _{i+\frac{1}{2}}),
\end{displaymath}


    \begin{displaymath}
\epsilon _{i+\frac{1}{2}} = \frac{\Delta t}{\Delta x}
\mbox{max}[u_{i}^{n}, u_{i+1}^{n}].
\end{displaymath}

  4. 補正を行なう.

    \begin{displaymath}
\rho _{i}^{n+1}=\tilde{\rho }_{i} - (f_{i+\frac{1}{2}}^{c}-
f_{i-\frac{1}{2}}^{c}).
\end{displaymath}

この場合 antidiffusive フラックスが $\eta _{i+\frac{1}{2}}\vert\Delta _
{i+\frac{1}{2}}\vert$ となっているだけで, 手順は先に示した SHASTA の場 合と同様である. つまり用いるスキームの antidiffusive フラックスが わかれば, FCT は簡単にそのスキームに適用することができる.

しかし当然のことながらスキームごとに antidiffusive フラックスは異 なる. よって適用するスキームを変更すると一から考察しなおさなければ ならない. これは結構面倒である. 実際に計算するときには一からコード を組み直さなければならなくなるからである. 何らかのより一般的な FCT の定義法があれば, スキーム全体の見通しの点や実際に計算を行なう上で 便利である.



odakker 平成18年2月13日