%表題 bsnsq_2d 力学ライブラリ (時間積分)
%
%履歴 
\Drireki{95/08/14 竹広真一}
%
%
\section{サブルーチンの説明 : 時間積分}
\label{dtintg}

\subsection{DRUNGE}
\label{drunge}
\begin{enumerate}
  \item 機能 
  \begin{quote}
    Runge-Kutta Scheme (4 次) で時間積分を行う. 
  \end{quote}
  \item 呼び出し方法 
      \begin{verbatim}
          CALL DRUNGE
         O         ( PSI3  , ZETA3 , T3  ,
         I           PSI2  , ZETA2 , T2  ,
         I           RAYL  , PRND  , QINT,
         C           DX    , DZ    , DT  ,
         W           PSI   , ZETA  , T   ,
         W           TNDZ  , TNDT  ,
         W           AJAC  , ALAP          )
      \end{verbatim}
  \item パラメーターの説明 
  \begin{quote}
    \begin{tabular}{llp{11cm}}
       {\tt PSI3(0:NX+1,0:NZ+1)}  & {\tt [R]} & 流線関数(現STEPの値)\\
       {\tt ZETA3(0:NX+1,0:NZ+1)} & {\tt [R]} & 渦度(現STEPの値)\\
       {\tt T3(0:NX+1,0:NZ+1)}    & {\tt [R]} & 温度(現STEPの値)\\
       {\tt PSI2(0:NX+1,0:NZ+1)}  & {\tt [R]} & 流線関数(1STEP前の値)\\
       {\tt ZETA2(0:NX+1,0:NZ+1)} & {\tt [R]} & 渦度(1STEP前の値)\\
       {\tt T2(0:NX+1,0:NZ+1)}    & {\tt [R]} & 温度(1STEP前の値)\\
       {\tt RAYL}                 & {\tt [R]} & レイリー数\\
       {\tt PRND}                 & {\tt [R]} & プラントル数\\
       {\tt QINT}                 & {\tt [R]} & 加熱率\\
       {\tt DX}                   & {\tt [R]} & X 軸上の格子点間隔\\
       {\tt DZ}                   & {\tt [R]} & Z 軸上の格子点間隔\\
       {\tt DT}                   & {\tt [R]} & 積分時間ステップ\\
       {\tt PSI(0:NX+1,0:NZ+1)}   & {\tt [R]} & 流線関数(仮積分用)\\
       {\tt ZETA(0:NX+1,0:NZ+1)}  & {\tt [R]} & 渦度(仮積分用)\\
       {\tt T(0:NX+1,0:NZ+1)}     & {\tt [R]} & 温度(仮積分用)\\
       {\tt TNDZ(0:NX+1,0:NZ+1)}  & {\tt [R]} & 第 1 段階での渦度の時間変化\\
       {\tt TNDT(0:NX+1,0:NZ+1)}  & {\tt [R]} & 第 1 段階での温度の時間変化\\
       {\tt AJAC(0:NX+1,0:NZ+1)}  & {\tt [R]} & ヤコビアン\\
       {\tt ALAP(0:NX+1,0:NZ+1)}  & {\tt [R]} & ラプラシアン
    \end{tabular}
  \end{quote}
  \item 備考 
  \begin{enumerate}
    \item 内部で呼ぶ下位ルーチンは
       {\tt DEULTZ}, {\tt DEULTT}, {\tt DBNDR}. 
  \end{enumerate}
\end{enumerate}

\subsection{DLPFRG}
\label{dlpfrg}
\begin{enumerate}
  \item 機能 
  \begin{quote}
    Leap Frog scheme で時間積分を行う. 
  \end{quote}
  \item 呼び出し方法 
      \begin{verbatim}
          CALL DLPFRG
         O     ( PSI3  , ZETA3 , T3  ,
         I       PSI2  , ZETA2 , T2  , 
         I       PSI1  , ZETA1 , T1  , 
         I       RAYL  , PRND  , QINT,
         C       DX    , DZ    , DT  ,
         W       AJAC  , ALAP   ) 
      \end{verbatim}
  \item パラメーターの説明 
  \begin{quote}
    \begin{tabular}{llp{11cm}}
       {\tt PSI3(0:NX+1,0:NZ+1)}  & {\tt [R]} & 流線関数(現STEPの値)\\
       {\tt ZETA3(0:NX+1,0:NZ+1)} & {\tt [R]} & 渦度(現STEPの値)\\
       {\tt T3(0:NX+1,0:NZ+1)}    & {\tt [R]} & 温度(現STEPの値)\\
       {\tt PSI2(0:NX+1,0:NZ+1)}  & {\tt [R]} & 流線関数(1STEP前の値)\\
       {\tt ZETA2(0:NX+1,0:NZ+1)} & {\tt [R]} & 渦度(1STEP前の値)\\
       {\tt T2(0:NX+1,0:NZ+1)}    & {\tt [R]} & 温度(1STEP前の値)\\
       {\tt PSI1(0:NX+1,0:NZ+1)}  & {\tt [R]} & 流線関数(2STEP前の値)\\
       {\tt ZETA1(0:NX+1,0:NZ+1)} & {\tt [R]} & 渦度(2STEP前の値)\\
       {\tt T1(0:NX+1,0:NZ+1)}    & {\tt [R]} & 温度(2STEP前の値)\\
       {\tt RAYL}                 & {\tt [R]} & レイリー数\\
       {\tt PRND}                 & {\tt [R]} & プラントル数\\
       {\tt QINT}                 & {\tt [R]} & 加熱率\\
       {\tt DX}                   & {\tt [R]} & X 軸上の格子点間隔\\
       {\tt DZ}                   & {\tt [R]} & Z 軸上の格子点間隔\\
       {\tt DT}                   & {\tt [R]} & 積分時間ステップ\\
       {\tt AJAC(0:NX+1,0:NZ+1)}  & {\tt [R]} & ヤコビアン\\
       {\tt ALAP(0:NX+1,0:NZ+1)}  & {\tt [R]} & ラプラシアン
    \end{tabular}
  \end{quote}
  \item 備考 
  \begin{enumerate}
    \item 内部で呼ぶ下位ルーチンは
       {\tt DLPFZ}, {\tt DLPFT}, {\tt DBNDR}. 
  \end{enumerate}
\end{enumerate}

\subsection{DHEUN}
\label{dheun}
\begin{enumerate}
  \item 機能 
  \begin{quote}
    Heun scheme で時間積分を行う. 
  \end{quote}
  \item 呼び出し方法 
      \begin{verbatim}
          CALL DHEUN
         O     ( PSI3  , ZETA3 , T3  , 
         I       PSI2  , ZETA2 , T2  , 
         I       RAYL  , PRND  , QINT, 
         C       DX    , DZ    , DT  ,
         W       TNDZ  , TNDT  ,
         W       AJAC  , ALAP   ) 
      \end{verbatim}
  \item パラメーターの説明 
  \begin{quote}
    \begin{tabular}{llp{11cm}}
       {\tt PSI3(0:NX+1,0:NZ+1)}  & {\tt [R]} & 流線関数(現STEPの値)\\
       {\tt ZETA3(0:NX+1,0:NZ+1)} & {\tt [R]} & 渦度(現STEPの値)\\
       {\tt T3(0:NX+1,0:NZ+1)}    & {\tt [R]} & 温度(現STEPの値)\\
       {\tt PSI2(0:NX+1,0:NZ+1)}  & {\tt [R]} & 流線関数(1STEP前の値)\\
       {\tt ZETA2(0:NX+1,0:NZ+1)} & {\tt [R]} & 渦度(1STEP前の値)\\
       {\tt T2(0:NX+1,0:NZ+1)}    & {\tt [R]} & 温度(1STEP前の値)\\
       {\tt RAYL}                 & {\tt [R]} & レイリー数\\
       {\tt PRND}                 & {\tt [R]} & プラントル数\\
       {\tt QINT}                 & {\tt [R]} & 加熱率\\
       {\tt DX}                   & {\tt [R]} & X 軸上の格子点間隔\\
       {\tt DZ}                   & {\tt [R]} & Z 軸上の格子点間隔\\
       {\tt DT}                   & {\tt [R]} & 積分時間ステップ\\
       {\tt TNDZ(0:NX+1,0:NZ+1)}
                 & {\tt [R]} & 作業領域. 第 1 段階での渦度の時間変化\\
       {\tt TNDT(0:NX+1,0:NZ+1)}
                 & {\tt [R]} & 作業領域. 第 1 段階での温度の時間変化\\
       {\tt AJAC(0:NX+1,0:NZ+1)}  & {\tt [R]} & 作業領域. ヤコビアン\\
       {\tt ALAP(0:NX+1,0:NZ+1)}  & {\tt [R]} & 作業領域. ラプラシアン
    \end{tabular}
  \end{quote}
  \item 備考 
  \begin{enumerate}
    \item 内部で呼ぶ下位ルーチンは
       {\tt DEULTZ}, {\tt DEULTT}, {\tt DBNDR}, 
       {\tt DHEUZZ}, {\tt DBNDRZ}, {\tt DHEUZT}, {\tt DBNDRT}
  \end{enumerate}
\end{enumerate}

\subsection{DEULER}
\label{deuler}
\begin{enumerate}
  \item 機能 
  \begin{quote}
    Euler scheme で時間積分を行う. 
  \end{quote}
  \item 呼び出し方法 
      \begin{verbatim}
          CALL DEULER
         O     ( PSI3  , ZETA3 , T3  ,
         I       PSI2  , ZETA2 , T2  , 
         I       RAYL  , PRND  , QINT,
         C       DX    , DZ    , DT  ,
         W       AJAC2 , ALAP2         )
      \end{verbatim}
  \item パラメーターの説明 
  \begin{quote}
    \begin{tabular}{llp{11cm}}
       {\tt PSI3(0:NX+1,0:NZ+1)}  & {\tt [R]} & 流線関数(現STEPの値)\\
       {\tt ZETA3(0:NX+1,0:NZ+1)} & {\tt [R]} & 渦度(現STEPの値)\\
       {\tt T3(0:NX+1,0:NZ+1)}    & {\tt [R]} & 温度(現STEPの値)\\
       {\tt PSI2(0:NX+1,0:NZ+1)}  & {\tt [R]} & 流線関数(1STEP前の値)\\
       {\tt ZETA2(0:NX+1,0:NZ+1)} & {\tt [R]} & 渦度(1STEP前の値)\\
       {\tt T2(0:NX+1,0:NZ+1)}    & {\tt [R]} & 温度(1STEP前の値)\\
       {\tt RAYL}                 & {\tt [R]} & レイリー数\\
       {\tt PRND}                 & {\tt [R]} & プラントル数\\
       {\tt QINT}                 & {\tt [R]} & 加熱率\\
       {\tt DX}                   & {\tt [R]} & X 軸上の格子点間隔\\
       {\tt DZ}                   & {\tt [R]} & Z 軸上の格子点間隔\\
       {\tt DT}                   & {\tt [R]} & 積分時間ステップ\\
       {\tt AJAC2(0:NX+1,0:NZ+1)} & {\tt [R]} & 作業領域. ヤコビアン\\
       {\tt ALAP2(0:NX+1,0:NZ+1)} & {\tt [R]} & 作業領域. ラプラシアン
    \end{tabular}
  \end{quote}
  \item 備考 
  \begin{enumerate}
    \item 内部で呼ぶ下位ルーチンは
       {\tt DEULRZ}, {\tt DEULRT}, {\tt DBNDR}. 
       そらにその下位に {\tt DHEUZZ}, {\tt DBNDRZ} の下位ルーチンが存
       在する. 
  \end{enumerate}
\end{enumerate}

%\newpage

