Re: [f2py] allocatable arrays

Pearu Peterson <[email protected]> Wed, 17 Nov 2010 15:47:36 +0200
Newsgroups gmane.comp.python.f2py.user
Message-ID <[email protected]>
Ok.

What Fortran compiler are you using? I am on gfortran 4.4.5.
Could you also try more recent numpy out to check whether
it is numpy.f2py bug (that could be fixed in my case: numpy from svn) or 
some compiler issue?

Pearu

On 11/17/2010 03:36 PM, Benjamin Kutz wrote:
> Hi,
>
> thanks for your fast response.
> You are right. I've made a typing error but only in my e-mail.
> The correct syntax is:
>
>   >>>from something import *
>   >>>mod.work()
>   >>>print 'test',mod.test
>
> My numpy version: numpy-1.4.1
>
>   >>>  from something import*
>   >>>  mod.work()
>   >>>  mod.test
> I receive no output. With the print statement I receive the wrong
> values, as listed below.
>
> Thanks.
> Regards,
> Benjamin
>
>
>
> Am 17.11.2010 13:48, schrieb Pearu Peterson:
>> Hi,
>>
>> Your example works fine here:
>> f2py -c wrap.pyf mod.f90
>>    >>>   import something
>>    >>>   something.mod.work()
>>    >>>   something.mod.test
>>        array([ 60.5,  60.5,  60.5,  60.5,  60.5], dtype=float32)
>>
>> What numpy version are you using?
>> Btw, you are calling mod.test. But it is not callable. So your example
>> usage must be wrong.
>>
>> Pearu
>>
>> On 11/17/2010 02:24 PM, Benjamin Kutz wrote:
>>
>>> Hi everybody,
>>>
>>> I try to work with allocatable arrays. Therfore I ask for your help.
>>> I have programmed the following code.
>>>
>>> Fortran:
>>> /module mod
>>>          real   , dimension (:)  , allocatable  :: test
>>> contains
>>> subroutine work
>>> integer i
>>> i=1
>>> allocate ( test(5) )
>>> do i=1,5
>>>      test(i)=60.5
>>> enddo
>>> end subroutine/
>>> end module mod
>>>
>>> wrap.pyf:
>>>
>>> /python module something ! in
>>>        interface  ! in :something
>>>            module mod ! in : something:mod.F
>>>                real allocatable,dimension(:) :: test
>>>                subroutine work ! in : something:mod.F
>>>                end subroutine work
>>>            end module mod
>>>        end interface
>>> end python module something
>>> /
>>> python:
>>>
>>> />>>from something import *
>>>    >>>mod.test()
>>>    >>>print 'test',mod.test
>>> /
>>> So far everything works fine.
>>> Python prints the allocated array, but with the following values:
>>>
>>> test [ -1.58818684e-23   3.26132798e+00  -1.58818684e-23   3.26132798e+00
>>>      -1.58818684e-23]
>>>
>>> It is obvious, that those values are wrong. Can anybody see a mistake in
>>> my syntax? Or is it even not possible to do what I want?
>>> I know the example in the manual, so please give me further support.
>>> Thank you very much in advance.
>>>
>>> Regards
>>> Benjamin
>>>
>>>
>>>
>>> _______________________________________________
>>> f2py-users mailing list
>>> f2py-users-Y4l6ocDipWCuvFJfX82//[email protected]
>>> http://cens.ioc.ee/mailman/listinfo/f2py-users
>>>
>> _______________________________________________
>> f2py-users mailing list
>> f2py-users-Y4l6ocDipWCuvFJfX82//[email protected]
>> http://cens.ioc.ee/mailman/listinfo/f2py-users
>>
>
>
> _______________________________________________
> f2py-users mailing list
> f2py-users-Y4l6ocDipWCuvFJfX82//[email protected]
> http://cens.ioc.ee/mailman/listinfo/f2py-users