[SciPy-Dev] F2PY: failed to create intent(cache|hide)|optional array-- must have defined dimensions but got (0, )

Andreas H. lists@hilboll...
Sun Mar 11 03:45:47 CDT 2012


Hello,

I know the f2py list might be more suitable for this question, but since
that mailing list doesn't seem to work with my mailaccount (strange
enough), I hope someone can help here:

I'm trying to wrap the Fortran function sphere.f from FITPACK_. However,
when I try to call the resulting function like this::

   spherfit_smth(theta,phi,r,w=None,s=None,eps=None)

I get the following error:

   ValueError: failed to create intent(cache|hide)|optional array-- must
have defined dimensions but got (0,)

Can someone point me to what's wrong? I cannot find my mistake ...

Cheers,
Andreas.

.. _FITPACK: http://www.netlib.org/dierckx/



     subroutine
spherfit_smth(iopt,m,teta,phi,r,w,s,ntest,npest,eps,nt,tt,np,&
          tp,c,fp,wrk1,lwrk1,wrk2,lwrk2,iwrk,kwrk,ier)
       !  nt,tt,np,tp,c,fp,ier = spherfit_smth(teta,phi,r,[w,s,eps])

       fortranname sphere

       integer intent(hide) :: iopt=0
       integer intent(hide),depend(teta),check(m>=2) :: m=len(teta)
       real*8 dimension(m) :: teta
       real*8 dimension(m),depend(m),check(len(phi)==m) :: phi
       real*8 dimension(m),depend(m),check(len(r)==m) :: r
       real*8 optional,dimension(m),depend(m),check(len(w)==m) :: w = 1.0
       real*8 optional,check(0.0<=s),depend(m) :: s = m
       integer intent(hide),depend(m),check(ntest>=8) :: ntest = 8+sqrt(m/2)
       integer intent(hide),depend(m),check(npest>=8) :: npest = 8+sqrt(m/2)
       real*8 optional,check(0.0<eps && eps<1.0) :: eps = 1e-16
       integer intent(out) :: nt
       real*8 dimension(nt),intent(out) :: tt
       integer intent(out) :: np
       real*8 dimension(np),intent(out) :: tp
       real*8 dimension((ntest-4)*(npest-4)),
            depend(ntest,npest),intent(out) :: c
       real*8 intent(out) :: fp
       real*8 dimension(lwrk1),intent(cache,hide),depend(lwrk1) :: wrk1
       integer intent(hide),depend(m,ntest,npest) &
            :: lwrk1=calc_spherfit_lwrk1(m,ntest,npest)
       real*8 dimension(lwrk2),intent(cache,hide),depend(lwrk2) :: wrk2
       integer intent(hide),depend(ntest,npest) &
            :: lwrk2=calc_spherfit_lwrk2(ntest,npest)
       integer dimension(kwrk),depend(kwrk),intent(cache,hide) :: iwrk
       integer intent(hide),depend(m,ntest,npest) &
            :: kwrk=m+(ntest-7)*(npest-7)
       integer intent(out) :: ier
     end subroutine spherfit_smth



More information about the SciPy-Dev mailing list