[f2py] f2py-users Digest, Vol 63, Issue 4

Daniel Welling dantwelling at gmail.com
Tue Jun 1 04:47:58 EEST 2010


Pearu's suggestion definitely works.  I did find, however, that I needed to
transpose my numpy arrays before passing them off to my C function.

Thanks for the help; this is a huge speed up in field line tracing!

-dw

On Sun, May 30, 2010 at 3:00 AM, <f2py-users-request at cens.ioc.ee> wrote:

> Send f2py-users mailing list submissions to
>        f2py-users at cens.ioc.ee
>
> To subscribe or unsubscribe via the World Wide Web, visit
>        http://cens.ioc.ee/mailman/listinfo/f2py-users
> or, via email, send a message with subject or body 'help' to
>        f2py-users-request at cens.ioc.ee
>
> You can reach the person managing the list at
>        f2py-users-owner at cens.ioc.ee
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of f2py-users digest..."
>
>
> Today's Topics:
>
>   1. Re: f2py, C, and multidimensional arrays. (Josef Koller)
>   2. Re: f2py, C, and multidimensional arrays. (Pearu Peterson)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Sat, 29 May 2010 11:50:02 -0600
> From: Josef Koller <jkoller at lanl.gov>
> Subject: Re: [f2py] f2py, C, and multidimensional arrays.
> To: For users of the f2py program <f2py-users at cens.ioc.ee>
> Message-ID: <837CB1AB-C098-495A-A205-71861DD6F0AB at lanl.gov>
> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes
>
> why not use SWIG? ~Josef
>
> On May 28, 2010, at 11:41 PM, Daniel Welling wrote:
>
> > Greetings.  I am new to F2py and am trying to use it to wrap some
> > simple C functions.  I've had success with scalars and vectors, but
> > cannot get any multidimensional arrays to work correctly.  An example:
> >
> > /* bar.c */
> > void bar(int n, int m, double **x) {
> >   int i, j;
> >   for (i=0; i<n; i++)
> >     for (j=0; j<m; j++)
> >       printf("Position %i, %i = %.3f\n", i, j, x[i][j]);
> > }
> >
> > ! wrapper m.pyf
> > python module m
> > interface
> >   subroutine bar(n, m, x)
> >     intent(c) bar
> >     intent(c)
> >     integer intent() :: n
> >     integer intent() :: m
> >     double precision intent(in) :: x(n,m)
> >   end subroutine bar
> > end interface
> > end python module m
> >
> > Build shared object:
> > $ f2py2.5 foo.c foo.pyf -c
> >
> > Try to run it:
> > >>>import m
> > >>>import numpy as np
> > >>>dog = np.zeros((0,0))
> > >>>m.bar(dog)
> > Bus error
> >
> > And that's it.  It drops me out of ipython/python shell and back to
> > the bash prompt.  I cannot find any examples similar to this, nor
> > any mailing list threads on this topic.  Does anyone have any
> > experience with such examples?
> >
> > Thanks for your help.
> > _______________________________________________
> > f2py-users mailing list
> > f2py-users at cens.ioc.ee
> > http://cens.ioc.ee/mailman/listinfo/f2py-users
>
> --
> Josef Koller, Ph.D.            (TSPA/Correspondence)
> Space Science and Applications, ISR-1, MS D466
> Los Alamos National Laboratory, NM 87545-1663
> Phone: (505) 665 3399           http://www.koller.info
> Fax:      (505) 665 7395       email: jkoller at lanl.gov
>
>
>
>
>
>
>
>
>
> ------------------------------
>
> Message: 2
> Date: Sun, 30 May 2010 00:14:52 +0300
> From: Pearu Peterson <pearu.peterson at gmail.com>
> Subject: Re: [f2py] f2py, C, and multidimensional arrays.
> To: For users of the f2py program <f2py-users at cens.ioc.ee>
> Message-ID: <4C0183CC.1060408 at cens.ioc.ee>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
>
>
> Daniel Welling wrote:
> > Greetings.  I am new to F2py and am trying to use it to wrap some simple
> > C functions.  I've had success with scalars and vectors, but cannot get
> > any multidimensional arrays to work correctly.  An example:
> >
> > /* bar.c */
> > void bar(int n, int m, double **x) {
>                                 ^-- f2py cannot wrap C functions
> that have pointer to pointers arguments. A rule of thumb is that
> f2py can wrap C functions that can be called from Fortran. This
> example is not such a function. Try wrapping the following
> example with the same m.pyf file:
>
> void bar(int n, int m, double *x)
> {
>   int i, j;
>   for (i=0; i<n; i++)
>     for (j=0; j<m; j++)
>       printf("Position %i, %i = %.3f\n", i, j, (x+i*m)[j]);
> }
>
> Pearu
>
>
>
> ------------------------------
>
> _______________________________________________
> f2py-users mailing list
> f2py-users at cens.ioc.ee
> http://cens.ioc.ee/mailman/listinfo/f2py-users
>
>
> End of f2py-users Digest, Vol 63, Issue 4
> *****************************************
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cens.ioc.ee/pipermail/f2py-users/attachments/20100531/c8aecc75/attachment.htm 


More information about the f2py-users mailing list