我有一個子程序,計算一個大型數組並將其寫入文件。我試圖將其轉換爲返回該數組的函數。然而,我得到了一個非常奇怪的錯誤,這似乎與我返回一個數組有關。當我嘗試返回一個浮點數(作爲測試)時,它工作得很好。編譯f90函數,返回數組使用f2py
這裏的MWE,這是我從蟒蛇打電話與mwe('dir', 'postpfile', 150, 90.)
:
FUNCTION mwe(dir, postpfile, nz, z_scale)
IMPLICIT NONE
INTEGER :: nz
REAL(KIND=8) :: z_scale
CHARACTER(len=100) :: postpfile
CHARACTER(len=100) :: dir
REAL(kind=8) :: mwe
print*,'dir ', dir
print*,'postpfile ', postpfile
print*,'nz ', nz
print*,'Lz ', z_scale
mwe = 4.5d0
END FUNCTION mwe
這工作得很好,版畫,如預期:
dir dir
postpfile postpfile
nz 150
Lz 90.000000000000000
但是,如果我定義函數作爲數組:
FUNCTION mwe(dir, postpfile, nz, z_scale)
IMPLICIT NONE
INTEGER :: nz
REAL(KIND=8) :: z_scale
CHARACTER(len=100) :: postpfile
CHARACTER(len=100) :: dir
REAL(KIND=8),DIMENSION (2,23) :: mwe
print*,'dir ', dir
print*,'postpfile ', postpfile
print*,'nz ', nz
print*,'Lz ', z_scale
mwe = 4.5d0
END FUNCTION mwe
然後它打印此:
dir postpfile
postpfile ��:����������k�� 2����[email protected](����H���;�!��v
nz 0
Segmentation fault (core dumped)
我正在運行f2py版本2,NumPy 1.11.1和Python 3.5.1。
編輯
我與f2py -c -m fmwe fmwe.f90
編譯和調用函數與mwe('dir', 'postpfile', 150, 90.)
。
@JonatanÖström下面是一個新問題。這樣你可以測試我的MWE。 – TomCho
這些代碼片段是相同的。 –
@ŁukaszRogalski我的壞。只是修復它。 – TomCho