[Numpy-discussion] a simple question about f2py

Pauli Virtanen ptvirtan@elisanet...
Wed Oct 24 09:23:06 CDT 2007


Lisandro Dalcin <dalcinl@gmail.com> kirjoitti: 
> Im trying to use f2py to wrap some fortran functions wich receive as
> argument PETSc objects. The usual way to implement this with
> PETSc+fortran is to do something like this
> 
> soubrutine matvec(A,x,y)
>  Mat A
>  Vec x
>  Vec y
> end soubrutine
> 
> The 'Mat' and 'Vec' types are actually integers of appropriate kind,
> PETSc uses a #define to
> define them. I there any way I can teach/hack f2py to translate
> Mat/Vec/etc. to a normal fortran type?

You can tell f2py to use a different type for the argument as follows:

    subroutine foo(a)
        !f2py integer, dimension(10), intent(inout) :: a
        Mat a
    end subroutine foo

This way, f2py will treat the parameter as a chunk of memory of size 10*sizeof(integer), and disregard any following definitions for it. Using a hack like this, it's also possible to pass derived type object pointers,  "type(Typename), pointer", from the Python side to the Fortran side, as opaque handles.

-- 
Pauli Virtanen


More information about the Numpy-discussion mailing list