HIM

2008年12月14日

C Octave 海洋モデル

t f B! P L
C言語で書かれた海洋モデルHIMを試してみたところ,3つの例をうまく動かすことができた.アメリカ気象学会のページで検索してみたところ,100を超える引用がある.鉛直座標に密度を用いているisopycnalモデルだけあって,とくに浮力により生ずる流れに関する研究に使われている.Park and Bryan (2001)は密度座標のモデルと高度座標とを比較して,亜寒帯ジャイアに差異が見られ,大気モデルと結合した場合に大気海洋相互作用に影響が表れることが示唆されると述べている.

Mac OS Xではnetcdfさえインストールすれば,LeopardのOpen MPIを使って並列計算をすることができる.LeopardのOpen MPIはFortranに対応していないので,Fortranでかかれたプログラムの場合は,MacPortsなどからOpen MPIをインストールする必要がある.OSのOpen MPIは32/64ビットの両方,PPC/Intelの両方,計4つのアーキテクチャに対応し,universalである.

netcdfを64ビットでインストールし,HIMをコンパイルするときのオプションに-m64をつければ64ビットの実行ファイルができる.64ビットなら,4GBを超えるメモリを必要とする場合でも動作するはずである.MacPortsを64-bitでコンパイルする方法はここに書いてある.MacPorts 1.6まではuniversalとはi386とppcを差していたが,MacPorts 1.7からはi386, x86_64, ppc, ppc64のいずれをユーザが指定するのだそうである.MPIを使うときは,CC=/usr/bin/mpiccをMakefileに書く.Mac Proで8コアをフルに使うと,シングルでは少し待った計算がすぐに終わり,並列計算の威力を体感できた.

C言語で実用になるモデルがあることに感心した.数値計算の分野,とくにスパコンではFortranが有利だと言われているが,パソコンではCの方が便利かもしれない.最近はg95やgfortranがでてきているが,可視化など数値計算以外のものとのリンクはCの方が便利である.数値計算のライブラリについても,GSLやFFTWはCで書かれている.Octaveを使えば自分でベクトルや行列及びその演算を定義しなくても演算や様々な函数が使える.

Octaveのライブラリを使ってスタンドアロンのプログラムを作る方法は,ドキュメントに書いてあるが,サンプルプログラム中a_matrix(row,column)はa_matrix(i,j)の誤りであるようだ.C++のためか,Octaveの初期化のためか,起動のオーバヘッドがあるように感じた.Octaveから使える函数を書く方法も簡単であるようだ.

しばらく,CやOctaveのライブラリを使ったプログラムで遊んでみてもいいかもしれない.

このブログを検索

ブログ アーカイブ

Translate

QooQ