On Tue, 10 Jul 2018 at 20:17, Ingo Gaertner <ingogaertner....@gmail.com>

> Hello,
> can I find somewhere an example how to wrap my own PETSc-based code so
> that it can be used together with petsc4py?
> Let's assume I have a C function, which I want to access from python:
> Vec createMyVec();
> I have written a SWIG interface file to generate a python wrapper for this
> function. The wrapper works, but I cannot use the return value as input for
> mpi4py routines that expect a Vec, because mpi4py's Vec type is different
> from the SWIG generated Vec type in my python wrapper. Any idea, how I can
> create mpi4py-compatible types?
> If the mpi4py wrapping technique is described somewhere, this may help as
> well, although some working example would be perfect.
> As a final remark, I'd like to keep my project decoupled from mpi4py.
> Therefore, including my extensions in the build process of mpi4py is not
> quite what I am looking for, although I could live with this as a
> workaround if no other solution is possible.
> (I am using petsc-3.9.1 built from source and mpi4py installed using pip
> on Ubuntu 18.04.)
Sorry, but I'm quite confused. Why are you talking about mpi4py? There is
no "Vec" in mpi4py. The only type intersection between petsc4py and mpi4py
is "Comm" for MPI communicators, in that case you should use the following
to make the conversions:

mpi4py_comm = petsc4py_comm.tompi4py() # mpi4py <-- petsc4py
petsc4py_comm = PETSc.Comm(mpi4py_comm) # petsc4py <-- mpi4py

About SWIG, are you using typemaps written by yourself, or the typemaps
provided by petsc4py? Have you looked at "demo/wrap-swig" in petsc4py

Lisandro Dalcin
Research Scientist
Computer, Electrical and Mathematical Sciences & Engineering (CEMSE)
Extreme Computing Research Center (ECRC)
King Abdullah University of Science and Technology (KAUST)

4700 King Abdullah University of Science and Technology
al-Khawarizmi Bldg (Bldg 1), Office # 0109
Thuwal 23955-6900, Kingdom of Saudi Arabia

Office Phone: +966 12 808-0459

Reply via email to