問題タブ [f2py]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
647 参照

python - Fortran からのコールバック Python

現在f2py、Fortran コードから Python 関数を呼び出すために を使用しています。非常に簡単な例を試しましたが、うまくいきませんでした。

Fortran90 コード:

コマンドラインを使用:

f2py -c -m コールバック callback.f90

Python コード:

エラー:

0 投票する
0 に答える
208 参照

python - f2py を使用した Photran プロジェクトのビルド

Python から Fortran 関数を呼び出せるようにするために、f2py を使用して Fortran プロジェクトをビルドするように Photran をセットアップしようとしています (記録としては PyDev で)。外部ビルダーをセットアップしようとしましたが、うまくいきませんでした:

これはエラーで失敗しますerror: unknown file type '' (from 'D:\workspace\FortranTDDexample')

これは最善の方法ではなく、ビルド構成の方が適していると思います (私はこれに非常に慣れていません)。

だから私の質問は:

1) Photran と f2py の動作設定を文書化した人はいますか?

2) 外部ビルダー (上記) を機能させる方法はありますか?

0 投票する
0 に答える
261 参照

numpy - f2py: Windows の numpy に limit.h ファイルがありません

f2py と g77 コンパイラを使用して一部の FortranIV コードをコンパイルできません。Fortran で記述された非常に古いコードを既存の Python モジュールに呼び出すために、これを行う必要があります。MinGW を介して gcc をインストールしましたが、違いがあるかどうかはわかりません。Numpy 1.7 と SciPy 0.12 で Python 2.7 も実行しています。私の OS は Windows7 x64 ですが、すべてのインストールが 32 ビット バージョンであることを確認しました。Python、Fortran、およびこのフォーラムは初めてなので、ご容赦ください。f2py でコードをコンパイルすると、次のようなエラーが表示されます。

問題を特定するために、gfortran コンパイラと互換性のあるテスト コードを使用しました。「-c –compiler」を使用して、必要なコンパイラを呼び出します。テストは、基本的な「Hello World」と同じ行にあります。スローされるエラーは、実際のコードとテスト コードで同じです。エラーのあるファイル 'npy_common.h' を調べたところ、291 行目でヘッダー limit.h をインクルードする呼び出しが行われていることがわかりました。エラーは Numpy ライブラリで発生するので、エラーは Numpy にあると思いますか? このエラーが発生する理由がわかりません。

0 投票する
1 に答える
686 参照

python - f2pyを使用してfortranサブルーチンからpythonにテキスト文字列を返す

Fortran でこの単純なモジュールを取得しました。

test.f90 :

それを(Windows上で)コンパイルしてgfortran test.f90 -o test.exe実行すると、予想どおり、次のようになります。

f2py を使用してコンパイルすることもできます。c:\Python27\python.exe c:\Python27\Scripts\f2py.py --fcompiler=gnu95 --compiler=mingw32 -c -m test \test.f90

この Python スクリプトを実行すると:

test.py :

次の出力が得られます。

ご覧のとおり、"foo" になるはずの文字列が空です。どうしてこれなの?

0 投票する
1 に答える
2202 参照

python - f2py、Python 関数を Fortran に渡す際の問題

この単純な Fortran コード ( stack.f90) があります。

私が使用してコンパイルしています:

次に、この Python スクリプトを使用してテストします ( stack.py):

それを使用して実行すると、次の"python stack.py"ようになります。

私の質問は次のとおりです。

  • 関数が正しく評価されないのはなぜですか?

  • resultPythonに戻るには?

  • xsFortranで一度に配列を評価することは可能ですか?

ありがとうございました!


EDIT:@SethMMortonからの素晴らしいヒントで、私は次のようになりました:

stack.pyこのコマンドを変更して実行: ans = fortran_sum(func,xs); 与えます:

これは間違っています。x=x(I)中間変数を追加し、この変数を使用して関数を呼び出すと、この奇妙な動作は発生しませんf(x)。面白いことに、f(x)一度電話すると、目的の電話f(x(I))も機能します。この「FIX」を適用した後:

次に、コンパイルして実行すると、正しい結果が得られます。

誰かが理由を説明できればいいのですが?

0 投票する
2 に答える
3318 参照

python - f2py、配列を返す Python 関数 (ベクトル値関数)

次の Python では、返された配列に含まれる 5 つの関数funcを統合する必要があります。このコードは、以下を使用して生成された外部 Fortran モジュールを呼び出しますf2py

Fortran ルーチンは次のとおりです。

問題は、Fortran が最初の関数のみを に統合していることですfunc(x)。印刷結果を参照してください。

One way to workarond that is to modify func(x) to return the value of a given position in the array of functions:

And then change the Fortran routine to call the function with two parameters:

Which works:

But here func is called 5 times more than necessary (in the real case func has above 300 functions, so it will be called 300 times more than necessary).

  • Does anyone know a better solution to make Fortran recognizes all the array returned by func(x)? In other words, make Fortran build fx1 = f(x1) as an array with 5 elements corresponding to the functions in func(x).

OBS: I am compiling using f2py -c --compiler=mingw32 -m trapzdv trapzdv.f90

0 投票する
2 に答える
1156 参照

python - f2pyを使用して(Fortran)モジュールエラーでPythonコードを停止しますか?

を使用して Fortran で Python モジュールを作成していf2pyます。Fortran モジュールでエラーが発生した場合、Python プログラムでエラー (エラー メッセージを含む) を生成したいと考えています。次の例を検討してください。

Fortran コード (test.f):

この非常に単純なプログラムは1、 の各要素に追加しますaa(i)ただし、ゼロに等しい場合はエラーが発生するはずです。付属の Python コード:

出力は次のとおりです。

しかし、私は Python プログラムがエラーを保持することを望んでいます。助けてください。

答え

Fortranのstopコマンドはまさにこれを行います。更新された Fortran コードを考えてみましょう。

出力は次のとおりです。

つまり、エラーの後、Python コードは続行されません。