問題タブ [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 投票する
1 に答える
1466 参照

python - f2pyを使用する場合、fortranモジュール内の関数スコープは、fortranプログラム用にコンパイルされた場合と異なりますか?

私の問題は、f2py でコンパイルすると、一部のモジュール変数がモジュール内で定義された関数によって認識されないことです。エラーは、関数に渡される引数の変数型が宣言されている場所で発生します ( の型を記述する変数real、または次元要素など)。gfortran でコンパイルすると、このエラーは発生しません。f2py でコンパイルした場合の違いと、これらのエラーを修正するにはどうすればよいですか?

サンプル ファイル にmoddata.f90は、次のコードが含まれています。

そして私はコンパイルします

そして、私はこれらのエラーを受け取ります:

integer, parameter :: nelem=3前に再定義しinteger, dimension(nelem), intent(in) :: yて再コンパイルすると、

real(kind=dp)各宣言で同じエラーが発生し、

dpそのため、関数内でbyを再定義する必要integer, parameter :: dp = selected_real_kind(15)があります。そして、それは機能します。

このモジュールを fortran ラッパーでコンパイルすると、これらのエラーは発生しません。なぜnelemand dpin the function が f2py で適切にスコープされていないのだろうか?

0 投票する
4 に答える
795 参照

python - Fortran の単変量 Horner が NumPy の対応物よりも高速であるのに、二変量 Horner がそうでないのはなぜですか?

Pythonで多項式計算を実行したいです。polynomialパッケージのnumpy速度は私には十分ではありません。したがって、Fortran でいくつかの関数を書き直して、f2pyPython に簡単にインポートできる共有ライブラリを作成することにしました。現在、一変量および二変量の多項式評価のルーチンを、numpy対応するものに対してベンチマークしています。

一変量ルーチンでは、ホーナーの方法を使用しnumpy.polynomial.polynomial.polyvalます。numpy多項式の次数が増えるにつれて、Fortran ルーチンが対応するルーチンよりも高速になる要因が増加することを観察しました。

二変量ルーチンでは、ホーナーの方法を 2 回使用します。最初に y で、次に x で。残念ながら、多項式の次数を増やすと、numpy対応するものが追いつき、最終的に私の Fortran ルーチンを超えることがわかりました。numpy.polynomial.polynomial.polyval2d私と同様のアプローチを使用しているため、この2番目の観察は奇妙だと思います。

この結果が、Fortran とf2py. 二変量ルーチンが低次多項式に対してのみ優れているのに対し、一変量ルーチンが常に優れているように見える理由を誰かが知っているでしょうか?

編集これ が私の最新の更新されたコード、ベンチマークスクリプト、およびパフォーマンスプロットです:

多項式.f95

ベンチマーク.py (このスクリプトを使用してプロットを作成します)

結果 ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

Steabert の提案に対するEDIT修正

上記のコードが x > 1 に対して悪い結果をもたらすことを確認するためのEDITテスト コード

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

python - Fortran ファイルを Python にインポートする

これは非常に初心者の質問ですが、Google でしばらく検索しても解決策が見つかりませんでした。Fortran 77 で記述されたいくつかのルーチンが必要な Eclipse (Linux Mint) を使用して Python コードを作成しています (コードは という名前のファイルにありますfortran_code.f)。私はf2pyファイルを取得するために使用しましたfortran_code.so。このファイルは、Python コード ( ) と同じフォルダーにあります../workspace/python_project/src。Python コードには以下のみが含まれます。

もう一度、結果は次のとおりです。

Fortran サブルーチン コードは次のとおりです。

.so ファイル (fortran_code.so) を取得するには、次を使用します。

f2py のバージョンは 2 で、Python のバージョンは 2.7.4 です。

この問題を解決するための助けは非常に役に立ちます。

ありがとう!

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

python - f2pyを使用するためのWinPythonのpythonパスの設定

Windows 7 のコピーに Winpython ディストリビューションをインストールしました。コピー先のフォルダー内から iPython コンソールやその他のアイテムをディストリビューションから起動すると、正常に動作します。

numpy の f2py モジュールを使用して、Python から Fortran サブルーチンを呼び出せるようにしたいと考えています。私の理解では、f2py はコマンド ラインから呼び出す必要がありますが、システムは f2py を見つけられないようで、ImportError: no module named siteフラグの有無にかかわらず呼び出すと戻ります。コマンドラインから python 自体を実行しようとすると、この同じエラーが返されます。

手動で Winpython ディレクトリ (例: C:\Users\AGK\WinPython-32bit-2.7.5.3\python-2.7.5) に 移動し、f2py -c --help-fcompilerそこに f2py があるかどうかを確認するために呼び出すと、次のエラーが表示されます。

このエラーの意味や、Winpython で f2py を使用する方法を説明してもらえますか? ありがとう!

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

python - f2py 停止コマンドの同義語

必要なときにいつでも Python から呼び出される Fortran コードがあります。Fortran の計算でエラーが発生する場合があり、これはコマンド STOP で処理されます。これにより、fortran コードと Python コードの両方が完全に停止します。ただし、実行を続けるには python が必要です。Fortran コードを停止しても Python に影響しない他のコマンドはありますか?

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

python - f2py 使用モジュール - 署名ファイル

モジュール dimpar を使用している署名ファイルを作成しました。署名ファイルを使用してコンパイルしようとすると、f2py は msects と maxpar を認識せず、結果として次のようになります。

これらのパラメータがモジュールからのものであることを f2py に理解させるにはどうすればよいですか?

ありがとう

署名ファイル:

モジュール dimpar :

問題を再現するためのサンプルコードを次に示します。

dimpar.f90

Array.f90

コンパイルしたら、次を実行します。