2014年5月3日土曜日

fortranの仕組みがよくわからん…

DMS fluxをいろんなmethodを使って計算できるようにfabm.nmlに新しいパラメータ「flux」を取り入れた。

他のパラメータ同様それをモデルの中で読み込みfluxの数値によってmethodを変えられるようにする仕組みのはずが…

下記の図によるとflux=0,1,2のときDMS fluxのシミュレーション結果がそれぞれ異なることがわかる。

0と1の場合はそれぞれモデルに

if (flux.eq.0) then
...
else if (flux.eq.1) then
...
end

と記したので思っていたとおりの結果。

しかし、2の場合はデフォルト値(0に設定したはず)と同じ結果を期待したんだが同じではない。2の場合の条件は何も書いていないのでなぜ0でも1でもない結果(しかもちゃんとDMS fluxを計算した結果)が出力されたのかがわからん…。

とりあえず解決策として0、1以外数値を選んだ場合はDMS fluxは0になるようにした。

0 件のコメント:

コメントを投稿