% 表題   dcpam ドキュメント 数理モデル
%
% 履歴 
%\Drireki{2006/12/01 石渡正樹}
%
%\Dchapterhead
  \chapter{鉛直フィルター}

\section{背景と目的}


太陽定数を増加させた計算を行ったところ 2-grid noise が生じた.
このノイズの振幅は非常に大きくなり計算が破綻する.

このノイズを消すためにフィルターをかける.
物理的実体は無い. 強いて言えば, 重力波でつぶれるかもね, 程度である.

\section{基本的な手続き}

\begin{enumerate}
 \item 調節のための基本温度場を決める.
 \item 調節を行う部分を決める.
       具体的には, 全層か一部か. 一部としたらどの領域か
 \item 温度構造を基本場を調節する.
       その後, 誤差の補正を行う.
\end{enumerate}

\section{調節のための基本温度場}

ギザギザ成分を取り除いた分布を基本場としたい.
そこで「基本場」は次で与えられるとする.
\begin{eqnarray}
 T_{Bk} = \frac{T_{k+1/2} + T_{k-1/2}}{2}
\end{eqnarray}
ここで, $1 \leq k \leq KMAX$

\section{調節する部分の決定}

\begin{enumerate}
\item 全層の場合\\
何も考えずに全部やる
\item ギザギザ部分のみ調節する場合\\
以下の式を満たす level $k$ はギザギザな点と判定する.
\begin{eqnarray}
 (T_{k} - T_{k-1}) \cdot (T_{k+1} - T_{k}) < 0
\end{eqnarray}
実際には, こんな凝ったやってないと思う.
\end{enumerate}

\section{調節および誤差の補正}

節のタイトルが正しくないような気がする.
「誤差の補正」ではないなあ.


\begin{enumerate}
\item 全層で調節を行い, 全層に誤差をばらまく場合.\\

これについては未実装である.

これはもっとも安直な調節方法である.
調節前の温度の値を $T_{k}$, 調節後を $\hat{T}_{k}$ とする.

何も考えずに調節するなら
\begin{eqnarray}
 \hat{T}_{k} = T_{k} + S_{grst} (T_{Bk} - T_{k})
\end{eqnarray}
温度変化量は
\begin{eqnarray}
 \Delta T_{k} \equiv \hat{T}_{k} - T_{k} = S_{grst} (T_{Bk} - T_{k})
\end{eqnarray}
この場合, 全体で
\begin{eqnarray}
  \sum^{KMAX}_{k=1} c_v \Delta T_{k} \Delta p_{k}
= \sum^{KMAX}_{k=1} c_v S_{grst} (T_{Bk} - T_{k}) (p_s \Delta \sigma_{k})
\end{eqnarray}
の内部エネルギーをコラムに与えてしまうことになる.
これが誤差になる.

調節の前後で全体の内部エネルギー量に変化がないようにするためには
\begin{eqnarray}
  \sum^{KMAX}_{k=1} \Delta T_{k} \Delta p_{k} = 0
\end{eqnarray}
としてやらなければいけない.
ただし, ここで比熱が一定の場合を仮定した.

これを解決するもっとも安直な方法は上の誤差を全層にばらまくこと.
この場合, 温度の調節量は以下の式で与えられる.
\begin{eqnarray}
    \hat{T}_{k} 
=   T_{k} + S_{grst} (T_{Bk} - T_{k})
  - \frac{
        \sum^{KMAX}_{k=1} S_{grst} (T_{Bk} - T_{k}) \Delta p_{k}
        }{
        \sum^{KMAX}_{k=1} \Delta p_{k}
         }
\end{eqnarray}
こうすると
\begin{eqnarray}
    \sum^{KMAX}_{k=1} \hat{T}_{k} \Delta p_{k}
=   \sum^{KMAX}_{k=1} 
    \left\{
        S_{grst} (T_{Bk} - T_{k}) \Delta p_{k}
      - \frac{
        \sum^{KMAX}_{k=1} S_{grst} (T_{Bk} - T_{k}) \Delta p_{k}
        }{
        \sum^{KMAX}_{k=1} \Delta p_{k}
         }
        \Delta p_{k}
   \right\}
\end{eqnarray}
となる.

\item 全層で調節し, 誤差を局所的に解消していく場合

AGCM5 の場合だと, p2grstA.F

3 点トリオで考え, そこで生じた誤差をその 3 層にばらまく
ことにする.
下から順に, 
以下の式で温度の調節量を計算していく.
\begin{eqnarray}
      \hat{T}_{k-1} 
&=&   T_{k-1} + S_{grst} (T_{Bk-1} - T_{k-1})
  - \frac{
        \sum^{k+1}_{k=k-1} S_{grst} (T_{Bk} - T_{k}) \Delta p_{k}
        }{
        \sum^{k+1}_{k=k-1} \Delta p_{k}
         }, \\
%
      \hat{T}_{k} 
&=&   T_{k} + S_{grst} (T_{Bk} - T_{k})
  - \frac{
        \sum^{k+1}_{k=k-1} S_{grst} (T_{Bk} - T_{k}) \Delta p_{k}
        }{
        \sum^{k+1}_{k=k-1} \Delta p_{k}
         }, \\
%
      \hat{T}_{k+1} 
&=&   T_{k+1} + S_{grst} (T_{Bk+1} - T_{k+1})
  - \frac{
        \sum^{k+1}_{k=k-1} S_{grst} (T_{Bk} - T_{k}) \Delta p_{k}
        }{
        \sum^{k+1}_{k=k-1} \Delta p_{k}
         }
\end{eqnarray}
この $\hat{T}$ を用いて, 1 つ上に上がり,
\begin{eqnarray}
      \hat{\hat{T}}_{k} 
&=&   \hat{T}_{k} + S_{grst} (T_{Bk} - \hat{T}_{k})
  - \frac{
        \sum^{k+2}_{k=k} S_{grst} (T_{Bk} - \hat{T}_{k}) \Delta p_{k}
        }{
        \sum^{k+2}_{k=k} \Delta p_{k}
         }, \\
%
      \hat{\hat{T}}_{k+1} 
&=&   \hat{T}_{k+1} + S_{grst} (T_{Bk+1} - \hat{T}_{k+1})
  - \frac{
        \sum^{k+2}_{k=k} S_{grst} (T_{Bk} - \hat{T}_{k}) \Delta p_{k}
        }{
        \sum^{k+2}_{k=k} \Delta p_{k}
         }, \\
%
      \hat{T}_{k+2} 
&=&   T_{k+1} + S_{grst} (T_{Bk+2} - T_{k+2})
  - \frac{
        \sum^{k+2}_{k=k} S_{grst} (T_{Bk} - \hat{T}_{k}) \Delta p_{k}
        }{
        \sum^{k+2}_{k=k} \Delta p_{k}
         }
\end{eqnarray}
ただし, 右辺 3 項目の分子の和において
$k$ が $k+2$ の場合は, $\hat{T}_{k+2}$ ではなく
$T_{k+2}$ である(まだ調節を行っていないので).

以上をlevel を 1 つづつ上がりながら順番に行う.

\item ギザギザ部分だけを調節し誤差を 3 点ごとにばらまく

下から順に
\begin{eqnarray}
 (T_{k} - T_{k-1}) \cdot (T_{k+1} - T_{k}) < 0
\end{eqnarray}
となる部分の 3 点トリオ出 (2) と同じことを行う.

\item ギザギザ部分だけを調節し, 誤差をギザギザ部分全体に
      均等にばらまく場合

連続してギザギザ部分になっているところを判定し
(1) と同じことをする.
下記のように判定する.
\begin{enumerate}
 \item 下から順に登っていって初めて
\begin{eqnarray}
 (T_{k} - T_{k-1}) \cdot (T_{k+1} - T_{k}) < 0
\end{eqnarray}
となったところで, $(k-1)$ level がギザギザ部分の底
と判定する.
\item ギザギザ部分で登っていって
\begin{eqnarray}
 (T_{k} - T_{k-1}) \cdot (T_{k+1} - T_{k}) \geq 0
\end{eqnarray}
となったら, $k$ level がギザギザ部分の天井.
\end{enumerate}
このように判定されたギザギザ部分全体に誤差をばらまく.
\end{enumerate}

