1

背景:
現在、私のプログラムは Python で配列をアセンブルしています。これらの配列はフロントエンド UI に接続されており、インタラクティブな要素 (つまり、配列要素内のユーザー指定の値) を持っています。これらの配列は、.txt ファイルに保存されます (後で使用する場合によって異なります)。その後、ユーザーは Python プログラムを終了し、Python 出力ファイルに基づいてシステムをシミュレートする別の Fortran スクリプトを実行する必要があります。これにはせいぜい数分しかかかりませんが、理想的には、Python UI を離れることなくプロセスを自動化したいと考えています。

配列を組み立てる (Python) ->配列を編集する (Python) ->ファイルにエクスポートする (Python)
->ファイルをインポートする (Fortran) ->シミュレーションを実行する (Fortran) ->結果をファイルにエクスポート (Fortran)
->ファイルを UI にインポート、グラフを表示 (Python)

質問:
これは可能ですか? このプロセスを自動化するためのオプションは何ですか? ファイルの繰り返しエクスポート/インポートを完全に削除できますか?

編集: FortranスクリプトがLapackを使用していることにも言及する必要があります。それが違いを生むかどうかはわかりません。

4

2 に答える 2

4

テキスト ファイルを使用して配列を Fortran コードに渡す必要はありません。Fortran コードへのエントリ ポイントをサブルーチンとして作成すると、を使用してすべてのnumpy配列f2pyを渡すことができます。f2pyタグを自分で追加した場合は、そのことに注意してください。https://github.com/thehackerwithin/PyTrieste/wiki/F2Pyhttp://www.engr.ucsb.edu/~shell/che210d/f2py.pdfなど、多数のチュートリアルのいずれかを使用してください。

戻る方法は同じです。Fortran コードは、intent(out)またはintent(inout)配列と変数のいずれかに結果を入力するだけです。

于 2014-01-19T10:53:49.953 に答える
2

Python+Fortran スタックが大好きです。:)

Python フロントエンドと Fortran エンジンの間で緊密な通信が必要な場合、 Python でsubprocessモジュールを使用するのが適切なオプションです。配列をテキスト ファイルに保存する代わりに、配列として保持します。次に、Fortran エンジンを Python スクリプト内のサブプロセスとして実行します。Python 配列を Fortran エンジンにパイプしてから、結果をパイプして表示します。

このソリューションでは、Python コードと Fortran コードの両方でファイル I/O を変更して、パイプへの書き込みとパイプからの読み取り (Python 側) および標準入力と出力からの読み取り (Fortran 側) を行う必要がありますが、実際にはこれはあまり手間がかかりません。

幸運を!

于 2014-01-19T22:12:12.350 に答える