%表題   力学過程 力学過程メイン
%
%履歴
\Drireki{93/09/04 保坂征宏}
\Drireki{2001/12/06 石渡正樹}

% \footnotetext の中の verb が全然ダメ.
%

\section{サブルーチンの説明 : 力学過程制御}

力学過程の制御プログラムである. 

\subsection{DYNMCS}
\label{dynmcs}
\begin{enumerate}
  \item 機能 
    \begin{quote}
       力学過程の制御を行なう. 
    \end{quote}
  \item 呼び出し方法
    \begin{verbatim}
      SUBROUTINE DYNMCS                      !"  力学過程制御
     M         ( GAU   , GAV   , GAT   , GAPS  , GAQ   ,
     M           GBU   , GBV   , GBT   , GBPS  , GBQ   ,
     M           GAVOR , GADIV , GBVOR , GBDIV ,
     M           GTUA  , GTVA  , GTH   , GTR   ,
     I           IT    , DELT  , OADVNC,
     C           ALON  , DLON  , ALAT  , DLAT  ,
     C           SIG   , SIGM  , DSIG  , DSIGM           )
   \end{verbatim}
   
  \item パラメータの説明
   
   \begin{verbatim}
*
*   [MODIFY]
      REAL       GAU   ( IDIM, JDIM, KMAX )  !" 西風  ｕ
      REAL       GAV   ( IDIM, JDIM, KMAX )  !" 南風  ｖ
      REAL       GAT   ( IDIM, JDIM, KMAX )  !" 温度  Ｔ
      REAL       GAPS  ( IDIM, JDIM       )  !" 地表気圧
      REAL       GAQ   ( IDIM, JDIM, KMAX )  !" 比湿  ｑ
      REAL       GAVOR ( IDIM, JDIM, KMAX )  !" 渦度  ζ
      REAL       GADIV ( IDIM, JDIM, KMAX )  !" 発散  Ｄ
*"       : 格子点データ(t) <GENGD> 格子点データ(t+Δt)
*
      REAL       GBU   ( IDIM, JDIM, KMAX )  !" 西風  ｕ
      REAL       GBV   ( IDIM, JDIM, KMAX )  !" 南風  ｖ
      REAL       GBT   ( IDIM, JDIM, KMAX )  !" 温度  Ｔ
      REAL       GBPS  ( IDIM, JDIM       )  !" 地表気圧
      REAL       GBQ   ( IDIM, JDIM, KMAX )  !" 比湿  ｑ
      REAL       GBVOR ( IDIM, JDIM, KMAX )  !" 渦度  ζ
      REAL       GBDIV ( IDIM, JDIM, KMAX )  !" 発散  Ｄ
*"       : 格子点データ(t-Δt) <MOVGD>  格子点データ(t)
*
      REAL       GTUA  ( IDIM, JDIM, KMAX )  !" 東西運動量変化項ＵＡ
      REAL       GTVA  ( IDIM, JDIM, KMAX )  !" 南北運動量変化項ＶＡ
      REAL       GTH   ( IDIM, JDIM, KMAX )  !" 温度時間変化項  Ｈ
      REAL       GTR   ( IDIM, JDIM, KMAX )  !" 比湿時間変化項  Ｒ
*"       :  格子点変化項を足し込む
*
      INTEGER    IT                          !" 通し時間
      REAL       DELT                        !" 時間刻みΔt
      LOGICAL    OADVNC                      !" 時刻が進行するか否か
*"       :  時刻変数
*
*   [INPUT]
      REAL       ALON  ( IDIM )              !" 経度
      REAL       DLON  ( IDIM )              !" 経度荷重
      REAL       ALAT  ( JDIM )              !" 緯度
      REAL       DLAT  ( JDIM )              !" 緯度荷重
      REAL       SIG   ( KMAX )              !" σレベル(整数)
      REAL       SIGM  (KMAX+1)              !" σレベル(半整数)
      REAL       DSIG  ( KMAX )              !" Δσ(整数)
      REAL       DSIGM (KMAX+1)              !" Δσ(半整数)
     \end{verbatim}
     
  \item 備考

    \begin{enumerate}  
    \item 手順は以下のとおりである. 
      \begin{enumerate}
        \item 初期設定. 
            \begin{itemize}
              \item スペクトル定数の設定. (\verb!DSETC!)
              \item 鉛直差分定数の設定. ( \verb!DSETV! )
              \item 出力設定. ( \verb!DHSTRG! )
              \item セミインプリシット行列作成\footnotemark . 
                    ( \verb!DELTSV! )
                   \footnotetext{
%                        正確には, \verb!DELT! が変わる時にのみ行なう. 
%%%                           この行文句言われる
                        正確には, DELT が変わる時にのみ行なう. 
                        通常は実行開始後の数ステップに
                        行なわれるだけである. }
            \end{itemize}

        \item 時間積分準備
 
            \begin{itemize}
              \item 地表ジオポテンシャルの計算. ( \verb!SETPHS! )
              \item 地表面気圧経度の計算. ( \verb!PIXPIY! )
                    $A, t$ のデータを用いる. 
              \item 非線形力学項の計算. ( \verb!GRDDYN! )
                    $A, t$ のデータを用いる. 
            \end{itemize}
        \item スペクトルへの変換 
            \begin{itemize}
              \item 時間変化項をスペクトルに変換. ( \verb!TENG2W!)
              \item データのスペクトルへの変換. ( \verb!GD2WD! )
                    $A, t-\triangle t$ での値を変換. 
            \end{itemize}

        \item 時間積分
            \begin{itemize}
              \item 時間積分\footnotemark . ( \verb!TINTGR! )
                    セミインプリシット. 
                    新スペクトルデータ作成. 
              \item 格子点データの時刻進行\footnotemark . 
                    ( \verb!MOVED! )
                     \footnotetext{
                           時刻が進む場合のみ行なう. }
                    格子点値$A(t)$ を $B(t)$ にコピー.               
              \item 新格子点値 ( $t+ \triangle t$ ) の生成. 
                    ( \verb!GENGD! )
                    スペクトルデータを格子点値 $A(t+\triangle t)$ に変換.
            \end{itemize}
        \item 補正. 
            \begin{itemize}
              \item 水平拡散による渦度・発散の時間変化計算. 
                    ( \verb!TENDIF! )
                    新スペクトルデータを元に計算. 
              \item 水平拡散摩擦による温度の時間変化計算. 
                    ( \verb!CORDIF! )
                    新格子点データ $A(t+\triangle t)$ を変更. 
            \end{itemize}
        \item 出力. 
            \begin{itemize}
              \item 鉛直速度, 地表面気圧変化の出力. ( \verb!HISTIN! )
              \item 診断出力. 格子点値.  ( \verb!DDIAG! ) 
              \item 診断出力. スペクトル値. ( \verb!SPCTLD! )
            \end{itemize}
      \end{enumerate}
  \end{enumerate}
\end{enumerate}
    
    
\subsection{DSTRT}
\label{dstrt}
\begin{enumerate}
  \item 機能 
    \begin{quote}
       初期データの再生成を行なう. 
    \end{quote}
  \item 呼び出し方法
    \begin{verbatim}
      ENTRY DSTRT                      !" 初期データの再生成
     M         ( GAU   , GAV   , GAT   , GAPS  , GAQ   ,
     O           GAVOR , GADIV ,
     C           ALAT  , DLAT                           )
    \end{verbatim}

  \item パラメータの説明
    
    \begin{verbatim}
*   [MODIFY]
*     REAL       GAU   ( IDIM, JDIM, KMAX )  !" 西風  ｕ
*     REAL       GAV   ( IDIM, JDIM, KMAX )  !" 南風  ｖ
*     REAL       GAT   ( IDIM, JDIM, KMAX )  !" 温度  Ｔ
*     REAL       GAPS  ( IDIM, JDIM       )  !" 地表気圧
*     REAL       GAQ   ( IDIM, JDIM, KMAX )  !" 比湿  ｑ
*
*   [OUTNPUT]
*     REAL       GAVOR ( IDIM, JDIM, KMAX )  !" 渦度  ζ
*     REAL       GADIV ( IDIM, JDIM, KMAX )  !" 発散  Ｄ
*
*   [INPUT]
*     REAL       ALAT  ( JDIM )              !" 緯度
*     REAL       DLAT  ( JDIM )              !" 緯度荷重
   \end{verbatim}

  \item 備考
  
    \begin{enumerate}
      \item 手順は以下のとおり. 
      \begin{enumerate}
        \item スペクトル係数の計算\footnotemark . ( \verb!DSETC! ). 
               \footnotetext{
                    DYNMCS で計算されていない場合に行なう. 
                    当ルーチンが ENTRY で DYNMCS に
                    付属しているのは
                    二度スペクトル係数を計算するのを避けるため
                    に過ぎないと思われる. 
                    その点は論理変数で制御することにして, 
                    このルーチンは外に出すべきであろう. 
                   }
        \item 力学過程関係のデータ再生成. ( \verb!STRTV! ) 
      \end{enumerate}

    \end{enumerate}
\end{enumerate}

\subsection{DHSTRG}
\label{dhstrg}
\begin{enumerate}
  \item 機能 
    \begin{quote}
       力学関係関係データの出力登録. 
    \end{quote}
  \item 呼び出し方法
    \begin{verbatim}
      SUBROUTINE DHSTRG                !" 力学関係出力の登録
    \end{verbatim}
  \item パラメータの説明
    \begin{enumerate}
      \item なし.
    \end{enumerate}
  \item 備考
    \begin{enumerate}
      \item \verb!SIGDOT! ( 鉛直風速度変化率 ), 
            \verb!PIDOT! ( 地表面気圧変化率 ) の出力登録を行なう. 
            ( \verb!HISTRG! を呼ぶ. )
    \end{enumerate}
\end{enumerate}


