<div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">- There are probably functions for which pure Python does not deliver the necessary speed (and PETSc probably does not provide the operations needed). I am researching how to rewrite such performance-critical parts in C/C++, and embed them in the Python code - using methods like scipy.weave or ctypes. [2]<br>
</blockquote><div><br></div><div>There are a bunch of examples of doing this in the petsc4py repository in demo/.  Start with Cython as your wrapper.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

- My question: Is it possible to share PETSc objects between the Python code and the embedded C/C++ code? For example, pass a PETSc.Mat via Python, operate on it with C/C++ and return the matrix to Python?<br></blockquote>
<div><br></div><div>Yes.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
In general: Do you think my approach makes sense? I am new to PETSc and have not done high performance Python before, so I hope to learn from your answers, hints and criticism.<br></blockquote><div><br></div><div>It depends on the project, but this is a reasonable path to consider.</div>
<div><br></div><div>A </div></div></div>