% 表題 地球流体電脳倶楽部 ごくらく AGCM5   インストール
%
% 履歴
\Drireki{96/12/12  堀之内 武}
\Drireki{97/02/07  余田 成男}
%

\Dchapterhead

インストールする順番は,
\begin{quote}
   1. sysmake, \ \  2. gtool, \ \  3. agcm5
\end{quote}
が良い. それぞれ, テキストファイル \verb!sysmake/INSTALL!,
\verb!gt3-dcl5/INSTALL!, および, 「AGCM5 利用者の手引」
(\verb!agcm5/doc/guide/guide.tex!)を参照のこと.



\section{sysmake のインストール}

基本的には \verb!sysmake/INSTALL! を参考にして, \verb!Makedef.XXX! ファ
イルを書き換えるだけである. ここで, \verb!XXX! は \verb!Sun!,
\verb!HITAC!, \verb!SX3! のような機種名などである.


\subsection{Makedef ファイルの編集}

\verb!sysmake/Makedef.Sun! を編集する. 特に注意すべきはXライブラリのイ
ンストール場所である. サイトの状況に合わせて,  
\begin{verbatim}
SYSXLIBDIR = /usr/X11R5/lib
\end{verbatim}
とする. また, 
\begin{verbatim}
INDEX           = ctags -wo
\end{verbatim}
とする. これは, うち(stupid@kugi)では \verb!INDEX = etags -wx! ではう
まく行かないからである. SunOS 4.1.3になる前はこれでうまく行ってたよう
な気がするのだけど(堀之内 談).

%  ※ ultra 用に、Makedef.Solaris をそのうち用意する予定
%  ※ f90 用に、Makedef.Sun90 Makedef.Solaris90 をそのうち用意する予定
%  ※ KDK用 Makedef.KDK も、そのうち ftp 領域に入る予定(今のところ個人蔵)


\subsection{インストール}

インストールはファイルをコピーするだけである. \verb!/usr/local/lib! の
下の然るべき位置にインストールしたい場合は \verb!cp! する. 個人で使う
場合は何もしなくて良い.



\section{gt3-dcl5 のインストール}

\verb!gt3-dcl5/INSTALL! を参考にして, \verb!Mkinclude! の編集, コンパ
イル, インストール, の順に作業をする. そのあとで, タグファイルの作成と
お掃除をやったほうがよい.

\subsection{Mkinclude の編集}
\label{ss:gt3Mkinc}

前半のサイト依存部分を状況にあわせて編集する. システムの選択, コンパイ
ルオプションの指定, gtool3ライブラリおよびコマンドのインストール先の指
定, および, dcl-5.0, sysmakeのインストールされているディレクトリの指定
などを行なう.
\vspace{1em}

うち(stupid@kugi)での変更部分を列挙する.
\begin{verbatim}
SYSTEM          = Sun
GTOOLDIR	= $(HOME)/dennou/gt3-dcl5
DESTDIR		= $(GTOOLDIR)
BINDEST		= $(DESTDIR)/bin
DCLLIBDIR	= /usr/local/lib/dcl-5.0
SYSMAKEDIR	= $(HOME)/dennou/sysmake
\end{verbatim}

\verb!SYSTEM! は \verb!Sun! がデフォルトである. \verb!GTOOLDIR! と 
\verb!SYSMAKEDIR! は, 各自のディレクトリの事情に合わせること. 今の場合, 
親ディレクトリ \verb!$(HOME)/dennou! の下に \verb!gt3-dcl5!,
\verb!sysmake! を置いている. \verb!BINDEST! はデフォルトのままだが, 一
般に, この \verb!bin! ディレクトリは幾つものFORTRAN実行コマンドにより 
10$\sim$20MBぐらいまで膨れるので, ホームディレクトリではなく, データ用
(作業用)ディスクにこのディレクトリを切っておくことを強く奨め
る. \verb!DCLLIBDIR! は, 環境変数 \verb!DCLDIR! が設定されていれば, オ
リジナルのままでよい.
\vspace{1em}

ついでに, \verb!$(BINDEST)! にパスを通しておくとよい.


\subsection{コンパイル}

\verb!make! でgtoolライブラリとそれを用いてFORTRANコンパイルのためのシェ
ルスクリプト \verb!gt3frt! が作成される. 
\begin{verbatim}
% make clean.all
% make
\end{verbatim}
ここで, まず \verb!make clean.all! とお掃除したのは, 
\verb!ftp! した \verb!tar! ファイルにはコンパイル済のものが含まれてい
ることがあり, 最初にそれらを消しておいたほうがよいからである. コンパイ
ルが正しくできたかどうか, 次の二点を確認しておくこと：
\begin{enumerate}
   \item \verb!$(LIBRARY)!(ふつうは \verb!gt3-dcl5/lib/libgtool3.a!)
         が出来ている. 
   \item シェルスクリプト \verb!$(BINDIR)/gt3frt! の中身が, サイトに適
         合した正しいものになっている.
\end{enumerate}


\subsection{インストール}

\verb!make install! でライブラリとコマンド群がインストールされる. 
\begin{verbatim}
% make install
\end{verbatim}
このとき, \verb!$(LIBDIR)! と \verb!$(LIBDEST)! が異なる場合には, ライ
ブラリが後者にコピーされる. また, コマンド群は \verb!src/sample/*/! に
あるが, これがコンパイルされて \verb!$(BINDEST)! にコピーされる. この
結果, \verb!$(BINDEST)! は12.2MBほどの大きさになる.


\subsection{さらに}

インストールは終わったが, ここで, タグテーブルファイル作成とお掃除をし
ておくとよい.
\vspace{1em}

emacs(mule) 等で複数のファイルにまたがるソースの検索を支援するためのタ
グテーブルファイル \verb!TAGS! を用意しておくと便利である.
\begin{description}
\item[タグテーブル] タグテーブルとは, いくつかのファイルにまたがったプ
     ログラムがどのようにファイルに分れているかを記述したものです. そ
     こには, おのおののファイルとそのファイルにある関数名とその位置の
     リストがあります. 関連したファイルをまとめると, 1つのコマンドです
     べてのファイルを検索したり置き換えたりすることが可能になります.
     \ $\cdots$ \ タグテーブルはタグテーブルファイルに記憶されます. タ 
     グテーブルファイルは \verb!TAGS! といわれています. (共立出版「GNU
     Emacs マニュアル」, 1988; p.123)
\end{description}

通常は, すでに \verb!TAGS! が出来ているので, \verb!make! しなくてよいが,
\begin{verbatim}
% make tags
\end{verbatim}
とすれば, \verb!TAGS! を作ってくれる.
\vspace{1em}

コンパイル作業により, ファイル使用量がかなり膨れ上がってるはずなので, 
ここでお掃除をやったほうがよい.
\begin{verbatim}
% make clean
\end{verbatim}

これにより余分な中間ファイル(オブジェクトファイル や 
\verb!src/saple/*/! に残された実行型ファイルなど)が消される.



\section{agcm5 のインストール}

ここでは個人ですべての資源を持つことを想定して作業をすすめる. 
\verb!Mkinclude! の編集, ライブラリの作成, 実行ファイルの作成, の順に
行なう. AGCM5 利用者の手引(\verb!agcm5/doc/guide/guide.tex!)の第1章を
参照のこと.

\subsection{Mkinclude の編集}
\label{ss:agcm5Mkinc}

\verb!agcm5/src! にある \verb!Mkinclude! ファイルの内容は, 実験設定部
分とサイト依存部分とに分れている. まず, サイト依存部分について述べ, つ
ぎに, 傾圧不安定初期値問題を実験例として, 実験設定部分について述べる.
\vspace{1em}

うち(stupid@kugi)での「サイト依存部分」の変更部分を中心に列挙する. シ
ステム(\verb!sysmake!)の指定やパコンパイルオプションの指定はデフォルト
のままで, パスの設定を状況にあわせて変更する.
\begin{verbatim}
DENNOUDIR       = $(HOME)/dennou
AGCMDIR         = $(DENNOUDIR)/agcm5
DESTDIR         = $(AGCMDIR)
LIBDEST         = $(DESTDIR)/lib
BINDEST         = $(DESTDIR)/bin
DCLLIBDIR	= /usr/local/lib/dcl-5.0
SYSMAKEDIR	= $(DENNOUDIR)/sysmake
GTOOLLIBDIR	= $(DENNOUDIR)/gt3-dcl5/lib
GTOOLINCDIR	= $(DENNOUDIR)/gt3-dcl5/include
\end{verbatim}
\vspace{1em}

つぎに, T10L5傾圧不安定初期値問題用の実験設定を行なう. 「物理過程」はほ
とんど使わないことにする. 選択または変更したところを列挙する.
\begin{verbatim}
############## 分解能の指定 ########################
RESOLUTION 	= t10l5

############## 実行ファイル名指定 agcm5.$(RESOLUTUON)$(MODELNAME)
MODELNAME       = dyn   

############## nonstd/ (非標準ルーチン) の指定 ###########
CUMLUS	= nonstd/p2cum0.o       #       積雲パラメタリゼーションなし
DRYADJ	=  nonstd/p2dad0.o      #       乾燥対流調節なし
SHLCNV	=  nonstd/p2shl0.o      #       浅い積雲なし
RADIAT  =  nonstd/p2rad0.o      #       放射なし
VDFUS   =  nonstd/p2vdf0.o \
           nonstd/p2sfc0.o      #       拡散係数一定
GRVD    =  nonstd/p2gra0.o      #       重力波抵抗なし
\end{verbatim}

\verb!MODELNAME! は適当な名前でよいが, この実験は「力学」部分ばかりな
ので \verb!MODELNAME! を \verb!dyn! とした. これで, 実行ファイル名は 
\verb!agcm5.t10l5dyn! となる. 非標準ルーチンの指定のうち, 鉛直拡散は拡
散係数一定を選び, それ以外の物理過程については「なし」を選択した. また, 
利用者自身があるルーチンを独自に作り変えた場合には, 「利用者設定ルーチ
ン」を適切なディレクトリに置き, この \verb!Mkinclude! の中で指定するこ
とになるが, もちろんここでは見合わせる.



\subsection{ライブラリの作成}

ライブラリの作成は \verb!src! ディレクトリで行なう. 余計なものが残って
た場合に備えて, 最初にお掃除をしておく.
\begin{verbatim}
% cd agcm5/src/
% make clean
\end{verbatim}

さらに, 初回だけは以下の措置をしておこう：
\begin{verbatim}
% touch include/zcdim.F
\end{verbatim}
この理由は次である. 分解能を指定するファイル \verb!include/zcdim.F! が
正しいものに更新されているかどうかは, 
ファイル \verb!include/zc$(RESOLUTUON).sel! より新しいかどうかで判断さ
れる. \verb!ftp! してきたばかりのときには日付が縮退していることがある
ので, \verb!touch! することで強制的に分解能指定ファイルの更新時刻等を
現在の時刻にするほうが安全である.
\vspace{1em}

ここで, 
\begin{verbatim}
% make lib
\end{verbatim}
とすると, ライブラリのコンパイルが行なわれ,
\verb!$(LIBDEST)/libagcm5$(RESOLUTUON).a! ができる. いまの例では, 
\verb!libagcm5t10l5.a! というファイルが,
\verb!$(HOME)/dennou/agcm5/lib! というディレクトリの下にできる. モデル
の分解能が変らない限り, ライブラリを再コンパイルする必要はない. 非標準
ルーチンやユーザー定義ルーチンを取り替えて再実行する場合には, これらに
対応するオブジェクトファイルが, 実行ファイルを作成する時に, (必要なら
ばコンパイルされ)直接リンクされるからである.



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

メインプログラムなどをコンパイルし, 前節で作ったライブラリをリンクする
ことにより, 実行ファイルを作成する. \verb!src! ディレクトリで, 
\begin{verbatim}
% make gcm
\end{verbatim}
とすれば, \verb!$(BINDEST)/agcm5.$(RESOLUTUON)$(MODELNAME)! ができ
る. いまの例では, \verb!agcm5.t10l5dyn! というファイルが,
\verb!$(HOME)/dennou/agcm5/bin! というディレクトリの下にできる.
\vspace{1em}

該当する分解能のライブラリがない場合には, エラーとなるので前節のライブ
ラリの作成に戻る. 鉛直1次元モデルなら \verb!make 1dim!, 2次元モデルなら 
\verb!make gcmyz! または \verb!make gcmxz! とする.
\vspace{1em}

いつでも最後はお掃除である. 
\begin{verbatim}
% make clean
\end{verbatim}

