本文書は gtool5 ライブラリの構成と保守に必要な知識を概観します。
Fortran 95 規格 に準拠するよう記述しています。
ただし、以下の点で例外もいくつかあります。 その場合にも、sysdep (詳細は下記参照) で処理系依存を吸収し、 たいていの処理系では動作するようにしています。
gtool5 ライブラリは多次元数値データの抽象的インターフェイスや、 数値モデル一般で使用するユーティリティを提供します。
図1: gtool5 の概観。枠内に記述されるのはモジュールの名称です。 矢印は参照関係を示します。実際には「汎用ツール」へは、 他のすべてのモジュールから参照されていますが、 図が煩雑になるためその矢印は省略しています。 また、数が多いため、 「汎用ツール」のうちのいくつかのモジュールはここに記されていません。 なお、MPI Library への参照は、gtool5 を MPI 版でビルドする場合のみ行われます。 [ OpenOffice Draw Src ]
gtool5 は、Fortran 90/95 で数値モデルを作成するユーザに、 gtool4 netCDF 規約 に基づく形式のデータを出力するための簡易インターフェースの提供、 および数値モデル一般で使用されることを想定した汎用的な関数やサブルーチンを提供します。 以下では、図1で示される各モジュールについて簡単な解説を行います。
gtool_history
ユーザへ簡易なインターフェースを提供します。 ユーザは、 作成する数値モデル中でこのライブラリ内のサブルーチンを呼び出すことで、 簡単にgtool4 netCDF 規約に基づく形式のデータを出力できます。
Fortran 77 しか利用できない環境でも gtool_history モジュールを使用できるよう、 いくつかの Fortran 77 インターフェース も用意されています。
gtool_historyauto、gtool_history_nmlinfo
gtool_history のアプリケーションで、 複数の変数に対して、出力の間隔や出力の可否といった出力の設定を NAMELIST によって変更することが可能になっています。 多数の変数を出力するようなモデルで便利です。
ユーザインターフェースが gtool_historyauto、 NAMELIST から得られた情報の管理を行うライブラリが gtool_history_nmlinfo です。
gtdata
データアクセスに関する手続きを提供します。 各種のデータ形式を抽象化した多次元数値データアクセスライブラリです。 いかなるデータ形式も、多次元数値配列である変数と、 それに付随する属性の集合としてアクセスできます。
構造データ型定義が gtdata_types、 手続きの総称名の定義が gtdata_generic で行われています。 また、ライブラリ内部で用いられる言語要素は gtdata_internal_map、gtdata_internal_vartable で定義されます。
gtdata_netcdf、gtdata_netcdf_file
netCDF データ形式とのデータアクセスライブラリです。
主にデータ操作を行う gtdata_netcdf と、 主にデータファイルとのアクセスを行う gtdata_netcdf_file とに分けられています。
gtdata_netcdf では、 構造データ型定義が gtdata_netcdf_types、 手続きの総称名の定義が gtdata_netcdf_generic で行われています。 また、ライブラリ内部で用いられる言語要素は gtdata_netcdf_internal で定義されます。
gtdata_netcdf_file では、 構造データ型定義が gtdata_netcdf_file_types、 手続きの総称名の定義が gtdata_netcdf_file_generic で行われています。 また、ライブラリ内部で用いられる言語要素は gtdata_netcdf_file_internal で定義されます。
gtdata_memory
いわゆるメモリ変数をサポートします (いまのところ1次元だけ)。
構造データ型定義が gtdata_memory_types、 手続きの総称名の定義が gtdata_memory_generic で行われています。 また、ライブラリ内部で用いられる言語要素は gtdata_memory_internal で定義されます。
netcdf_f77
NetCDF オリジナルのライブラリのインターフェースのためのモジュールです (netCDF オリジナルの netcdf.inc の代わりに 利用すべきものです。netcdf.inc への参照はしていません)。
※ gtool5 の前身である gtool4 ツール/ライブラリから継承しているものですが、 現在は NetCDF ライブラリの Fortran 90 インターフェースを直接利用するようにすべきかもしれません。
dc_utils
文字列処理やエラー処理など、Fortran 90/95 一般に使用可能な関数や手続きを用意しています。
sysdep
処理系依存事項のラッパーです。 プログラムの異常終了、コマンドライン引数処理、環境変数取得など、 処理系によって異なる事項についてこのモジュールが吸収し、 上記のモジュールでは処理系に依らない共通の関数やサブルーチンが使用可能になります。
gtool5
図1には記されていませんが、gtool5 ライブラリに含まれるほとんどの関数やサブルーチンのラッパーとなっており、 このモジュールを USE 文によって参照することにより、 全てのモジュールから提供される機能を使用可能です。
gtool5 ライブラリは、netCDF 形式のファイルへのアクセスを行うため、 以下のライブラリに依存しています。
gtool5 ディレクトリ直下の src ディレクトリ以下に、 Fortran 90/95 ソースコードファイルが格納されます。 src 以下は以下のような構造となっています。 ":" の後ろが、そのディレクトリに格納されるモジュールです。 原則的には 1 モジュール 1 ディレクトリですが、 あまり数を多くすると煩雑なため、dc_utils では、 複数のモジュールを含んでいます。
ソースコードファイルの拡張子は f90、F90、rb2f90 のいずれかです。