太陽フレアのモデリング プログラムの概要:磁気流体コードを用いて3

プログラム名:太陽フレアのモデリング
プログラムの概要:磁気流体コードを用いて3次元の太陽フレアのダイナミクスを解く。
助言、提案の欲しい問題:これまで 2 次元の計算を行って来たが、3 次元モデルに拡張したい。
コードは 3 次元計算が出来ることはチェック済みで、出力、可視化の部分について助言いただきた
いです。
使用する計算機(予定も含む):cfca xc30
用いる言語:FORTRAN,
質問など:3 次元の配列を出力し、可視化するまでの方法を教えていただきたいです。現在、2 次元
計算の結果を、
write(nfile,'(100f10.4)') bx(1-margin:nx+margin,1-margin:ny+margin,nz/2)
のように出力し(bx は三次元配列、z 方向は解かずに二次元計算したもの)、千葉大学の松本洋介
氏の公開されている 2 次元可視化ルーチン(IDL による)を用いて可視化しています。
1. 3 次元配列として、形式を指定して出力する方法を教えていただきたいです。
2. zbuffer で描画して結果を.eps ファイルとして出力する方法があれば教えていただきたい
です。
回答 1: ASCII データとして出力されているようですが、多次元計算の場合はバイナリデータとし
て出力したほうが、入出力の速さ、データサイズ削減の点でお薦めします。バイナリデータの出力
フォーマットは、
•
Fortran Unformatted
•
HDF5
が挙げられ、共に IDL によって読み込みが可能です。前者の方法は、
http://www.exelisvis.com/docs/Reading_and_Writing_FORT.html
を参照ください。Fortran からは、
open(nfile, file='bx.dat', form='unformatted')
write(nfile) bx
close(nflie)
とするだけです。IDL で読み込む場合は、あらかじめ配列の大きさを知っておく必要があります。
後者の方法は、
http://www.hdfgroup.org/HDF5/
http://www.exelisvis.com/docs/HDF5_Overview.html
が参考になるかと思います。HDF 5は標準フォーマットで、最近では多くの大型計算機上でも使え
る環境になっているかと思います。
回答 2: xwindow に描画せずに eps への出力する方法は、
http://www.astro.phys.s.chiba-u.ac.jp/~ymatumot/idl/index.php?3%E6%AC
%A1%E5%85%83%E5%8F%AF%E8%A6%96%E5%8C%96%2F3-D%20Visualization
で公開している example_idlgr3dvis.pro の中で、、
;;DRAW TO DESKTOP WINDOW
mywindow->draw,myview
のところをコメントアウトしてください。
;; SAVE TO EPS FILE IF NECESSARY
c = obj_new('idlgrclipboard',dimensions=dimensions,resolution=res)
c->draw,myview,/postscript,filename=fname
obj_destroy,c
で eps ファイルに出力しています。