On Fri, Oct 21, 2011 at 7:48 AM, Klaij, Christiaan <span dir="ltr">&lt;<a href="mailto:C.Klaij@marin.nl">C.Klaij@marin.nl</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
&gt; If you just want to see the monitor, why not use the command line or<br>
&gt; PetscOptionsSetValue()?<br>
<br>
I have three ksp&#39;s: one for the momentum eqs (GMRES) and one for<br>
the pressure eq (CG) inside the SIMPLE preconditioner and one for<br>
the matrix-free coupled mass-momentum system (FGMRES).  The<br>
command line shows me results for all but right now I&#39;m only<br>
interested in monitoring FGMRES on the coupled system.<br>
<br>
<br>
<br>
<br>
&gt; This is the code for setting up the monitor, you can call the part inside<br>
&gt; the if statement yourself if you like.<br>
&gt;<br>
&gt;     ierr = PetscOptionsString(&quot;-ksp_monitor_singular_value&quot;,&quot;Monitor<br>
&gt; singular<br>
&gt; values&quot;,&quot;KSPMonitorSet&quot;,&quot;stdout&quot;,monfilename,PETSC_MAX_PATH_LEN,&amp;flg);CHKERRQ(ierr);<br>
&gt;     if (flg) {<br>
&gt;       ierr = KSPSetComputeSingularValues(ksp,PETSC_TRUE);CHKERRQ(ierr);<br>
&gt;       ierr =<br>
&gt; PetscViewerASCIIOpen(((PetscObject)ksp)-&gt;comm,monfilename,&amp;monviewer);CHKERRQ(ierr);<br>
&gt;       ierr =<br>
&gt; KSPMonitorSet(ksp,KSPMonitorSingularValue,monviewer,(PetscErrorCode<br>
&gt; (*)(void**))PetscViewerDestroy);CHKERRQ(ierr);<br>
&gt;     }<br>
<br>
I&#39;m still confused whether it is supposed to work with FGMRES,<br>
the manual states only CG and GMRES. (Besides, I&#39;m using fortran)<br>
<br>
<br>
<br>
&gt; How are you applying the action of the linear operator? If you use finite<br>
&gt; differencing, it could be inaccurate. Is this incompressible or a low-Mach<br>
&gt; compressible formulation? Try -ksp_monitor_true_residual, if the true<br>
&gt; residual drifts from the unpreconditioned residual computed by FGMRES, the<br>
&gt; Krylov space could be losing orthogonality. You can try<br>
&gt; -ksp_gmres_modifiedgramschmidt. Are you losing a lot of progress in<br>
&gt; restarts?<br>
<br>
It&#39;s incompressible Navier-Stokes. No finite differencing, the<br>
action is computed directly without approximations. It&#39;s right<br>
preconditioning, so preconditioned and true residual should be<br>
the same. I don&#39;t get any progress, the residual is stagnating<br>
from the very first iteration way before any restart.<br>
<br>
Regarding modified Gram Schmidt, I tried to set it as follows:<br>
<br>
call KSPGMRESSetOrthogonalization(ksp,KSPGMRESModifiedGramSchmidtOrthogonalization,ierr)<br>
<br>
But my compiler tells me:<br>
<br>
This name does not have a type, and must have an explicit type.   [KSPGMRESMODIFIEDGRAMSCHMIDTORTHOGONALIZATIO]<br></blockquote><div><br></div><div>It looks like you have a line length problem.</div><div><br></div><div>   Matt</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
(petsc-3.1-p7, fortran with &quot;use petscksp&quot; and #include &quot;finclude/petsckspdef.h&quot;)<br>
<br>
<br>
dr. ir. Christiaan Klaij<br>
CFD Researcher<br>
Research &amp; Development<br>
E mailto:<a href="mailto:C.Klaij@marin.nl">C.Klaij@marin.nl</a><br>
T <a href="tel:%2B31%20317%2049%2033%2044" value="+31317493344">+31 317 49 33 44</a><br>
<br>
MARIN<br>
2, Haagsteeg, P.O. Box 28, 6700 AA Wageningen, The Netherlands<br>
T <a href="tel:%2B31%20317%2049%2039%2011" value="+31317493911">+31 317 49 39 11</a>, F <a href="tel:%2B31%20317%2049%2032%2045" value="+31317493245">+31 317 49 32 45</a>, I <a href="http://www.marin.nl" target="_blank">www.marin.nl</a><br>

<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener<br>