\section{数値計算上のテクニック}

数値計算を安定して稼働させるためにいくつかテクニックを使っている. 
本節では平衡解を求めるためのテクニックを紹介する. 


\subsection{相の扱い (その 1)}
\label{sou}

ある相に存在する物質存在量が全て 0 に近付くと, \Deqref{20010123-3} 式は

\begin{eqnarray}
0 \cdot \chi_{e} = 0
\end{eqnarray}

となり, $\chi_{e}$ は不定となる. それを避けるために, 
相に存在する全ての物質の存在量が 0 に近付いた場合, その相が存在しないものとし
て計算を進める. 
\bigskip


現在は相を削除するかどうか判断するためのしきい値として 
$1.0 \times 10^{-10}$ という値を用いている. 
このしきい値はかなりナイーブで, 例えば $1.0 \times
10^{-18}$ にすると, 計算が不安定になる. 行列のコンディションが
悪くなるためだと想像される. 


\subsection{対数項 ($\ln(m_{i}^{\phi}/m^{\phi})$) の扱い}

\Deqref{20010114-10} 式の対数項を考える. 

\begin{eqnarray}
\Gamma_{i}^{\phi}
= m_{i}^{\phi} \left( \frac{{\mu_{i}^{\circ}}^{\phi}}{RT} 
	      + \ln{\frac{m_{i}^{\phi}}{m^{\phi}}} + \alpha \ln{p} \right)
\nonumber
\end{eqnarray}

物質存在量 $m_{i}$ が 0 に近付いても, 
$\Gamma_{i}^{\phi}$ が $-\infty$ に発散しないことが必要となる. 
そのため実際の計算では, 
\Deqref{20010114-10}, \Deqref{20010123-2}, \Deqref{20010123-3}, 
\Deqref{3.3.34} 式の $\Gamma_{i}^{\phi}$ に関する項を, 
$m^{\phi}$ で割った形式で置き換えている. 

\begin{eqnarray}
\frac{\Gamma_{i}^{\phi}}{m^{\phi}}
= \frac{m_{i}^{\phi}}{m^{\phi}}  
  \left( \frac{{\mu_{i}^{\circ}}^{\phi}}{RT} 
  + \ln{\frac{m_{i}^{\phi}}{m^{\phi}}} + \alpha \ln{p} \right). 
\Deqlab{200010131-3}
\end{eqnarray}

\Deqref{200010131-3} 式の対数項は

\begin{eqnarray}
\frac{m_{i}^{\phi}}{m^{\phi}}  \cdot
 \ln{\frac{m_{i}^{\phi}}{m^{\phi}}}
\end{eqnarray}

となっているので, 物質存在量 $m_{i}$ が 0 に近付く場合には
対数項は 0 収束する. 



\subsection{負のモル数の処理}

\Deqref{20010123-2}, \Deqref{20010123-3}, \Deqref{3.3.34} 式を
連立することによって, より平衡状態に近い物質存在量 $n_{i}$ が求まる. 
しかし得られた $n_{i}$ は負になる可能性がある. 
もしも計算から得られた存在量 $n_{i}$ が負の場合, 
以下の式より得られる $n_{i}^{*}$ をより平衡状態に近い物質存在量とみなす. 

\begin{eqnarray}
n_{i}^{*} = m_{i} + \lambda \{n_{i} - m_{i}\}.
\Deqlab{20010129-51}
\end{eqnarray}

ここで $\lambda (> 0)$ は定数である.  \Deqref{20010129-51} 式の $n_{i}^{*}$ は 
元素保存の式 (\Deqref{2} 式) を満たす. 
$n_{i}^{*}$ は必ず正なので $\lambda$ は以下のようになる. 


\begin{eqnarray}
&&\lambda < \frac{m_{i}}{m_{i} - n_{i}}. 
\Deqlab{20010129-52} \\
&&\lambda = \frac{m_{i}}{m_{i} - n_{i}} \times 0.99
\Deqlab{20010214-10} 
\end{eqnarray}


\Deqref{20010129-52} 式の $\lambda$ は全ての $i$ に関して成立するものと
する. 但し \Deqref{20010129-52} 式の値を具体的に与える必要があるので, 
実際には \Deqref{20010214-10} 式のようにしている. 
\bigskip

もしも全ての $n_{i}$ が負でなければ $\lambda = 1$ である. 



\subsection{計算を停止させるための条件}

本手法では逐次近似を反復的に行うために, 計算を停止させるかどうかの判定条件を
設定する必要がある.  本手法では熱力学関数 $G$ の変化率から計算を停止する
かどうかの判断を行う. 

\begin{itemize}
  \item 計算前と後の熱力学関数 G を比較し, 前の値が後の値よりも小さ
	      い場合. 
  \item 計算前と後の熱力学関数 G の変化率が $10^{-15}$ 以下になった
	      場合. 
\end{itemize}

以上の条件のどちらか一方が満たされた場合, 空気塊は平衡状態に達したとみな
し計算を停止させる. 
\bigskip


