HDF5並列書き込みテンプレート

HDF5ファイルフォーマットを利用した並列I/Oのテンプレート、置いておきます。 前回の parallel.f90 および メッシュ生成用のモジュール mesh.f90 を使う前提になっているので、利用する場合はそちらも。どうぞ。

hdf5io.f90

parallel.f90

mesh.f90

HDF5 (Hierarchical Data Format 5) というのは自己記述式のファイル形式のひとつで、科学技術系のデータファイルではnetCDFと並んで広く使われるフォーマット。衛星データとか。
データの格納形式はディレクトリ構造と非常に似通っていて、理解は容易なのでドキュメントを参照されたし。ライブラリを構築するときの設定で並列I/Oも可能。
Fortran用のライブラリが無償で提供されているので、手元で利用する場合は本家サイトから各自インストール。スパコンとかの場合は管理者に相談。

コード解説

使い方は簡単。 メインプログラムの最初で init_output を呼びだす。ここで並列I/O用のファイルをオープンする。 データの書き込みをしたいときに output を呼び出す。 最後に fin_output を呼び出す。ファイルのクローズとか。これだけ。 その他の変数はprivate属性で隠蔽してあるので、外からは他には何もできない。

出来上がるのは filename に格納された名前のファイルひとつ。 その中に各タイムステップごとにグループ(ディレクトリみたいなもん)ができて、 各ステップの中にはさらに各変数がグループを作っている。変数名グループの中に実際のデータが書き込まれる。 グループ名は stepname, varnameなどで設定する。

内容説明

少し詳し目にコメントを入れてあるので、ドキュメントと照らし合わせながら読めば理解できるはず。 というわけで今回、説明を省く!

というわけにもいかないので気が向いたらいつか。

HDFビューア

HDFView というHDF5ファイルの中身を見るためのビューアが本家で提供されている。 というか、ぶっちゃけこれ以外にまともなビューアソフトがない。 僕自身はHDFViewの他に、解析用のPythonライブラリ h5py を入れている。