F2PYを使用して関数と仮定形状配列を引数とするFortranサブルーチンをラップしようとしています。これによりエラーが発生します。私はGNU Fortran(GCC)4.8.5 20150623(Red Hat 4.8.5-11)とScientific Linux 7.3のF2PYバージョン2を使用しています。私は、これは(ドイツ語から翻訳され、次のエラーが発生しコールバック引数と仮定した形状の配列引き数を持つサブルーチンを持つF2PY
f2py -m pymod -h sign.pyf callback.f90
f2py -c sign.pyf callback.f90
とターミナルでラップ
!file callback.f90
subroutine sub(arr,func)
implicit none
integer,intent(in),dimension(:) :: arr
external func
integer :: func
integer :: i
i = arr(1)
print *, func(i)
end subroutine sub
:
最小限の例では、ファイル「callback.f90」になります):
gfortran:f77: /usr/tmp/tmpsADmTS/src.linux-x86_64-2.7/pymod-f2pywrappers.f
/usr/tmp/tmpsADmTS/src.linux-x86_64-2.7/pymod-f2pywrappers.f:6.19:
use sub__user__routines
1
Error: Module file »sub__user__routines.mod« at (1) can't be opened
for reading: File not found
ただし、これは完璧ですy fine、の場合は形状ではなく固定サイズです。想定された形状の配列を持つF2PYもコールバック引数が含まれていない限り、私にとってうまくいきます。したがって、問題はこれら2つの間の相互作用のように思われます。
関連する場合は、この最近の質問を参照してください。https://stackoverflow.com/questions/44073679/errors-when-using-a- fortran-call-back-function-in-f2pyこのサイトでさらに検索してみてください。残念ながら、f2pyはこの領域では理想的ではありません。 –
@VladimirF:ありがとう、私はこれが関連しているとは思わないが、私のエラーはコールバック引数と形状配列が両方とも使用されている場合にのみ発生するためです。 –
代わりに 'dimension(*) 'を使ってみましたか? – percusse