[petsc-users] KSPMonitorSingularValue

Matthew Knepley knepley at gmail.com
Fri Oct 21 10:19:53 CDT 2011


On Fri, Oct 21, 2011 at 7:48 AM, Klaij, Christiaan <C.Klaij at marin.nl> wrote:

> > If you just want to see the monitor, why not use the command line or
> > PetscOptionsSetValue()?
>
> I have three ksp's: one for the momentum eqs (GMRES) and one for
> the pressure eq (CG) inside the SIMPLE preconditioner and one for
> the matrix-free coupled mass-momentum system (FGMRES).  The
> command line shows me results for all but right now I'm only
> interested in monitoring FGMRES on the coupled system.
>
>
>
>
> > This is the code for setting up the monitor, you can call the part inside
> > the if statement yourself if you like.
> >
> >     ierr = PetscOptionsString("-ksp_monitor_singular_value","Monitor
> > singular
> >
> values","KSPMonitorSet","stdout",monfilename,PETSC_MAX_PATH_LEN,&flg);CHKERRQ(ierr);
> >     if (flg) {
> >       ierr = KSPSetComputeSingularValues(ksp,PETSC_TRUE);CHKERRQ(ierr);
> >       ierr =
> >
> PetscViewerASCIIOpen(((PetscObject)ksp)->comm,monfilename,&monviewer);CHKERRQ(ierr);
> >       ierr =
> > KSPMonitorSet(ksp,KSPMonitorSingularValue,monviewer,(PetscErrorCode
> > (*)(void**))PetscViewerDestroy);CHKERRQ(ierr);
> >     }
>
> I'm still confused whether it is supposed to work with FGMRES,
> the manual states only CG and GMRES. (Besides, I'm using fortran)
>
>
>
> > How are you applying the action of the linear operator? If you use finite
> > differencing, it could be inaccurate. Is this incompressible or a
> low-Mach
> > compressible formulation? Try -ksp_monitor_true_residual, if the true
> > residual drifts from the unpreconditioned residual computed by FGMRES,
> the
> > Krylov space could be losing orthogonality. You can try
> > -ksp_gmres_modifiedgramschmidt. Are you losing a lot of progress in
> > restarts?
>
> It's incompressible Navier-Stokes. No finite differencing, the
> action is computed directly without approximations. It's right
> preconditioning, so preconditioned and true residual should be
> the same. I don't get any progress, the residual is stagnating
> from the very first iteration way before any restart.
>
> Regarding modified Gram Schmidt, I tried to set it as follows:
>
> call
> KSPGMRESSetOrthogonalization(ksp,KSPGMRESModifiedGramSchmidtOrthogonalization,ierr)
>
> But my compiler tells me:
>
> This name does not have a type, and must have an explicit type.
> [KSPGMRESMODIFIEDGRAMSCHMIDTORTHOGONALIZATIO]
>

It looks like you have a line length problem.

   Matt


> (petsc-3.1-p7, fortran with "use petscksp" and #include
> "finclude/petsckspdef.h")
>
>
> dr. ir. Christiaan Klaij
> CFD Researcher
> Research & Development
> E mailto:C.Klaij at marin.nl
> T +31 317 49 33 44
>
> MARIN
> 2, Haagsteeg, P.O. Box 28, 6700 AA Wageningen, The Netherlands
> T +31 317 49 39 11, F +31 317 49 32 45, I www.marin.nl
>
>


-- 
What most experimenters take for granted before they begin their experiments
is infinitely more interesting than any results to which their experiments
lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20111021/6f058128/attachment.htm>


More information about the petsc-users mailing list