【发布时间】:2013-02-05 22:32:23
【问题描述】:
我有以下由 python 调用的子程序的开始:
从 python 调用:libomp.cic(pos,mpart,boxsize,dim,npart)
subroutine cic(pos,mpart,boxsize,dim,npart,mesh)
use omp_lib
implicit none
real*8 mpart
!f2py intent(in) :: mpart
real*8 boxsize
!f2py intent(in) :: boxsize
integer dim
!f2py intent(in) :: dim
integer*8 npart
!f2py intent(in) :: npart
real*8, dimension(0:dim-1,0:dim-1,0:dim-1) :: mesh
!f2py intent(out) :: mesh
real*8, dimension(npart,3) :: pos
!f2py intent(in) :: pos
运行python脚本时出错:
error: (shape(pos,0)==npart) failed for 1st keyword npart: cic:npart=47099622
WARNING: Failure executing file: <test.py>
由于某种原因,当我将 npart 设置为整数但它无法从 python 接收 npart 并动态创建数组 pos 时,它可以工作。它适用于 mesh 使用 dim 但不适用于 pos,为什么?它与调用它们的顺序有关吗?
【问题讨论】:
-
评论:为什么不直接在 Fortran 中指定意图?
-
我可以做到...任何一种方式都应该有效。我刚刚检查过 - 同样的错误。
-
你能发布一些测试脚本的相关部分吗?