2008年5月16日金曜日

fortran:namelist

数値計算の場合、パラメーターをいろいろいじる必要があるんだが、そのたびにコード本体をいじって、コンパイルというのはなんだか危険なので、なるべく外部ファイルから読み込ますようにしている。パラメーターを外部ファイルから読み込む場合にいちいち書式を気にしてread文を使うのはすごくだるい。エラーの元だし。fortran90の若干便利な機能としてnamelistというものがあるらしい。これを使うと、変数並びを名前で指定してまとめて読み込むことができる。


¶m
ix=3
iy=5
temp=5.0d0
/

のようなファイルを作り、名前をparam.txtとでもして保存しておく。ファイルの先頭に&とnamelistの名前、最後に/を入れるのがきまりである。実行するプログラム側では

program main
integer ::ix,iy
real(8) ::temp
namelist /param/ix,iy,temp
open(27,file="param.txt")
read(27,NML=param)
print*,ix,iy,temp
end

のように、変数の型を宣言し、namelistの名前と要素を宣言しておく。read文のNMLというオプションでこのnamelistの名前を指定し、開いたファイルから読み込む。書式とかでなく、宣言した型通りに読むのでラク。これから使おうと思う。

って最近なんだか計算機系の話ばっかりだ。このところの日常を反映している。もうすぐ学会あるのでそればっかり。んー運動不足だ。

0 コメント: