% 表題   らくらく DCPAM5 : 設定ファイルを用いた実験設定の変更 : リスタート計算を行うには
%
% 履歴 
%\Drireki{2013/11/06 高橋芳幸}
%\Drireki{2011/09/30 高橋芳幸}
%

\section{リスタート計算を行うには}

この節では, \Dmodel でのリスタート計算の方法について述べる. 
ここで言う, リスタート, とは, ある期間積分した後で, その最後の状態から
計算を再開することを指す
\footnote{
  実際には, リスタートファイルが作成されていれば, 前回の積分の途中からの
  再開も可能である. 
}.

\subsection{\Dmodel でのリスタート計算の概要}

\Dmodel のリスタート計算は, 以下の手順により行う. 
%
\begin{itemize}
\item リスタートファイルの指定, 
  \begin{itemize}
  \item 大気中の予報変数用のリスタートファイル,
  \item 惑星表面・土壌中の変数用のリスタートファイル,
  \item 予備変数用のファイル, 
  \end{itemize}
\item 予備変数用のファイルの指定,
\item 計算再開時刻の指定.
\item 積分時間 / 積分終了時刻の指定.
\end{itemize}

つまり, 再計算のためには, それ以前の計算において
%
\begin{itemize}
\item 大気中の予報変数用のリスタートファイル,
\item 惑星表面・土壌中の変数用のリスタートファイル,
\item 予備変数用のファイル,
\end{itemize}
%
を出力しておく必要がある. 

また, 現在の \Dmodel においては, 計算条件によっては, 正確なリスタート計算の
ためには制限がある. 
具体的には, 地球計算, 火星計算において, リスタートファイルの出力時刻が
放射計算の時刻と一致している必要がある
\footnote{
  \Dmodel においては, 計算時間の節約のために, 放射計算はすべての時間ステップで
  行っているわけではなく, ある一定の時間間隔でのみ行う. 
  この放射計算のタイミングと異なる時間ステップにおいては, 前回の放射計算の結果を
  使用して時間積分する. したがって, 放射計算のタイミングと異なるタイミングで
  計算が終了してしまうと, リスタート計算開始時に前回の放射計算結果を持っていないため, 
  (正確な) リスタート計算ができない. 
  もちろん, この放射計算に関わる予備変数を保存しておけば, (正確な) リスタート計算が
  可能である. 
  地球流体電脳倶楽部大気大循環モデル AGCM5 のデフォルト放射モデルを用いた
  計算においては, 放射計算に関わる予備変数もファイルに書き出しており, 
  常に (正確な) リスタート計算が可能である (ことになっている).
}.
正確なリスタート計算を行う場合には, リスタートファイルの出力タイミングに注意すること. 


\subsection{リスタートファイルの出力のための設定}

リスタート計算を行う場合に必要となるリスタートファイルは, 下のように指定することで
出力される
\footnote{
  出力指定していない場合にも, 計算の終了時にリスタートファイルが作られる. 
  この時のファイル名は, 大気中の変数用ファイルは rst.nc, 惑星表面・土壌中の
  変数用ファイルは rst\_sst.nc, AGCM5 のデフォルト放射モデルで用いる予備変数
  用のファイルは rst\_rad.nc となる. 
  このため, 明示的に指定しなくてもリスタートすることは可能である.
}.

大気中の変数用のファイル, 惑星表面・土壌中の変数用のファイルは, 
それぞれ, \Dmodel の計算において以下の namelist ブロックで
好きな名前を指定できる. 
%
\begin{itemize}
\item 大気中の予報変数用のリスタートファイル,
  \begin{verbatim}
    &restart_file_io_nml
      ...
      OutputFile = 'ファイル名'
      ...
    /
  \end{verbatim}
\item 惑星表面・土壌中の変数用のリスタートファイル,
  \begin{verbatim}
    &restart_surftemp_io_nml
      ...
      OutputFile = 'ファイル名'
      ...
    /
  \end{verbatim}
\end{itemize}


\iffalse
同様に, 地球流体電脳倶楽部大気大循環モデル AGCM5 で用いられていた
デフォルト放射モデルで用いる予備変数用のファイルは, 
\Dmodel の計算において以下の namelist ブロックで指定されることで
出力される. 
%
\begin{verbatim}
  &rad_DennouAGCM_nml
    ...
    RstOutputtFile = 'ファイル名'
    ...
  /
\end{verbatim}
\fi


\subsection{リスタート計算を行うための設定}

リスタート計算を行う場合には, 設定ファイル (namelist ファイル) に下のように指定する. 
%
\subsubsection{計算再開時刻の指定}

\begin{verbatim}
    &timeset_nml
      ...
      RestartTimeValue = XXX
      RestartTimeUnit  = YYY
      ...
    /
\end{verbatim}

なお, このとき, InitialYear, InitialMonth, 等 Initial* は, リスタート
時刻ではなく, 初回の計算の時刻を指定するため, ここでは設定を変更する必要はない.

指定する RestartTimeValue, RestartTimeUnit の
値は, 実際には restart\_file\_io\_nml の InputFile に指定されるファイルの中の
変数 time のある値とするのが良い. 
例えば, リスタートファイル名が input.nc であり, 
%
\begin{verbatim}
  % ncdump -v time input.nc
    netcdf input {
        ...
        double time(time) ;
                time:long_name = "time" ;
                time:units = "sec" ;
        ...
      time = 0, 86400, 172800 ;
    }
\end{verbatim}
%
の場合に, 前回の計算の終了時からの再計算を行う場合には, 下のように指定する. 
%
\begin{verbatim}
    &timeset_nml
      ...
      RestartTimeValue = 172800.0
      RestartTimeUnit  = 'sec'
      ...
    /
    &restart_file_io_nml
      ...
      InputFile = 'input.nc'
      ...
    /
\end{verbatim}
%
ここで, restart\_file\_io\_nml ブロックについては下を参照の事.

なお, RestartTimeValue に与える数値は, 倍精度で書いてもよい.


\subsubsection{大気中の予報変数用のリスタートファイルの指定}

大気中の予報変数用のリスタートファイル名は下のように指定する. 
%
\begin{verbatim}
    &restart_file_io_nml
      ...
      InputFile = 'ファイル名'
      ...
    /
\end{verbatim}

このとき, 計算の結果として得られる次のリスタートファイルのデフォルトの名前が
rst.nc であることに注意する必要がある. 
その出力されるリスタートファイルの名前を OutputFile で指定せずに (デフォルト
のファイル名のままで), 大気中の予報変数用のリスタートファイル名 
(InputFile) を rst.nc とすると, 上書きされる. 


\subsubsection{惑星表面・土壌中の変数用のリスタートファイルの指定}

惑星表面・土壌中の変数用のリスタートファイル名は下のように指定する.
%
\begin{verbatim}
    &restart_surftemp_io_nml
      ...
      InputFile = 'ファイル名'
      ...
    /
\end{verbatim}

このとき, 計算の結果として得られる次のリスタートファイルのデフォルトの名前が
rst\_sst.nc であることに注意する必要がある. 
その出力されるリスタートファイルの名前を OutputFile で指定せずに (デフォルト
のファイル名のままで), 惑星表面・土壌中の変数用のリスタートファイル名 
(InputFile) を, 
rst\_sst.nc とすると, 上書きされる. 


\iffalse
また, 地球流体電脳倶楽部大気大循環モデル AGCM5 で用いられていた
デフォルト放射モデルで用いる予備変数用のファイルは, 
\Dmodel の計算において以下の namelist ブロックで指定されることで
出力される. 
%
\begin{verbatim}
  &rad_DennouAGCM_nml
    ...
    RstInputtFile = 'ファイル名'
    ...
  /
\end{verbatim}
\fi



\subsubsection{積分時間 / 積分終了時刻の指定}

\Dmodel では, 積分期間を二つの方法で指定できる. 一つは積分時間であり, 
もう一つは積分終了時刻である. 

積分時間で指定する場合, 下のようにする.
%
\begin{verbatim}
    &timeset_nml
      ...
      IntegPeriodValue  = 12.0,
      IntegPeriodUnit   = 'day',
      ...
    /
\end{verbatim}
% 
この指定は, リスタート後に 12 日間積分することを表す.

積分終了時刻で指定する場合, 下のようにする.
%
\begin{verbatim}
    &timeset_nml
      ...
      EndYear           =    11,
      EndMonth          =     1,
      EndDay            =     1,
      EndHour           =     0,
      EndMin            =     0,
      EndSec            =     0.0d0,
      ...
    /
\end{verbatim}
% 
この指定は, 11 年 1 月 1 日 0 時 0 分 0 秒まで積分することを表す.
