Thanks Dr. Smith,<div>  I will work on DM later after I know how to do this.</div><div>  BTW, what is the DMMG interface you are talking about? is it DMMGSetKSP()? if so, that&#39;s is my problem. At the 2nd time of using DMMGSetKSP() in the main function, it does not call the __function__ to compute the right hand side. &gt;_&lt; any suggestions on that?</div>
<div><br></div><div>best,</div><div>Alan</div><div><br><div class="gmail_quote">On Sun, Oct 2, 2011 at 3:56 PM, Barry Smith <span dir="ltr">&lt;<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div></div><div class="h5"><br>
On Oct 2, 2011, at 12:04 PM, Alan Wei wrote:<br>
<br>
&gt; Dear all,<br>
&gt;     I hope you&#39;re having a nice weekend. I&#39;m still using this program to solve Poisson Equations. After several discussions before, I know how to use it in general. However, I met a problem when I want to use it twice to solve a same Poisson Equations with two different RHS.(same boundary conditions)<br>

&gt; 1) after I&#39;ve done my first computation of a Poisson equation, I use DMMGSetKSP() again setting up another (*rhs) .<br>
&gt;     However, I found that this DMMGSetKSP does not call the function that makes the new (*rhs), i.e. ComputeNewRHS().<br>
&gt; 2) In the first tempt to solve the Poisson equation with old RHS, DMMGSetKSP called the function making the old (*rhs). If I comment out the first DMMGSetKSP(), which creates the old (*rhs), then this DMMGSetKSP, which create the new (*rhs), can call the function making the new (*rhs)<br>

&gt; 2) I read the manual of &quot;DMMGSetKSP&quot; saying For linear problems may be called more than once, reevaluates the matrices if it is called more than once. Call DMMGSolve() directly several times to solve with the same matrix but different right hand sides. Does this mean that I do not need to call DMMGSetKSP if I need to solve the same Poisson equation with another RHS? If so, how can I pass my new RHS to dmmg?<br>

<br>
</div></div>    With the DMMG interface you provide a __function__ to compute the right hand side, if you want to solve with several right hand sides you just have the rhs function compute a different right hand side each time it is called corresponding to the right hand sides you want to compute<br>

<br>
    By the way the DMMG is being deprecated and will not be in the next PETSc release so we recommend moving away from it and just using the KSP linear solver interface (see the manual page for KSPSetDM() and several examples that us KSPSetDM() in the src/ksp/ksp/examples/tutorials directory.<br>

<br>
   Barry<br>
<br>
&gt;<br>
&gt; thanks in advance,<br>
&gt; Alan<br>
&gt;<br>
<br>
</blockquote></div><br></div>