<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Tue, 10 Jul 2018 at 20:17, Ingo Gaertner <<a href="mailto:ingogaertner.tus@gmail.com">ingogaertner.tus@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello,<div>can I find somewhere an example how to wrap my own PETSc-based code so that it can be used together with petsc4py?</div><div><br></div><div>Let's assume I have a C function, which I want to access from python:</div><div>Vec createMyVec();</div><div><br></div><div>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?</div><div><br></div><div>If the mpi4py wrapping technique is described somewhere, this may help as well, although some working example would be perfect.</div><div><br></div><div>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.</div><div>(I am using petsc-3.9.1 built from source and mpi4py installed using pip on Ubuntu 18.04.)</div><div><br></div></div></blockquote><div><br></div><div>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:</div><div><br></div><div>mpi4py_comm = petsc4py_comm.tompi4py() # mpi4py <-- petsc4py</div><div><span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span style="text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">petsc4py_comm = PETSc.Comm(</span>mpi4py_comm) # <span style="text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">petsc4py</span> <-- <span style="text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">mpi4py</span></span><br></div><div><span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span style="text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><br></span></span></div><div><span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span style="text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">About SWIG, are you using typemaps written by yourself, or the typemaps provided by petsc4py? Have you looked at "demo/wrap-swig" in petsc4py sources?</span></span></div><div><span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span style="text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><br></span></span></div></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">Lisandro Dalcin<br>============<br>Research Scientist<br>Computer, Electrical and Mathematical Sciences & Engineering (CEMSE)<br>Extreme Computing Research Center (ECRC)<br>King Abdullah University of Science and Technology (KAUST)<br><a href="http://ecrc.kaust.edu.sa/" target="_blank">http://ecrc.kaust.edu.sa/</a><br><br>4700 King Abdullah University of Science and Technology<br>al-Khawarizmi Bldg (Bldg 1), Office # 0109<br>Thuwal 23955-6900, Kingdom of Saudi Arabia<br><a href="http://www.kaust.edu.sa" target="_blank">http://www.kaust.edu.sa</a><br><br>Office Phone: +966 12 808-0459</div></div>