FortranをCに変換 @ Cygwin
cygwinでfortranのソースをコンパイルするにはg77コンパイラをいれればいい話ですが(やり方はここ)、fortranのソースをCにコンバートしてくれるf2cというものがあるので、それを使ってみることにしました。
インストール方法をいちいち解説するのは面倒なので、インターネット上にあったシェルスクリプトを改造してCygwin用の自動インストーラを作りました。ここからダウンロードできます。
やり方はCygwin上で(適当なディレクトリに移動後)、以下を実行してください。
$ wget https://fenrir.naruoka.org/download/archive/buildf2c
$ chmod +x buildf2c
$ ./buildf2c
$ chmod +x buildf2c
$ ./buildf2c
もしbuildf2cというファイルが正しく落とせなかった場合はwgetというソフトがないことによるものです。Cygwinのインストーラのソフトを選択する画面でWebカテゴリの中に入っていると思うので、あらかじめインストールしておいてください。またインストールにはgccを利用しますので、それもお忘れなきよう。
あとはf2cの使用法ですが、以下の手順で利用できます。
$ f2c hoge.f
これでhoge.fはhoge.cというC言語のコードに翻訳されます。また、できたhoge.cをコンパイルするには
$ gcc hoge.c -I/usr/local/include -L/usr/local/lib -lf2c
となにやらオプションをたくさんつける必要があります。
実際、f2cを使用してみた結果は、shockt.f⇒shockt.c。当然ながら可読性はありませんが、コンパイル後のバイナリを比較してみると、f2cを使用した方法のほうがファイルサイズが小さくなっています(『g77 shockt.f』は69196byte、『gcc shockt.c』は61355byte)。うわさによるとf2cを使用したほうがコードが多少高速化されるらしいです。
なおサンプルコードは衝撃波管問題をTVDスキームで解いたものです(=講義ノートからパクリ)。
コメント
コメントする
- 匿名でのコメントは受け付けておりません。
- お名前(ハンドル名可)とメールアドレスは必ず入力してください。
- メールアドレスを表示されたくないときはURLも必ず記入してください。
- コメント欄でHTMLタグは使用できません。
- コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
- コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。
- 投稿ボタンを押してエラーがでなければ、投稿は成功しています。反映されるまでには少し時間がかかります。