博士論文のケーススタディでは、CHEMKIN-IIの Fortranサブルーチンの間隔拡張が必要です(リンクの謝罪。SandiaNational Laboratoryによって配布されなくなったパッケージで見つけることができる最高のものです)。CHEMKIN-IIは、燃焼化学で使用される化学パッケージです。燃焼で使用される標準パッケージであるため、別のパッケージを使用することはできません(むしろ、実際には使用しないことを好みます)。
必要な間隔拡張を取得するために、社内で開発したDAEPACKというツールを使用しました。32ビットOS(gcc 2.95に対応するlibstdcのバージョン)で必要だったCHEMKIN-IIサブルーチンの必要な間隔拡張を生成できるようになっていた古いバイナリは、数年前に落ちました、そして使用するための途方もない試練になります(私が使用したソフトウェアの他のすべての部分の32ビットバージョンを見つける必要があるため)。このパッケージのソースコードもプロプライエタリですが、もともとMITで開発され、MITで働いているため、(かなりの努力を払って)DAEPACKのソースコードを取得できました。私が持っているソースコードを使用して、64ビットバージョンのLinuxおよびgcc 4.xxに対応するlibstdcのバージョンと互換性のあるDAEPACKのバージョンをコンパイルできました。しかし、このソースコードは古いと思われ、論文を完成するために必要な間隔拡張コードを正常に生成しない実行可能ファイルにコンパイルします。開発者に連絡してソースコードの修正を依頼しましたが、以前に開発者と連絡を取ったところ、彼がソースコードを修正したとしても、ソースコードを修正するには時間がかかることがわかりました。
ここに大きな問題があります。資金を使い果たしたため、卒業するまで6か月が残っています。開発者に頼ってDAEPACKをすばやく修正して、博士論文を正常に完成させることはできません。
次のことを行うパッケージが必要です。
- 区間拡張、テイラーモデル(区間演算を使用)、およびほぼ任意のFortran 77コードの導関数を生成します。DAEPACKによって解析されない構造は、
DO
ループとIF
ステートメントだけだと思います。テイラーモデルが必要なので、コードには自動微分(AD)機能も必要です。 - Fortran 77コードのソースからソースへの変換により、これらの区間拡張とテイラーモデルを生成します(つまり、コンパイラーのようにソースコードを解析して、区間拡張とテイラーモデルを計算するソースコードを生成します)。
ピンチでは、Fortran 77コードの代わりにCコードに上記の2つのことを行うソフトウェアを使用して、すべてを通過させることができf2c
ます。すべてを通過させることでうまくいくかどうかわからないので、私はこのようにしないことを本当に好みますf2c
が、私はかなり必死です。
必死の博士課程の学生を助けることができますか?
いくつかの可能な提案を予想するために、時間の制約を考えると、ここではうまくいかないアプローチがあります:
- DAEPACKを機能させるために一生懸命努力しています。信じて、試してみた。そして、私は頻繁に開発者を盗聴しています。
- オブジェクト指向(またはオブジェクト指向のような)アプローチを使用して、区間拡張またはテイラーモデルを計算するツール。CHEMKIN-II(または他の同様に大きなライブラリ)を新しいタイプで再コーディングする時間がありません。大きすぎます。
- Fortran 77/90またはC以外の言語を使用します。CHEMKIN-IIコードはFortranにあります。を使用してCに変換でき
f2c
ます。必要な場合は、TChemと呼ばれるCHEMKIN-IIのSandiaベースのクローンを使用します。私の以前の結果はCHEMKIN-IIを使用しています。私の新しい結果は私の古い結果を再現するはずであり、Canteraはケーススタディとユニットテストに基づいてCHEMKIN-IIが行うことを再現しないことをすでに知っています。さらに、私に先行した大学院生は、CHEMKIN-IIソースコードに黒魔術をかけて、区間演算を特にうまく機能させました。それを他のパッケージに複製するのは難しいでしょう。