- ベストアンサー
C言語からのFortranプログラムの呼び出し
Fortranで記述した以下のような構成の有限要素法プログラムをC言語から呼び出したいのですが,具体的にどのようなコードを記述すればいいのかがわかりません.お教えいただけないでしょうか. サブルーチンinputおよびoutputでは入力および結果ファイルの入出力を行っています. 当方C言語はほぼ初心者です.Fortranのプログラミング環境としてはVisualStudio2005およびVisualFortran9.1を用いています. C言語のプログラミング環境としてはおなじくVisualStudio2005を使用したいとおもっております. [メインプログラム] open (5,file='input.dat') open (6,file='output.dat') /入出力用のファイルを開く call input(parameter1) /各サブルーチンで有限要素法を実行 call bound(parameter2) call matrix(parameter3) call solve(parameter4) call output(parameter5) close (5) /入出力用のファイルを閉じる close (6) stop end
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「Fortranで記述した以下のような構成の有限要素法プログラムをC言語から呼び出したい」ということですが, 見た感じではその Fortran プログラムはそれだけで完全なプログラムになっているので, 必要なデータをファイルに保存しておいて, しかる後に別プロセスとして実行すればいいだけではないでしょうか. system か ShellExecute か, そのあたり?
その他の回答 (2)
- kirinoma
- ベストアンサー率53% (288/542)
#1です. すみません,私の回答は環境が違うと駄目ですね. 無視してください.
お礼
早速の回答ありがとうございました. VisualStudio2005とVisualFortran9.1という環境でプログラミングしてらっしゃる方というのは意外と少ないのでしょうか. ネットを検索してもほとんど例が無いもので・・.
- kirinoma
- ベストアンサー率53% (288/542)
とりあえず,このあたり参考になりませんか. http://www.hitachi.co.jp/Prod/comp/hpc/foruser/sr2201/tebiki/CtoF.html 私も似た様なこと(ただし,純粋なFortranではなく,Fortran準拠のMatlab関数呼び出し)を やったことがありますが,非常に面倒だったのを覚えています. たとえば,多次元配列で,Cですとメモリに行->列の順でアクセスするところを, Fortranだと列->行の順でアクセスするので,そこを考慮して配列の値の格納・取り出しを 行わないと変なことになる,など. 頑張ってください.
お礼
回答ありがとうございます. 現時点で,私のプログラムでは変数の受け渡し等はなく,データファイルを介してデータをやりとりするだけなので,確かに別プロセスとして実行すれば問題ありませんでした(^ ^); ご指摘どうもありがとうございます! 今後のことを考えると,サブルーチンを呼び出すことも必要になってきそうなので,しばらく自分で色々トライしてみて,それでもわからない場合にはまたお世話になるかもしれません. みなさん早速のご回答どうもありがとうございました!