\documentclass[titlepage]{jarticle}
\title{DCPAM Reference Manual}
\author{GFD Dennou Club}
\begin{document}
\maketitle
\tableofcontents
\clearpage
\section{\label{label:0} Module time\_mod}

\begin{itemize}
\item Developers: Morikawa Yasuhiro
\item Version: \$Id: time.f90,v 1.10 2005/01/19 08:52:41 morikawa Exp \$
\item Tag Name: \$Name:  \$
\item Change History: 
\end{itemize}
\subsection{\label{label:1} Overview}

This module set "Time" and "Step".

時刻や「計算ステップ」に関して設定するためのモジュールである。

\subsection{\label{label:2} Error Handling}

\subsection{\label{label:3} Known Bugs}

\subsection{\label{label:4} Note}

\subsection{\label{label:5} Future Plans}

\subsection{\label{label:6} Dependency}

\begin{verbatim}
use type_mod,    only : REKIND, DBKIND, INTKIND, TOKEN, STRING
\end{verbatim}
\subsection{\label{label:7} Public Interface}

\begin{verbatim}
private
public :: time_init, time_progress, time_end,  & ! subroutines
     &    InitTime, DelTime,                   & ! variables
     &    StepInterval, OutputStep,            & ! variables
     &    CurrentTime, CurrentLoop,            & ! variables
     &    tvar, ttype, tname, tunit              ! variables
\end{verbatim}
\subsection{\label{label:8} Public Data}

データ出力の際のステップ間隔や出力回数などに関する情報。
 time\_init  で設定。

\begin{verbatim}
real(DBKIND)     , save ::  &
     & InitTime = 0.0     , & ! 積分開始時刻
     & DelTime  = 300         ! 時間ステップ

integer(INTKIND) , save ::  & 
     & StepInterval = 1   , & ! 出力ステップ間隔
     & OutputStep   = 1       ! 出力回数

character(STRING), save ::  &
     & tvar  = 'time'     , & ! 時刻変数名
     & ttype = 'float'    , & ! 時刻変数の型
     & tname = 'time'     , & ! 時刻の名称
     & tunit = 'seconds'      ! 時刻の単位
\end{verbatim}
現在の時刻やループ回数を保持してある変数。
 time\_init  で初期設定され、 time\_progress 
で更新される。

\begin{verbatim}
real(DBKIND)     , save :: CurrentTime = 0.0  ! 現在時刻
integer(INTKIND) , save :: CurrentLoop = 1    ! 現在のループ回数
\end{verbatim}
\subsection{\label{label:9} Procedure Interface}

\subsubsection{\label{label:10} Initialize module and acquire NAMELIST}

モジュールを初期化し、NAMELIST から値を取得する。
NAMELIST から値が取得できないものに関しては上記のデフォルト値が
用いられる。

NAMELIST ファイルは、メインプログラムにて  nmlfile\_mod  の
 nmlfile\_init  で指定されることが想定されているが、
もしもこの初期化ルーチンより以前に指定されていなければ、
 nmlfile\_init  のデフォルトで指定される NAMELIST ファイルを
読む。

\begin{verbatim}
subroutine time_init
\end{verbatim}
\paragraph{\label{label:11} Dependency} \

\begin{verbatim}
use type_mod,    only : REKIND, DBKIND, INTKIND, TOKEN, STRING
use nmlfile_mod, only : nmlfile_init, nmlfile_open, nmlfile_close
use dc_trace,    only : BeginSub, EndSub, DbgMessage
use dc_message,  only : MessageNotify
\end{verbatim}
\paragraph{\label{label:12} NAMELIST} \

InitTime に与えられた数値に DelTime を加えた値が、
CurrentTime に代入される。

\begin{verbatim}
namelist /time_nml/    &
     &
     & InitTime      , &   ! 積分開始時刻
     & DelTime       , &   ! 時間ステップ
     &
     & StepInterval  , &   ! 出力回数
     & OutputStep    , &   ! 出力ステップ間隔
     &
     & tvar          , &   ! 時刻変数名
     & ttype         , &   ! 時刻変数の型
     & tname         , &   ! 時刻の名称
     & tunit               ! 時刻の単位
\end{verbatim}
\subsubsection{\label{label:13} Progress Time and Number of Loop}

CurrentTime を  time\_init  で指定された DelTime 分だけ進め、
CurrentLoop を 1 増やす。
今の所、時間を指定したり巻戻したりできない。

\begin{verbatim}
subroutine time_progress
\end{verbatim}
\paragraph{\label{label:14} Dependency} \

\begin{verbatim}
use type_mod,    only : STRING
use dc_trace,    only : BeginSub, EndSub, DbgMessage
\end{verbatim}
\subsubsection{\label{label:15} Terminate module}

NAMELIST から読み込んだ値を破棄し、各定数をデフォルトの値に戻す。

\begin{verbatim}
subroutine time_end
\end{verbatim}
\paragraph{\label{label:16} Dependency} \

\begin{verbatim}
use type_mod,    only : STRING
use dc_trace,    only : BeginSub, EndSub, DbgMessage
\end{verbatim}

\end{document}
