熱力学計算コード oboro



|top page| |about oboro| |document| |gallery| |source code| |link| [English]



talking about oboro

このモデルを作り出して, 気づくと 4 年目になってしまった. 修論版はコー ディングが良くなかったために, 計算効率も悪く, 溶液や固溶体が扱えなかっ た. また物性データや出力等の I/O はただのテキストファイルであった. その意味ではようやくまともになったと言うべきか.

修士, 博士課程を通して何度も書き換えを行った. 結局, 一からの書き直し 3 回(たぶん), 細かな修正は数知れずです. 書いても書いても納得のいくものに ならなかったのがその理由. 以下, 覚えている限りで当時の作業を振り替える.

M2 の頃

橋元さんのゼミで化学平衡計算の数値的扱いを習い, その方法を用いて木 星大気の平衡凝結計算を行うことにした. 夏休みあたりから数値コードを 書き始めるも, Fortran90 に慣れるのでかなりの時間を費してしまい, ま た M2 後期の学部実験 TA の準備も響いて, 結局冬休みに突貫工事でコー ドを作成していた. 提出一週間前あたりで, 存在量の減った元素を計算か ら除外する方法を先輩に相談していた覚えがある. ちなみに修論発表で使 う絵ができたのは, 発表日の朝 10 時くらいだった(発表は 16 時から).

当時は計算効率が悪く, 1 枚の絵ができるまでに 1 時間くらいかかって いた(今の 10 倍くらい時間かかってます). 溶液, 固溶体の計算がうまく できず, その部分はお茶を濁していた.

D1 の合同大会, 宇宙研シンポジウムの頃

雲層の構造はそれなりに求まるようになったが, 断熱減率の値が「がたが た」で, うまく計算されていると言いがたい状況だった. 化学ポテンシャ ルを数値微分してエントロピーを求めていたことが原因で, エントロピー を比熱から解析的に求めるように修正したところ, エントロピーの値が 「なめらか」になった. 合同大会会場で林さんと出力結果に対する解析を していた覚えがある. またこの当時, 補間法に対する理解が薄かったため に, 誤った使いかたをしていた.

D1 の惑星科学会の頃

この頃, 計算の出力を NetCDF 化した. 存在量が微小となった化学種を系 から取り除くという作業をどのように行えばいいかの肝どころが掴めず, ギブス自由エネルギー最小化ルーチンをいじくり倒していた. Fortran90 の機能に慣れていなかったこともあり, うまい具合に作れずにいた. この頃から行列の非正則を回避する方法を本気で悩み出したような気がする. 適当なスイッチをいれてなんとかしたような覚えがある.

D2 の合同大会前

低温にて出力結果がおかしくなる(生成されないはずの化学種が現れる) という症状が見られたために四苦八苦して調べたところ, 凝縮物のエント ロピーが負になり, エントロピー保存の条件が崩れていた. 飽和蒸気圧の 経験式の適用範囲をいい加減にしていたのが原因で, 経験式をそのまま使っ ていたために低温領域でエントロピーがマイナス無限大に発散してしまっ ていた.

この頃数値コードのコアとなるギブス自由エネルギー最小化ルーチンの仕 様がかなりかたまり, その部分を全面的に書き換えた. 元素を中心に.

D2 の夏 --> DPS

学会のたびにアドホックに修正を加えていたために, 数値コードが非常に 読みづらくなってしまっていた. 人からコードを使わせて欲しいという話 がきたこともあり, 数値コードを全部書き換えることに. 思った以上に 再構築に時間がかかった. 本当なら DPS に参加する予定が体調を崩して しまいキャンセルに.

D2 の春休み --> D3 春

先の改良はどうも納得できなかったので, もう一度モデルを一から再構築 することに. 物性データを NetCDF ファイルに格納することにしたため, 計算の初期値を作るルーチンを全て書き換えるはめになってしまった. Fortran90 の機能をだいぶ覚えたこともあり, 組込み関数, interface 文, リスト構造を積極的に使うことにし, 結果として全てのルーチンを書き換 えることになった. この時期は作るのに多少飽きてきた時期でもあるが, 数値コードがそれなりのレベルになったために, 一見して変な計算結果が 現れたときに, 数値コードの実装が悪いのか, 使っている式が悪いのかの 判断がしやすくなった. 結果として熱平衡問題に対する理解が深まった.

D4 春

D3 の夏くらいから論文化しなきゃと思っていたが, また体調を崩したこともあり, 結局 D3 の 2 月頃から論文化に着手. 自分のモデルの位置付けを探るために化学工学的な平衡計算論文をあさり, その手法を自分のモデルに応用していった.

作成に時間をかけすぎた & 本来は流体計算がやりたかった, のためか, いままでは自分の仕事を過小評価するけらいがあったが, 自分の仕事に自信がもてるようになってきたのもこの時期.