% 表題   AGCM5 guide インストール
%
% 履歴 
%表題
%履歴  保坂征宏

\documentstyle[a4j,ascmac,twoside,dennou]{jreport}
\newcommand{\Drireki}[1]{
\renewcommand{\thefootnote}{\fnsymbol{footnote}}
\footnotetext[0]{#1}
\renewcommand{\thefootnote}{\arabic{footnote}}
}



\Dtitle{}
\Dauthor{保坂征宏}
\Ddate{}
\Dpath{}







\Drireki{92/06/28  沼口敦・竹広真一}
\Drireki{94/01/13  保坂征宏}
%
\begin{document}

\maketitle

\section{AGCM5 dennou version インストールの手引}

\subsection{ありか}

現在の AGCM5 dennou version は,
\begin{verbatim}
    dennou:/usr/local/src/ftp/saloon/dennou_develop/model/agcm/agcm5
\end{verbatim}
以下に格納されている.

\subsection{標準使用ルール}

agcm5 を使用するにあたり, 
\begin{itemize}
  \item 他の使用者の使用法との対応を付けながら, 
        目的の一つとして共有財産を増やすことを念頭において使用する. 
  \item あくまで個人的に使用する. このような使用法をするのは例えば,  
   \begin{itemize}
     \item 元のモデルを大きく変形するために対応付けが困難な場合. \\
           この場合は自力でモデルを構成し直す根性が必要である. 
     \item 作業において失敗する可能性が高く, 既存の財産を破壊する可能
           性がある場合. 
   \end{itemize}
        である. 
\end{itemize}
のいずれかの態度に決める必要がある. 
この節では前者の態度をとる場合の, 実験の仕方での基本的なルールを書くことにする. 
\vspace{1em}

\begin{itemize}
\item モデルの変更.\\
      GCM を用いて実験するに当たり, パラメタのちょっとした変更, ソース
      の変更をすることがあろう. 
  \begin{itemize}
  \item パラメタの変更. \\
        dennou 版 GCM ではパラメタの変更は 
        \verb!NAMELIST! を使って行なうのが標準的である. 
  \item ソースの変更. \\
        ソースを変更する場合は変更したファイルを \verb!src/usr/! 
        下におき, \verb!Mkinclude! で指定するのが標準的である. 例えば, 
        ユーザー pochaka が \verb!src/util/uspst.F! を自作の 
        \verb!puspst.F! に差し替えたい場合は, \verb!puspst.F! を 
        \verb!src/usr/pochaka/util/puspst.F! におき, \verb!Mkinclude! で
        しかるべく差し替えるように設定することになる\footnotemark. \\
         \footnotetext{
              詳細になるが, 
              ライブラリは標準ファイルをコンパイルしたものから構成され, 
              自作の実行ファイルは実行ファイルを作成する際にはじめてリ
              ンクされる.}
	\verb!include, prep! を除く他のディレクトリのファイルを直接変
  \item 標準的に良く用いられるファイルへの差し替え.\\
        良く使われる差し替え用ファイルは \verb!src/nonstd/! ディ
        レクトリに格納されている. これらを使いたい場合もやはり 
        \verb!Mkinclude! で指定して使用する.
  \end{itemize}
\item 資源の置き場. \\
  dcl, gtool3 といった資源の他, agcm のライブラリ, 実行ファイル,
  sysmake の置き場はサイト毎に決めておく. 
\end{itemize}

\subsection{Sun でのインストール・使用方法}

\begin{enumerate}
\item 準備・確認
    \begin{enumerate}
    \item GCM を動かすのに必要である dcl, gtool3 がインストールされて
          いることを確認する. また, dcl ライブラリ, gtool3 ライブラリ,
          sysmake ライブラリのありかを確認する.

    \item GCMの個人用ファイルを置くディレクトリを決める.

    \item AGCMDIR 以下に資源をコピーする. 

	  ただし, 全部コピーする必要はない.
	  最低限の物のコピーは, 
	  \begin{verbatim}
	  sample % sh MiniInstall.sh 
	  \end{verbatim}
	  とすることで行われる.
    \end{enumerate}	

\item コンパイル, リンク

    \begin{enumerate}
    \item \verb!$AGCMDIR/src/Mkincluide! を編集する.
       \begin{enumerate} 

       \item 分解能設定は, 適当なものを選ぶ.
         \begin{verbatim}
	    RESOLUTION 		= t42l16
	    ###RESOLUTION 	= t21l12
	    ###RESOLUTION 	= v00l16
	 \end{verbatim}

             無い場合は, 追加すること.
	     これらは \verb!$AGCMDIR/src/include! 以下のサブディレク
             トリ名に対応する. 
             希望の分解能がサブディレクトリとして存在しない
	     場合は, それを作成しなければならない.
	     また, 鉛直レベルが定義されていない場合には,
	     \verb!asets.F! に当たるものを 
             \verb!$AGCMDIR/src/usr/?????/admin/! ディレクトリに
	     作成すること. 

       \item 実行ファイル名(\verb!MODELNAME!)は適当に設定する. 
	     実行ファイルは, 
             \verb!$AGCMDIR/bin/agcm5.$RESOLUTION$MODELNAME! となる.
             例えば, 
             \begin{verbatim}	 
	     MODELNAME      	= .test
	     \end{verbatim}
             とすれば, 実行ファイル名は 
             \verb!$AGCMDIR/bin/agcmt5.t42l16.test! 
             になる. 

       \item 特別ルーチン \verb!usr/????/! の指定.
 
             例えば
             \begin{verbatim}
	     USR		= usr/pochaka/util/puspst.o
	     \end{verbatim}
	     のようにすると, \verb!src/user/pochaka/util/puspst.F! 
	     をコンパイルしたものがリンクされる. 
             指定は幾つでもつなげて書ける.
             継続行は,
             \begin{verbatim}
	     SPECIAL		= usr/pochaka/physics/p2rad1.o \
			          usr/pochaka/physics/p2rad2.o
	     \end{verbatim}
	     のようにする. 
             ただし, \verb!\! の後に空白があってはならないので注意せよ.
	  
       \item 非標準ルーチン \verb!nonstd/! の指定.

	     非標準ルーチン(\verb!src/nonstd/! の中)を用いたい場合, ここで指定する.
	     指定方法は \verb!src/usr/! と同様である. 
	     指定可能なルーチンは, \verb!src/nonstd/STATUS.AGCM5.NONSTD! を読むこと

       \item システム設定では, 以下の様に Sun 以外をコメントにする.
         \begin{verbatim}  
	    SYSTEM		= Sun
            ###SYSTEM		= HITAC
	    ###SYSTEM		= SX3
	 \end{verbatim}

       \item コンパイルオプションの指定

         \begin{verbatim}  
	     STDFFLAGS	        = $(SYSFFLAGS) -O  # FORTRAN コンパイル時
	     STDCFLAGS	        = $(SYSCFLAGS) -O  # C コンパイル時(無関係)
	     STDCPPFLAGS	= $(SYSCPPFLAGS)   # CPP フィルター時
	     STDLDFLAGS	        = $(SYSLDFLAGS)    # リンク時
	     AUTODBL		= $(SYSAUTODBL)    # FORTRAN 自動倍精度化
	     AUTODBLDEF    	= -DAUTO_DBL       # FORTRAN 自動倍精度の通知
         \end{verbatim}

	     \verb!$(SYSFFLAGS)! 等は, \verb!$(SYSMAKEDIR)/Makedef.$(SYSTEM)!
	     で定義されている. 
	     通常, このままでいいが, 
	     デバッグオプション -g, Implicit 未定義オプション -u 等を
	     付けたい場合は, そのようにする.

       \item 諸々のライブラリ, 実行ファイルなどのおき場の設定. \\
             ディレクトリのパスはサイト毎に決めておくこと. 
             \vspace{1em}

	     なお, LIBDIR と LIBDEST との違いは make 時に一時的にライ
             ブラリを置く作業用ディレクトリと make install の後に置く
             ディレクトリとの違いである. 
       \end{enumerate}

  \item ライブラリの作成. 

        標準ファイルをコンパイルしてライブラリを作成する. 

        \begin{verbatim}
        sample% make lib
        \end{verbatim}

        ただし, 
        同じ分解能を持つモデル同士の場合ライブラリは共通なので,
        すでにライブラリが存在する場合には改めて作成する必要は
        ない. 

  \item 実行ファイルの作成. 
        
        メインプログラムと \verb!usr,nonstd! のルーチンをコンパイルし, 
	\verb!$LIBDIR! に存在するライブラリとリンクされる.

        \begin{verbatim}
        sample% make gcm
        \end{verbatim}

	該当する分解能のライブラリがない場合にはエラーとなるので
        前項のライブラリの作成を行なうこと. 
  \end{enumerate}

\item 初期値, 境界値データの作成

  \begin{enumerate}
  
  \item 初期値の作成

	\verb!src/prep/xmkinit.F! の \verb!SUBROUTINE INISET! 等を適当
        に編集する. 
        オリジナルのソースを元に作成すると, 250K 等温静止,
        地表気圧 1000mb なる条件の初期値が作成されるようになっている.

        \begin{verbatim}
	sample% make init 
        \end{verbatim}
	でソースファイルがコンパイルされ, 実行ファイルが実行される. 
        次のように対話式に聞かれるので順次入力する.

        \begin{verbatim}
	DATA NAME ?                : 初期値データの名称(16文字以下)
	FILENAME FOR INITIAL DATA? : 初期値ファイル名
	ENTER NAMELIST NMDATE?     : データの時刻
	CONTROL PARAMETER NMSIGM   : σレベルを入力
        \end{verbatim}

        データの時刻, σレベルについては \verb!^D! でデフォルト値になる. 

  \item 境界値データの作成

	\verb!src/prep/xmksst.F! の \verb!SUBROUTINE CALSST! を適宜編集する.
        オリジナルのソースを元に作成すると, 
	理想的な東西一様分布を作成する. 
	
        \begin{verbatim}
	sample% make sst
        \end{verbatim}

	でソースファイルがコンパイルされ, 実行ファイルが実行される. 
        次のように対話式に聞かれるので順次入力する.

        \begin{verbatim}
	DATASET NAME ?             : データの名称(16文字以下)を適当に指
	FILENAME FOR SST OUTPUT?   : ファイル名を入力.
	ENTER NAMELIST NMSST	   : SSTのパラメータを NAMELIST 形式で指定
	ENTER NAMELIST NMDATE?     : データの時刻をNAMELIST形式で入力
	CONTROL PARAMETER NMSIGM   : σレベルを入力. 
        \end{verbatim}
	
        データの時刻, σレベルは特に気にしない場合は \verb!^D! でデフォルト値
        のものが作成される. 
        \vspace{1em}

        SST 以外のデータについても全く同じように, \verb!mksst.F! を編集するこ
        とによって作成できる. 

  \item GTOOL3 用軸ファイルの作成

        \begin{verbatim}
	sample% make axis 
        \enmd{verbatim}

	でソースファイルがコンパイルされ, 実行ファイルが実行される. 
        次のように対話式に聞かれるので順次入力する.

        \begin{verbatim}
	CONTROL PARAMETER NMSIGM   : σレベルを入力. 
        \end{verbatim}
	
         \verb!^D! でデフォルト値のものが作成される. 
        \vspace{1em}

	\verb!GTAXLOC.* GTAXWGT.*! なるファイルが作成される.
 
        以上作成されたものを, しかるべきディレクトリに置く.

  \end{enumerate}

\item 実行.

  \begin{enumerate}
  \item 入力データの作成

	実験パラメターを設定する NAMELIST データファイルを作成する.
	\verb!sample/sh.Sun/gcm.in! を参考にする.

  \item gcm の起動

        例えば t42l16 の分解能を持つ test という名の実行ファイルであれ
        ば, 

        \begin{verbatim}
	sample% gcm5.t42l16.test < [NAMELIST file] >& [log file] &
        \end{verbatim}

	で動く. 

  \end{enumerate}

\end{enumerate}



\end{document}