
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