F2PY将整数更改为数组???
我有一个简单的模块,该模块在plot3d文件上执行基本操作
(以下).我包裹着:
f2py -fcompiler = gfortran -m plot3d -c prec.f90 plot3d.f90
这似乎很好,但是我得到了一些意外的结果...
['imax','jmax','kmax','mg','prc','printall','readit'
'writeit2d']
阵列(409)
" 409"是正确的,但是" iMax"被声明为fortran和
现在是Python中的一个数组???有任何想法吗?
#prec.f90
模块prec
隐式没有
Integer,参数::单= selected_real_kind(p = 6,r = 37)
integer,参数:: double = selected_real_kind(p = 15,r = 200)
结束模块Prec
#plot3d.f90
模块plot3d
使用Prec
隐式没有
整数,参数:: prc =单
真实(prc),可分配,尺寸(:,:,:,::::: :: x,y,z
Integer :: MG,Imax,Jmax,Kmax
包含
!-------------
子例程readit(fname,ftype,fmg)
呢在xyz中读取plot3d,格式化,mg文件
隐式没有
字符(len = 20),意图(in):: fname,ftype
逻辑:: FMG
integer :: i,j,k,n,f = 1
选择案例(ftype)
案例("格式")
打开(单位= f,file = fname,status ='old',action ='read',
form = ftype)
如果(fmg)读(f,*)mg!仅阅读Multigrid
读(f,*)imax,jmax,kmax
分配(x(mg,imax,jmax,kmax)))
分配(y(mg,imax,jmax,kmax)))
分配(z(mg,imax,jmax,kmax)))
读(f,*)(((((x(n,,),
i,j,k),i = 1,imax),j = 1,jmax),k = 1,kmax),n = 1,mg),&
((((y(n,,,)
i,j,k),i = 1,imax),j = 1,jmax),k = 1,kmax),n = 1,mg),&
((((z(n,,
i,j,k),i = 1,imax),j = 1,jmax),k = 1,kmax),n = 1,mg)
案例('nofformated')
打开(单位= f,file = fname,status ='old',action ='read',
form = ftype)
如果(fmg)读(f)mg!仅阅读Multigrid
阅读(f)imax,jmax,kmax
分配(x(mg,imax,jmax,kmax)))
分配(y(mg,imax,jmax,kmax)))
分配(z(mg,imax,jmax,kmax)))
读(f)((((x(n,,))
i,j,k),i = 1,imax),j = 1,jmax),k = 1,kmax),n = 1,mg),&
((((y(n,,,)
i,j,k),i = 1,imax),j = 1,jmax),k = 1,kmax),n = 1,mg),&
((((z(n,,
i,j,k),i = 1,imax),j = 1,jmax),k = 1,kmax),n = 1,mg)
案例默认
写(*,*)'filetype在
停止
结束选择
关闭(f)
结束子例程读取
结束模块plot3d