% 表題   らくらく DCPAM5 --- 出力する変数を増やすには
%
% 履歴
%\Drireki{2012/02/24 竹広真一}
%
\section[モジュールの変更・追加]
        {モジュールを変更・追加するには}

  この節では, モジュールを変更・追加するための一般的な手順を記す. 
  モジュールを変更する場合に関しては先の節「出力する変数を増やすには」も
  参考にされたい. 
  
  \subsection{準備}

    インストールガイド
    (\url{http://www.gfd-dennou.org/library/dcpam/dcpam5/dcpam5_latest/INSTALL.htm})
    にしたがって, 
    \Dmodel をコンパイルしてライブラリ (lib/libdcpam5.a) と
    モジュールファイル (include/*.mod 等)を作成しておく. 

  \subsection{作業用ディレクトリ作成}

    まず \Dmodel ソースのトップディレクトリ(以下の例では dcpam5-YYYYMMDDとする)に移動しておく. 
    次にソース変更作業と実験用ディレクトリを \Dmodel ソースツリー外部に作成する. 
    ここでは \Dmodel ソースツリーの隣に dcpam5-exp/addmodule ディレクトリを作成し, 
    その中で作業を行うことにする. 
    %
    \begin{verbatim}
      % mkdir -p ../dcpam5-exp/addmodule
    \end{verbatim}
    %
    作成した実験用ディレクトリに移り, 
    その下に実験専用のソースファイル置き場を作成する. 
    実行プログラムソースファイル用のディレクトリ "src/main" に加えて, 
    新たなモジュール, あるいは変更するモジュールのソースファイル
    置き場として適当な名前のディレクトリを "src" 以下に作成する
    (以下の例では foo とする). 
    さらに設定ファイル (NAMELIST ファイル) 置き場を作成する. 
    %
    \begin{verbatim}
      % cd ../dcpam5-exp/addoutput
      % mkdir -p src/main
      % mkdir src/foo
      % mkdir conf
   \end{verbatim}
    %
    実行ファイルプログラムを "src/main" ディレクトリにコピーする. 
    モジュールを変更したい場合には, そのソースプログラムをコピーする
    (以下の例では bar.f90 としている) .
    また, 用いる設定ファイル(の元)を "conf" ディレクトリにコピーする
    (以下の例では xxx.conf としている. 
     設定ファイル(の元)は一般に実行用と初期値作成用ならびに
     地表面温度作成用の 3 種類が必要となる).
    %
    \begin{verbatim}
      % cp ../../dcpam5-YYYYMMDD/src/main/*_main.f90 src/main
      % cp ../../dcpam5-YYYYMMDD/src/foo/bar.f90 src/foo
      % cp ../../dcpam5-YYYYMMDD/exp_setup_files/xxx.conf conf
   \end{verbatim}

  \subsection{モジュールプログラムの用意とプログラムの変更}

    モジュールを変更する場合には, コピーしたモジュールソースプログラム
    ("src/foo/bar.f90")を編集し変更する. 

    新しいモジュールを用意する場合には, 
    そのソースファイルを "src/foo" ディレクトリにおく. 
    モジュール名とファイル名の拡張子を取り除いた名前は
    おなじにしておかねばならないことに注意されたい. 
    そして新しいモジュールをプログラムで使うべく, 
    他のプログラムソースファイルも編集する必要があるだろう. 
    そのようなファイルも "src" 以下に適当なディレクトリを作成し
    格納しておく(もちろん foo ディレクトリに並べておいても良い). 

  \subsection{設定ファイルの編集}

    新たに追加したモジュールにおいて NAMELIST 変数を追加した場合には
    実験用設定ファイルを適宜変更する. 

  \subsection{実験実行用のディレクトリのセットアップ}

    さて, ファイルの準備が整ったら, 実験実行用のディレクトリを
    セットアップする. そのためには \Dmodel のソースツリートップに戻って
    "make expdir" を実行する. 
    すると, 作業ディレクトリトップの名前と非標準ソースディレクトリ名
    並びに実験ディレクトリの名前をきかれるので, それらを入力する. 
    %
    \begin{verbatim}
      % cd ../../dcpam5-YYYYMMDD
      % make expdir
      sh ./setup_expdir_nonstd.sh

      ****** Setup a directory for a experiment ******

      Enter top directory name []: ../dcpam5-exp
      Enter experimet directory name []: addmodule

      *** "../dcpam5-exp/addoutput" is already exist ***

        Directory in which non-standard files are prepared
          [../dcpam5-exp/addoutput/src]:   Creating "../dcpam5-exp/addoutput/Makefile" ...   done.
        Creating "../dcpam5-exp/addoutput/src/Makefile" ...   done.
        Creating "../dcpam5-exp/addoutput/src/main/Makefile" ... ls: ../dcpam5-exp/addoutput/src/main/*.F90: そのようなファイルやディレクトリはありません
        done.
        Creating "../dcpam5-exp/addoutput/src/held_suarez_1994/Makefile" ... ls: ../dcpam5-exp/addoutput/src/held_suarez_1994/*.F90: そのようなファイルやディレクトリはありません
        done.
        Creating "../dcpam5-exp/addoutput/Config.mk" ...   done.
        Creating "../dcpam5-exp/addoutput/rules.make" ...   done.

      *** Setup of "../dcpam5-exp/addoutput" is complete ***

   \end{verbatim}
    %
    すると, ../dcpam5-exp/addmodule/ に Config.mk と rules.make 
    ならびに src 以下の各サブディレクトリの Makefile が作成される. 

  \subsection{実行ファイルの作成}

    実行ファイルを作成しよう. そのためには
    実験ディレクトリ "../dcpam5-exp/addmodule" に移って
    "make" を行う
    \footnote{
      環境変数 FFLAGS を 
      \Dmodel ライブラリを作成したときと同じ値にしておく
      必要があるかもしれない. 
    }.
    %
    \begin{verbatim}
      % cd ../dcpam5-exp/addoutput
      % make
   \end{verbatim}
    %
    コンパイルエラーが出てしまったら, 先程編集したファイルを修正し, 
    再び "make" を行う. エラーがなくなるまでこの作業を繰りかえす. 

    めでたくエラーがなくなり, 実行ファイルができ上がったら
    %
    \begin{verbatim}
      % make install
   \end{verbatim}
    %
    を実行する. すると実行ファイルが "bin" ディレクトリに
    インストールされる. 

  \subsection{実験の実行}

    実行の仕方はごくらく \Dmodel での各実験の手順とおなじである. 
    まず初期値データを作成する. 
    %
    \begin{verbatim}
      % bin/dcpam_init_data -N=./conf/init_data...conf
   \end{verbatim}
    %
    必要ならば海水面温度分布データを作成する. 
    %
    \begin{verbatim}
      % bin/dcpam_init_data_surface -N=./conf/sst_data...conf
   \end{verbatim}
    %
    そして, 実験を実行するには, 
    %
    \begin{verbatim}
      % bin/dcpam_main -N=./conf/dcpam_...conf
        >& dcpam_....log &
   \end{verbatim}
    %
    といった具合である. 

    簡単な解析と可視化については, 「ごくらく \Dmodel」 の「簡単な解析・可視化」を
    参照のこと. 

  \subsection{最後に}

    実験のために修正したファイルらは別の場所に
    コピー保存しておくことを勧める. 


%%% Local Variables: 
%%% mode: japanese-latex
%%% TeX-master: "../rakuraku"
%%% End: 
