49
gt4f90io: gtool4 規規規規規規 Fortran90 netCDF I/O 規規規規規 北北北北北北北北 北北北北北 北北北北北北北北 北北北 北北北北北 北北北北 2 北北 北北

gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

  • Upload
    kaden

  • View
    59

  • Download
    0

Embed Size (px)

DESCRIPTION

gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ. 北海道大学大学院 理学研究科 地球惑星科学専攻 地球流体力学研究室 修士課程 2 年 森川 靖大. 目次. I. 背景 ・ データの嵐 ・ 例えば何がしたいのか? ・ 何が欲しいのか? ・ davis プロジェクト. III. gt4f90io ・ 概要 ・ 特徴 ・ サブルーチン群 ・ 使用例 ・ まとめ ・ 課題 - PowerPoint PPT Presentation

Citation preview

Page 1: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

gt4f90io: gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

北海道大学大学院 理学研究科 地球惑星科学専攻地球流体力学研究室 修士課程 2 年

森川 靖大

Page 2: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

IV. これから… ・ 何が欲しかったっけ? ・ 理解のための数値モデルへ

- SPMODEL- DCPAM

IV. これから… ・ 何が欲しかったっけ? ・ 理解のための数値モデルへ

- SPMODEL- DCPAM

III. gt4f90io ・ 概要 ・ 特徴 ・ サブルーチン群 ・ 使用例 ・ まとめ ・ 課題 ・ おまけ(お手軽 Install )

III. gt4f90io ・ 概要 ・ 特徴 ・ サブルーチン群 ・ 使用例 ・ まとめ ・ 課題 ・ おまけ(お手軽 Install )

目次目次

II. これまでの経過・ davis プロジェクト年表・ GTOOL3・ gtool4 プロジェクト

- 今までの取り組み- 現在の取り組み

II. これまでの経過・ davis プロジェクト年表・ GTOOL3・ gtool4 プロジェクト

- 今までの取り組み- 現在の取り組み

I. 背景・ データの嵐・ 例えば何がしたいのか?・ 何が欲しいのか?・ davis プロジェクト

I. 背景・ データの嵐・ 例えば何がしたいのか?・ 何が欲しいのか?・ davis プロジェクト

Page 3: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

背景背景

Page 4: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

データの嵐データの嵐様々な形式のデータが多量に氾濫

衛星観測データ客観解析データ数値モデルデータ

ネットワークの発展で活発に流通

データ参照コストの劇的な増加 「何の」データ? 「いつ」 , 「どこで」 , 「誰が」作った

データ? どうやって「見る」の?

Page 5: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

例題:数値モデリング例題:数値モデリング

階層的モデル群によるアプローチ

地球大気との比較

Page 6: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

例題:観測とモデルの比較例題:観測とモデルの比較客観解析データを初期値にモデルを計算客観解析データとモデルデータとの比較

NCEP/NCAR ( 客観解析データ ) モデル

Now Printing

「客観解析データ」とは、元々規則的に並んでいない観測データを、数値モデルによって規則的に配置されたデータにしたもの。(?)

普通、数値モデルで用いるデータとしては、最も観測データに近い。(?)

Page 7: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

何が欲しいのか?何が欲しいのか?みんなで好きに使える数値モデル

メカニズムを理解するための数値モデル• 地球以外にも容易に適用できると嬉しい

みんなで好きに使えるデータ データ参照コストを抑え、隣の専門家とサクサク会話し

たい データ自身が中身を語ってくれる(自己記述的)と嬉し

みんなで好きに使える解析・可視化ツール 売り物は(あまり)使いたくない

• 実際は、高価なのにイマイチなものが多い かといって GrADS 使うのもねぇ

• 先のような例題に使うには少々不向き

Page 8: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

davis プロジェクト (1998)davis プロジェクト (1998)

Development of tools

for Analysis and VISualization 【多次元データの構造化と可視化】

以下の製品開発を目指す我々にとって使い勝手のよいデータ構造我々にとって使い勝手のよい解析・可視化ツール

最初の davis ワークショップ (1998) での一言『隣の専門家が分かる情報を提供すべし』『技術的な仕事、教育活動も研究活動の一環』

Page 9: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

これまでの経過これまでの経過

Page 10: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

davis プロジェクト年表davis プロジェクト年表

1989 ~ 90 ( davis 以前) GTOOL3, dcl

: : 1998/10 最初の davis ワークショップ1999/04 JST プロジェクト開始2000/03 JST 発表会

gtool4 netCDF 規約 gtool4 Tools/Library, dcl-C, dcl-f90, RubyDCL のプロトタイプ

2001/06 合同大会 RubyDCL

2002/03 第1回電脳 Ruby ワークショプ Gphys, RubyNetCDF

2003/03 第2回電脳 Ruby ワークショップ gdcl

2004/03 第3回電脳 Ruby ワークショップ gt4f90io, GAVE

Page 11: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

GTOOL3 ソフトウェア I/O ライブラリ + 解析・可視化ツール群 Fortran77 で記述 構成

GTOOL3 (1989)GTOOL3 (1989)

GTOOL3 Library

解析ツール群 可視化ツール群

DCL

文字処理、数値基礎処理、可視化ライブラリ

数値モデル

I/O ライブラリ

GTOOL3 データ構造 Sequential Unformatted ファイル

• テープドライブとの入出力が念頭にあったため 自己記述性を ( ある程度 ) 実現

• ヘッダ部分にデータ名や次元サイズや作成日などの情報を格納

Page 12: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

gtool4 プロジェクト (1999)gtool4 プロジェクト (1999)

GTOOL3 の欠点を克服したツール開発自己記述性の強化

• データと「軸ファイル」を統合ネットワーク透過性の向上

•機種依存 (浮動小数点、 Big/Little endian問題) 回避

データ構造の多様性への対応• 3 次元以上のデータの取り扱い

内部構造の整理•徹底した階層化

Page 13: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

gtool4 Tools/Library I/O ライブラリ + 解析・可視化ツール群 Fortran 90 で記述 : モジュール、構造型、総称手続き を活用 ファイル形式は netCDF : 高移植性、多次元データ、自己記述的 構成

今までの取組み (~ 2002)今までの取組み (~ 2002)

gtool4 Fortran90 Tools/Library

解析ツール群 可視化ツール群

NetCDFLibrary

その他のデータアクセスライブラリ (未定 )

DCL

数値モデル

I/O ライブラリ

gtool4 netCDF 規約 多次元データと可視化情報を自己記述的に格納する netCDF 規約

• 地球科学の格子点データを想定 • 既存の COARDS 規約 , NCAR CSM 規約 との互換性を考慮

Page 14: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

: :2000/03 JST 発表会

gtool4 netCDF 規約 gtool4 Tools/Library, dcl-C, dcl-f90, RubyDCL のプロトタイプ

2001/06 合同大会 RubyDCL

2002/03 第1回電脳 Ruby ワークショプ Gphys, RubyNetCDF

2003/03 第2回電脳 Ruby ワークショップ gdcl

2004/03 第3回電脳 Ruby ワークショップ gt4f90io GAVE

電脳 Ruby プロジェクト躍進電脳 Ruby プロジェクト躍進

電脳 Ruby プロジェクトのツール群Ruby による解析・可視化ツールの開発

• ワークステーション、パソコンで対話的に使える ツールを目指す

電脳 Ruby プロジェクトのツール群Ruby による解析・可視化ツールの開発

• ワークステーション、パソコンで対話的に使える ツールを目指す

Page 15: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

現在の取り組み (2003~ )現在の取り組み (2003~ )

解析、可視化ツール 電脳 Ruby プロジェクトで

• 解析・可視化は Ruby の方が将来性ありそう• 素人さんでも使えそうな雰囲気が伝わってきた

データ I/O ライブラリ gtool4 から gt4f90io へ

• gtool4 から解析・可視化部分をとりはずす • F90 ベースの数値モデルのデータ I/O に特

化 データ構造

gtool4 netCDF 規約 の充実• まだまだ足りない部分が多いはず

注目 !!!

Page 16: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

gt4f90iogt4f90io

Page 17: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

gt4f90io (2003-2004)gt4f90io (2003-2004)

数値モデルのデータ I/O ライブラリ Fortran90 の数値モデルでの利用を想定 gtool4 netCDF 形式のデータを出力

正式名称 [日 ] gtool4 規約に基づく Fortran90 netCDF I/O ライブラ

リ [英 ] Fortran90 netCDF I/O library with gtool4 convention

構成gtool4 Fortran90 Tools/Library

NetCDFLibrary

数値モデル 解析ツール群 可視化ツール群

その他のデータアクセスライブラリ (未定 )

DCL

I/O ライブラリ

gt4f90io [Fortran90 netCDF I/O library]

Page 18: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

内部用汎用ライブラリ

文字列と数値の変換など

dc_string

エラーの処理

dc_errorデバッグ用モジュール

dc_trace

Fortran コンパイラに依存するコードの共通インターフェイスを提供

sysdep

モジュール構造概観gt4f90io の内部構造gt4f90io の内部構造

UNIDATA netCDF Library

数値モデルの結果を gtool4 netCDF 形式の多次元数値データとして出力するための Fortran 90 インターフェース

gt4_history

各種のデータ形式を抽象化した多次元数値データアクセスライブラリ (データ形式の違いは下層のライブラリによって吸収 )

gtdata_generic

netCDF データアクセス用下層ライブラリ。netCDF 変数の入出力ファイルのオープン、入出力範囲の保持、属性の文字列変換など

an_generic

gt4f90io – Fortran90 netCDF I/O Library

数値モデル (Fortran 90 で記述 )

その他の形式のデータアクセス用下層ライブラリ (未定)

??_generic

その他のデータアクセスライブラリ (未定 )

Page 19: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

特徴特徴簡単インターフェース

覚えるべきは…• モジュール名 gt4_history

• 最低限たった 4 つのサブルーチン

多次元格子点データを簡単に出力• 正確には gtool4 netCDF 規約に基づくデータ

Page 20: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

gt4_history のサブルーチンgt4_history のサブルーチン

HistoryCreate(file, title, …)初期設定

• 出力ファイル名、タイトル、…、次元変数名、次元サイズ、…

HistoryAddVariable(varname, dims, …)変数定義

• 変数名、依存次元名、…

HistoryPut(varname, value, …)変数出力

• 変数名、出力値、…

HistoryClose終了処理

総称手続き (generic procedure) によって、違うデータ型にも同じ名前のサブルーチンで対応

Page 21: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

使用例使用例サンプル Fortran 90 プログラムprogram sample use gt4_history ! モジュールの使用を宣言

[ 型宣言 ] ......

call HistoryCreate( & ! ヒストリー作成 file='sample.nc', title='gt4_history', & ! ・ファイル名、タイトル ..., dims=(/'x','t'/), dimsizes=(/30,0/), & ! ・次元変数、次元サイズ .......) call HistoryAddVariable( & ! 変数定義 varname='temp', dims=(/'x','t'/), .... ) ! ・変数名、依存次元、 ..

[ 時間積分ループ ] : call HistoryPut(varname= 'temp', value=temp) ! 変数の出力 : [ 時間積分ループ 終わり ]

call HistoryClose ! 終了の処理 stopend program sample

Page 22: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

まとめまとめgt4f90io

http://www.gfd-dennou.org/arch/gtool4/

御利益Fortran90 数値モデルから gtool4 netCDF データを出力

覚えるモジュール 1 つ、サブルーチン 4 つ• モジュール : gt4_history

• サブルーチン– HistoryCreate 、 HistoryAddVariable

– HistoryPut 、 HistoryClose

Page 23: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

課題課題当面の課題

様々なプラットフォームでの動作テスト• 動作確認

– 富士通 Linux 用 Fortran Compiler 3.0, 4.0– Intel Fortran Compiler 7.0, 8.0 (8.0.039 以降 )

gtool4 netCDF 規約 へ対応について• 対応する属性に関して一覧表を作る• 必須属性、推奨属性に関しては自動で netCDF ファイルに出

力• データ入力時には、属性と規約との整合性をチェック

ユーザフレンドリな「入力」用インターフェース開発• 一応出来たけど、ダサいので改良中…

– HistoryGet

ファイル出力プログラムの改良• サイズが巨大になるときは自動で分割するとか?

Page 24: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

おまけ(お手軽 Install )おまけ(お手軽 Install )

debian パッケージあります /etc/apt/sources.list に以下の 4 行を追加

apt でインストール

• これは Fujitsu Fortran 4 用。• 他にも ffc3 や Intel Fortran コンパイラ、 ifc6, ifc7, ifc8 を

用意

使い方はチュートリアル参照してね http://www.gfd-dennou.org/arch/gtool4/gt4tutorial/rakuraku/

deb ftp://www.gfd-dennou.org/arch/gtool4/debian/gt4f90io woody/deb-src ftp://www.gfd-dennou.org/arch/gtool4/debian/gt4f90io woody/deb ftp://www.gfd-dennou.org/arch/spmodel/debian woody/deb-src ftp://www.gfd-dennou.org/arch/spmodel/debian woody/

# apt-get install gt4f90io-ffc4 netcdf-ffc4

Page 25: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

これから… ?これから… ?

Page 26: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

何が欲しかったっけ?何が欲しかったっけ?みんなで好きに使える数値モデル

メカニズムを理解するための数値モデル

みんなで好きに使えるデータ 隣の専門家と会話したい データ自身が中身を語ってくれる(自己記述的)と

嬉しいネットワーク上を透過的に持ち運べるとなお嬉しい

みんなで好きに使える解析・可視化ツール 売り物は(あまり)使いたくない

• 実際は、高価なのにイマイチなものが多い かといって GrADS 使うのもねぇ

• 先のような例題に使うには少々不向き

電脳 Ruby プロジェクトRubyDCL, RubyNetCDF, Gphys, GAVE…第2回電脳 Ruby ワークショップでほぼ出揃う鋭意開発中 !!!

電脳 Ruby プロジェクトRubyDCL, RubyNetCDF, Gphys, GAVE…第2回電脳 Ruby ワークショップでほぼ出揃う鋭意開発中 !!!

gtool4 プロジェクトデータ形式 : gtool4 netCDF 規約データ I/O : gt4f90ioなんとか開発中…

gtool4 プロジェクトデータ形式 : gtool4 netCDF 規約データ I/O : gt4f90ioなんとか開発中…

基盤は揃いつつある 基盤は揃いつつある

Page 27: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

理解のための数値モデルを目指して

皆で好きに使える数値モデル皆で好きに使える数値モデル

いくつかの試みSPMODEL (Hierarchical Spectral Models for GFD)

• 階層的地球流体力学スペクトルモデル集– コードの可読性を重視

» 『数式のようなコードが簡単に書ける』 ことを目指す– 階層化された数値モデルを目指す

» 『簡単なモデル ⇔ 複雑なモデル』 を容易に

– データ I/O に gt4f90io を使用» 『隣の研究者が分かるデータ』 を扱うため

DCPAM (Dennou Club Planetary Atmospheric Model)

• 理解できる、可読的・階層的、惑星大気大循環モデル

Page 28: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

参考 URL参考 URL gt4f90io ( gtool4 プロジェクト)

http://www.gfd-dennou.org/arch/gtool4

電脳 davis プロジェクト http://www.gfd-dennou.org/arch/davis

DCL (Dennou Club Library) http://www.gfd-dennou.org/arch/dcl

電脳 Ruby プロジェクト http://www.gfd-dennou.org/arch/ruby

SPMODEL http://www.gfd-dennou.org/arch/spmodel

DCPAM http://www.gfd-dennou.org/arch/agcm6 (←古いページ )

http://www.gfd-dennou.org/arch/dcpam (←将来的にはこのページへ )

Page 29: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

メモメモ

Page 30: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

以降、付録 (?)以降、付録 (?)

Page 31: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

個別のサブルーチン

総称手続き総称手続き

Fortran 90 コーディングスタイル オブジェクト指向“的”に…

• クラス → 構造型• メソッド → サブルーチン• 多態性 (polymorphism) → 総称宣言されたサブルーチン

– 引数の型に合わせ、異なるサブルーチンが呼び出される ( 下図参照 )

総称名称 (例: HistoryAddAttr )

例: HistoryAddAttrC 例: HistoryAddAttrL 例: HistoryAddAttrR

《引数の型に応じて実際に呼び出されるサブルーチンが変化》

上位モジュール

下位モジュール

実数型用論理型用文字型用

例: Histo..

《引数の型を気にせず、サブルーチンを呼び出せる》

Page 32: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

gt4f90io 詳細図gt4f90io 詳細図

Page 33: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

gtool4 Tools/Library 詳細図gtool4 Tools/Library 詳細図

Page 34: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

gt4_history 具体的使用例gt4_history 具体的使用例サンプル Fortran 90 プログラム

program sample

use gt4_history ! モジュールの使用を宣言

[ 型宣言 ] ..

call HistoryCreate( & ! ヒストリー作成 file='sample.nc', title='gt4_history sample', & ! ・ファイル名の指定、データ全体の表題の指定 source='Sample program of gt4_history/gt4f90io', & ! ・データを生成する手段 institution='GFD_Dennou Club davis project', & ! ・ファイルを最終的に変更した人 / 組織 dims=(/'x','t'/), dimsizes=(/30,0/), & ! ・次元変数、次元のサイズの指定 longnames=(/'X-coordinate','time '/), & ! ・次元の名前 units=(/'m','s'/), & ! ・次元の単位の指定 origin=real(0.0), interval=real(0.005) ) ! ・時間の原点、出力時間間隔の指定

call HistoryPut('x',x) ! 変数の出力 call HistoryAddAttr('x', 'topology', 'circular') ! 変数に属性を追加

call HistoryAddVariable( & ! 変数定義 (属性指定 ) varname='temp', dims=(/'x','t'/), & ! ・変数名、依存する次元の指定 longname='temperature', units='K', xtype='double') ! ・変数の (長い )名前、単位、変数の型の指定

[ 時間積分ループ ] : call HistoryPut('t',real(it*dt)) ! 変数の出力 call HistoryPut('temp',temp) ! 変数の出力 : [ 時間積分ループ 終わり ]

call HistoryClose ! 終了の処理 stopend program sample

Page 35: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

gt4_history 使用結果gt4_history 使用結果 gtool4 netCDF 規約に則った netCDF ファイル

$ ncdump sample.nc (netCDF ファイルの属性 + データを出力 )[出力結果 ]dimensions: x = 30 ; t = UNLIMITED ; // (201 currently)variables: float x(x) ; x:long_name = "X-coordinate" ; x:units = "m" ; x:topology = "circular"; float t(t) ; t:long_name = "time" ; t:units = "s" ; double temp(t, x) ; temp:long_name = "temperature" ; temp:units = "K" ;

// global attributes: :title = "gt4_history sample" ; :source = "Sample program of gt4_history/gt4f90io" ; :institution = "GFD_Dennou Club davis project" ; :history = "unknown unknown> gt4_history: HistoryCreate\n", "" ;data: x = 0, 0.03448276, 0.06896552, 0.1034483, 0.137931, 0.1724138, 0.2068965, : t = 0, 0.0005, 0.001, 0.0015, 0.002, 0.0025, 0.003, 0.0035, 0.004, 0.0045, : temp = 1.38879542122922e-11, 3.87761921792298e-10, 8.53515772443671e-09, :

$ ncdump sample.nc (netCDF ファイルの属性 + データを出力 )[出力結果 ]dimensions: x = 30 ; t = UNLIMITED ; // (201 currently)variables: float x(x) ; x:long_name = "X-coordinate" ; x:units = "m" ; x:topology = "circular"; float t(t) ; t:long_name = "time" ; t:units = "s" ; double temp(t, x) ; temp:long_name = "temperature" ; temp:units = "K" ;

// global attributes: :title = "gt4_history sample" ; :source = "Sample program of gt4_history/gt4f90io" ; :institution = "GFD_Dennou Club davis project" ; :history = "unknown unknown> gt4_history: HistoryCreate\n", "" ;data: x = 0, 0.03448276, 0.06896552, 0.1034483, 0.137931, 0.1724138, 0.2068965, : t = 0, 0.0005, 0.001, 0.0015, 0.002, 0.0025, 0.003, 0.0035, 0.004, 0.0045, : temp = 1.38879542122922e-11, 3.87761921792298e-10, 8.53515772443671e-09, :

解析 and 可視化

by

RubyNetCDF + RubyDCL + Gphys + …

Page 36: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

以降はゴミ以降はゴミ

Page 37: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

gt4f90io 【概要】 (昔のスライド )gt4f90io 【概要】 (昔のスライド )

正式名称 [日 ] gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ [英 ] Fortran90 netCDF I/O library with gtool4 convention

目的 “Fortran90 netCDF I/O ライブラリ” への機能の特化 & 強化

• 開発 & メンテナンスのコスト削減のため• 可視化 & 解析には、 Dennou Ruby Project のツール群を使用

– 結果として DCL から独立

構想

gt4f90io – Fortran90 netCDF I/O Library

NetCDFLibrary

数値モデル

解析コマンド群

可視化コマンド群

その他のデータアクセスライブラリ (未定 ) DCL Library

RubyNetCDF + …

非依存

Page 38: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

目次・旧目次・旧1. これまでの取り組み

1-1. GTOOL3

1-2. gtool4 プロジェクト [1]

1-3. gtool4 プロジェクト [2]

1-4. gtool4 プロダクト

1. これまでの取り組み1-1. GTOOL3

1-2. gtool4 プロジェクト [1]

1-3. gtool4 プロジェクト [2]

1-4. gtool4 プロダクト

2. gt4f90io2-1. 概要2-2. 構造2-3. コーディング2-4. 使用例2-5. 使用結果2-6. 課題2-7. まとめ2-8. URL3. 参考資料

Page 39: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

内部用汎用ライブラリ

文字列と数値の変換など

dc_string

エラーの処理

dc_errorデバッグ用モジュール

dc_trace

Fortran コンパイラに依存するコードの共通インターフェイスを提供

sysdep

モジュール構造概観内部構造・アニメ版内部構造・アニメ版

UNIDATA netCDF Library

数値モデルの結果を gtool4 netCDF 形式の多次元数値データとして出力するための Fortran 90 インターフェース

gt4_history

各種のデータ形式を抽象化した多次元数値データアクセスライブラリ (データ形式の違いは下層のライブラリによって吸収 )

gtdata_generic

netCDF データアクセス用下層ライブラリ。netCDF 変数の入出力ファイルのオープン、入出力範囲の保持、属性の文字列変換など

an_generic

gt4f90io – Fortran90 netCDF I/O Library

数値モデル (Fortran 90 で記述 )

その他の形式のデータアクセス用下層ライブラリ (未定)

??_generic

その他のデータアクセスライブラリ (未定 )

Page 40: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

背景 【 1 】 ( 以前の発表資料の残骸 )背景 【 1 】 ( 以前の発表資料の残骸 )

様々な形式のデータが多量に氾濫【原因】 コンピュータの進歩 観測技術の向上 ネットワークの発展

データ参照コストの劇的な増加【データ参照コストとは?】 このファイルの形式は? ファイルの内容は? どうやって読むの?

Page 41: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

背景 【 2 】 ( 以前の発表資料の残骸 )背景 【 2 】 ( 以前の発表資料の残骸 )

共同研究でもデータの効率的な相互参照は必須

階層的モデル群によるアプローチ

地球大気との比較

Page 42: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

背景 【 3 】 ( 以前の発表資料の残骸 )背景 【 3 】 ( 以前の発表資料の残骸 )

大学なので…公共財として利用したい

• 研究教育資源としてデータやツールを提供• 誰でも自由に参照

オープン/フリー• みんなで使える ( データの共有 )• 改変が自由• 再配布も可

Page 43: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

gtool4 Tools/Library I/O ライブラリ + 解析・可視化コマンド群 Fortran 90 で記述 : モジュール、構造型、総称手続き を活用 ファイル形式は netCDF : 高移植性、多次元データ、自己記述的 構成

gt4f90io 数値モデルのデータ I/O ライブラリとして特化

• 単独のツールとして再パッケージング

今までの取組み現在の取り組み

( 非 採用バージョン )

現在の取り組み

( 非 採用バージョン )

gtool4 Fortran90 Tools/Library

NetCDFLibrary

数値モデル 解析コマンド群 可視化コマンド群

その他のデータアクセスライブラリ (未定 )

DCL Library

I/O ライブラリ

gt4f90io [Fortran90 netCDF I/O library]

– [日 ] gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

– [英 ] Fortran90 netCDF I/O library with gtool4 convention

解析、可視化コマンド群を分離• オブジェクト指向スクリプト言語 Ruby へ

gtool4 netCDF 規約 引き続き策定継続

Page 44: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

GTOOL3 ソフトウェア I/O ライブラリ + 解析・可視化コマンド群 Fortran77 で記述 構成

GTOOL3 (1989) [no animation]GTOOL3 (1989) [no animation]

GTOOL3 Library

解析コマンド群 可視化コマンド群

DCL Library

文字処理、数値基礎処理、可視化ライブラリ

数値モデル

I/O ライブラリ

GTOOL3 データ構造 Fortran sequential unformatted ファイル 自己記述性を ( ある程度 ) 実現

• ヘッダ部分にデータ名や次元サイズや作成日などの情報を格納

Page 45: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

davis 以前の世界 (old)davis 以前の世界 (old)

数値モデル: 電脳倶楽部 AGCM5 沼口さん作成の大気大循環モデル問題点(?)

• 地球用に徹底的にチューニング (他の惑星への転用が難しい)

– 比較惑星科学的利用が難しい• プログラムを階層的に分離できない

– 力学的理解のために用いる事が困難

可視化と解析: GTOOL3 スパコン仕様なので FORTRAN77 描画に DCL を利用

データ構造: GTOOL3 形式 固定ヘッダー+データの機種依存バイナリ

• MT I/O を考慮

Page 46: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

誰が作る? ( 破棄 )誰が作る? ( 破棄 )

技術的な仕事、教育活動も研究活動の一環

自作への道へ

davis プロジェクト開始

Page 47: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

目標 (dennou-ruby)目標 (dennou-ruby)

階層化モデルの データ I/O ライブラリ要件

ネットワーク透過的なファイル形式 自己記述的なデータ形式 いろいろなところで利用可能

Page 48: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

目標 (stel)目標 (stel)

データの氾濫を乗り切るために必要なもの1. 効率的な相互参照が可能なもの2. オープン /フリーなもの3. 地球科学に適したもの

作りたいもの ネットワーク透過的なファイル形式 自己記述的なデータ形式 いろんなところで使えるデータ I/O ライブラリ いろんなところで使える解析・可視化コマンド群

Page 49: gt4f90io : gtool4 規約に基づく Fortran90 netCDF I/O ライブラリ

参考資料 (使わない)参考資料 (使わない) Toyoda, E., Ishiwatari, M., Takehiro, S., Hayashi, Y.-Y., gtool4 Devlopment Gro

up, 2002: gtool4 Fortran90 Tools/Library, http://www.gfd-dennou.org/arch/gtool4/, GFD Dennou Club.

Toyoda, E., Ishiwatari, M., Horinouchi, T., Akahori, K., Numaguti, A., Hayashi, Y.-Y., GFD Dennou Club Davis Project, 2000: gtool4 netCDF convention, http://www.gfd-dennou.org/arch/gtool4/, GFD Dennou Club.

Toyoda, E., Takehiro, S., Ishiwatari, M., Hayashi, Y., 2003: GTOOL: I/O Library and Analysis Tool for Gridded Data, IUGG 2003 SW05 (Thu Jul 10 2003) , http://www.gfd-dennou.org/arch/prepri/2003/iugg/gtool/poster/note-iugg2003.html

Takehiro, S., Ishioka, K., Toyoda, E., Ishiwatari, M., Hayashi, Y.-Y., SPMODEL Development Group, 2002: Hierarchical GFD Spectral Models (SPMODEL), http://www.gfd-dennou.org/arch/spmodel/, GFD Dennou Club.

GFD Dennou Club, 2000-2003: Dennou Ruby Project . http://www.gfd-dennou.org/arch/ruby

GFD Dennou Club, 1992-2002: DCL (GFD Dennou Club Library). http://www.gfd-dennou.org/arch/dcl

University Corporation for Atmospheric Research/Unidata, 1993-1999: NetCDF. http://www.unidata.ucar.edu/packages/netcdf/index.html