<div dir="ltr">Michel,<br><br>I would recommend investing the time to write your C/C++ wrapper code a little higher up around the Newton iteration, since PETSc provides a great abstraction interface for it.&nbsp; Then you could write code to build the matrix (or assemble a matrix-free routine!) in C/C++, and pass the parameters in from there.<br>
<br>~Aron<br><br><div class="gmail_quote">On Tue, Jul 22, 2008 at 12:12 AM, Matthew Knepley &lt;<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div class="Wj3C7c">On Mon, Jul 21, 2008 at 10:14 PM, Barry Smith &lt;<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>&gt; wrote:<br>
&gt;<br>
&gt; On Jul 21, 2008, at 7:57 PM, Michel Cancelliere wrote:<br>
&gt;<br>
&gt;&gt; Hi, I am a new user of PETSc. I am working in Reservoir Simulation and I<br>
&gt;&gt; have been developing the simulator inside Matlab. I have some question in<br>
&gt;&gt; order to understand better my possibilities of success in what I want to do:<br>
&gt;&gt;<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp;• I want to solve the linear system obtained from the inner<br>
&gt;&gt; iterations in the newton method using PETSc, is it possible to communicate<br>
&gt;&gt; in an efficient way PETSc &nbsp;with Matlab to do that? I now that I can write<br>
&gt;&gt; binary files and then read with PETSc but due the size of the matrix it is a<br>
&gt;&gt; very time-expensive way. Where i can find some examples? I look at the<br>
&gt;&gt; examples within the package but I could not find it. \<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp;• It is possible to call PETSc library inside Matlab? Using the Mex<br>
&gt;&gt; files and Matlab compiler?<br>
&gt;<br>
&gt; &nbsp; There is no code to do this. It is possible but pretty complicated to<br>
&gt; write the appropriate Mex code. (Because<br>
&gt; each Mex function is a separate shared library you cannot just write a Mex<br>
&gt; function for each PETSc function since they<br>
&gt; would not share the PETSc global variables. You would have to write one Mex<br>
&gt; function that is a &quot;gatekeeper&quot; and calls<br>
&gt; the requested PETSc function underneath. I&#39;ve monkeyed with this a few times<br>
&gt; but did not have the time/energy/intellect<br>
&gt; to write code to automate this process. Give me 300,000 dollars and we could<br>
&gt; hire someone to write this :-)<br>
&gt;<br>
&gt; &nbsp;You might look at the &quot;newly improved&quot; socket interface in petsc-dev<br>
&gt; (<a href="http://www-unix.mcs.anl.gov/petsc/petsc-as/developers/index.html" target="_blank">http://www-unix.mcs.anl.gov/petsc/petsc-as/developers/index.html</a>).<br>
&gt; With this you write a stand alone C PETSc program that waits at a socket,<br>
&gt; receive the matrix and right hand side and then<br>
&gt; sends back the solution. The code for marshalling the matrices and vector is<br>
&gt; common between the sockets and binary files.<br>
&gt; On the Matlab side you create a &quot;file&quot; that is actually a socket connection.<br>
&gt; See src/sys/viewer/impls/socket/matlab This may<br>
&gt; take a little poking around and you asking us a couple of questions to get<br>
&gt; it.<br>
&gt; Note there is no inherent support for parallelism on the PETSc side with<br>
&gt; this setup but I think it is possible.<br>
<br>
</div></div>I personally think this would be much easier in Sage than in Matlab<br>
proper. In fact,<br>
with Sage you could use petsc4py directly, and directly access the<br>
data structures<br>
as numpy arrays if necessary.<br>
<br>
 &nbsp;Matt<br>
<div><div></div><div class="Wj3C7c"><br>
&gt; &nbsp; Barry<br>
&gt;<br>
&gt;<br>
&gt;&gt; Thank you very much for your time,<br>
&gt;&gt;<br>
&gt;&gt; Michel Cancelliere<br>
&gt;<br>
&gt;<br>
<br>
<br>
<br>
</div></div><font color="#888888">--<br>
What most experimenters take for granted before they begin their<br>
experiments is infinitely more interesting than any results to which<br>
their experiments lead.<br>
-- Norbert Wiener<br>
<br>
</font></blockquote></div><br></div>