% 表題   らくらく DCPAM5 --- 初期値・海水面温度分布などを変更するには
%
% 履歴
%\Drireki{2012/02/24 竹広真一}
%
\section[初期値・海水面温度分布の変更]
        {初期値・海水面温度分布などを変更するには}

  この節では, ソースプログラムを改変して計算実行する一例として
  初期値・海水面温度分布などを変更するための手順を記す. 
  具体的な例題として水惑星実験(APE:Aqua Planet Experimets)の
  海水面温度分布を変更してみる. 実際に改造するソースプログラムは
  海水面温度データ作成プログラムソース "src/main/sst\_data.f90" であるが,
  適宜初期値データ作成プログラムソース "src/main/init\_data.f90" に
  置き換えることで初期値データの変更もできるだろう. 

  \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/initsst ディレクトリを作成し, 
    その中で作業を行うことにする. 
    %
    \begin{verbatim}
      % mkdir -p ../dcpam5-exp/initsst
    \end{verbatim}
    %
    作成した実験用ディレクトリに移り, その下に実験専用のソースファイル置き場
    設定ファイル (NAMELIST ファイル) 置き場を作成する. 
    %
    \begin{verbatim}
      % cd ../dcpam5-exp/initsst
      % mkdir -p src/main
      % mkdir conf
    \end{verbatim}
    %
    初期値作成, 海水面温度データ作成のソースプログラムと
    モデル本体のソースプログラムを "src/main" ディレクトリにコピーする. 
    用いる設定ファイル(の元)を "conf" ディレクトリにコピーする. 
    %
    \begin{verbatim}
      % cp ../../dcpam5-YYYYMMDD/src/main/*.f90 src/main
      % cp ../../dcpam5-YYYYMMDD/conf/dcpam_ape_T21L16.conf conf
      % cp ../../dcpam5-YYYYMMDD/conf/init_data_T21L16.conf conf
      % cp ../../dcpam5-YYYYMMDD/conf/sst_data_T21.conf conf
    \end{verbatim}

  \subsection{ソースプログラムの編集}

    コピーしたプログラムソースファイルを編集し, 
    作成したい初期値分布あるいは海水面温度分布をプログラムする. 
    例として, "src/main/sst\_data.f90" を編集して, 
    海水面温度分布を $250 + 50\sin^2\varphi$ に変更してみよう($\varphi$ は緯度).
    まず, 緯度情報を用いるために先頭のモジュール使用宣言部部分に
    "gridset" モジュールの "imax, jmax" を用いるよう追加する
    (各行にある!以降の部分はコメントなので入力を省略しても構わない). 
    %
    \begin{verbatim}
      ! 格子点設定
      ! Grid points settings
      !
      use gridset, only: imax, &  ! 経度格子点数.
                                  ! Number of grid points in longitude
        &                jmax     ! 緯度格子点数.
                                  ! Number of grid points in latitude
    \end{verbatim}
    %
    さらに "axesset" モジュールの "y\_Lat" 変数を用いるよう追加する. 
    %
    \begin{verbatim}
      ! 座標データ
      ! Axes data
      !
      use axesset, only: y_Lat
   \end{verbatim}
    %
    作業変数の宣言部にて DO loop 変数 i, j を宣言しておく. 
    %
    \begin{verbatim}
      integer :: i, j           ! Do loop variable
   \end{verbatim}
    %
    次に, 海水面温度を設定している箇所
    %
    \begin{verbatim}
      ! 地表面データの作成
      ! Generate surface data
      !
      call RestartSurfTempOutput( &
        & xy_SurfTemp  )             ! (in)
    \end{verbatim}
    %
    を次のように変更する. 
    %
    \begin{verbatim}
      ! 地表面データの作成
      ! Generate surface data
      !
      !!!call RestartSurfTempOutput( &
      !!!  & xy_SurfTemp  )             ! (in)
      !
      do j=1,jmax
        do i=0,imax
           xy_SurfTemp(i,j) = 250.0d0 + 50.0d0*sin(y_Lat(j))**2
        end do
      end do
    \end{verbatim}

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

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

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

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

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

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

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

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

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

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

  \subsection{実験の実行}

    実行の仕方はごくらく \Dmodel の水惑星実験の手順と一緒である. 
    まず初期値, 海水面温度データを作成する. 
    %
    \begin{verbatim}
      % bin/dcpam_init_data_surface -N=./conf/sst_data_T21.conf
      % bin/dcpam_init_data -N=./conf/init_data_T21L16.conf
   \end{verbatim}
    %
    そして, 実験を実行するには, 
    %
    \begin{verbatim}
      % bin/dcpam_main -N=./conf/dcpam_ape_T21L16.conf \
        >& dcpam_ape_T21L16.log &
   \end{verbatim}
    %
    といった具合である. 

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

  \subsection{最後に}

    実験のために修正したファイルらは別の場所に
    コピー保存しておくことを勧める. 
    %
    \begin{verbatim}
      % cp src/main/sst_data.f90 [somewhere]
      % cp ...
   \end{verbatim}


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