% 表題   AGCM5 guide sun インストール
%
% 履歴 
\Drireki{92/06/28  沼口敦・竹広真一}
\Drireki{94/01/13  保坂征宏}
%

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

\begin{enumerate}
\item 準備・確認
    \begin{enumerate}
    \item GCM を動かすのに必要である dcl, gtool3, dcl-gtool のライブラ
          リが存在すること, およびそのありかを確認する\footnotemark. 
               \footnotetext{
                  ない場合はインストールすること. }
          また, sysmake ライブラリのありかを確認する. 

    \item \verb!sysmake/Makedef.Sun! を編集する.

          \verb!SYSXLIBS! の定義として
          X11 ライブラリのありかを指定する.

    \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 
        \end{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% agcm5.t42l16.test < [NAMELIST file] >& [log file] &
        \end{verbatim}

        で動く. 

  \end{enumerate}

\end{enumerate}

