[petsc-users] KSP with MatNullSpace

Shiyuan gshy2014 at gmail.com
Sat Dec 3 13:24:36 CST 2011


Hi, I traced the program on the level of KSPSolve_CG,  and I don't see the
MatNullSpace is used. Where is MatNullSpace used? Can KSP CG automatically
handle the null space provided by MatNullSpace? Or I need to change to some
other solver? The matrix is semi-positive-definite with only one zero
eigenvalue. The zero eigenvector is obtained by an eigensolver. Any
suggestion? Thanks.


Shiyuan

On Fri, Dec 2, 2011 at 11:17 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:

>
> On Dec 2, 2011, at 10:57 PM, Shiyuan wrote:
>
> > I notice that when the vector indicating the nullspace is not very
> accurate (norm(A*phi) very small but not zero), KSP (CG) will return
> KSP_INDEFINITE_PC. When b is very close to zero in AX=b, KSP (CG) has the
> same error. Is it controlled by some tolerance? How can I set the tolerance?
>
>    No it is not controlled by some tolerance, it cannot be controlled by
> some tolerance because the indication of indefiniteness is determined by
>
>     } else if ((i > 0) && (beta*betaold < 0.0)) {
>       ksp->reason = KSP_DIVERGED_INDEFINITE_PC;
>       ierr = PetscInfo(ksp,"diverging due to indefinite
> preconditioner\n");CHKERRQ(ierr);
>       break;
>
> as soon as beta*betaold is negative the entire CG algorithm breaks down
> and there is no way to recover.
>
>   Barry
>
>
>
> > Thanks.
> >
> > Shiyuan
> >
> > On Wed, Nov 23, 2011 at 5:00 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
> >
> > On Nov 23, 2011, at 1:31 PM, Shiyuan wrote:
> >
> > > I've check it in Matlab. the matrix A is symmetric and has no negative
> eigenvalues( only a zero eigen value). I've also checked that the nullspace
> is correct(  norm(A*phi)<1e-11);
> >
> >   Hmm. You can run with -ksp_view_binary and email to
> petsc-maint at mcs.anl.gov the resulting file called binaryoutput.
> >
> >   Barry
> >
> >
> > > Thanks.
> > >
> > > On Wed, Nov 23, 2011 at 1:26 PM, Barry Smith <bsmith at mcs.anl.gov>
> wrote:
> > >
> > >   Print out the matrix for a small grid then check in Matlab that it
> is symmetric and has no negative eigenvalues.
> > >
> > >   Barry
> > >
> > >
> > > On Nov 23, 2011, at 9:50 AM, Shiyuan wrote:
> > >
> > > > Hi,
> > > >     I want to solve a singular system with a known nullspace.
> However, I the KSP solve diverges with KSP_INDEFINTE_PC even if I disable
> the preconditioning by PCNONE.
> > > > this is how I setup the system. What did I do wrong? Any possible
> causes? Thanks.
> > > >
> > > >
>  ierr=MatNullSpaceCreate(PETSC_COMM_SELF,PETSC_FALSE,1,&phi,&nsp);CHKERRV(ierr);
> > > >   ierr=KSPCreate(PETSC_COMM_SELF,&ksp);CHKERRV(ierr);
> > > >
> ierr=KSPSetOperators(ksp,A,A,DIFFERENT_NONZERO_PATTERN);CHKERRV(ierr);
> > > >   ierr=KSPSetNullSpace(ksp,nsp);CHKERRV(ierr);
> > > >   ierr=KSPSetType(ksp,KSPCG);CHKERRV(ierr);
> > > >   ierr=KSPGetPC(ksp,&prec);CHKERRV(ierr);
> > > >   ierr=PCSetType(prec,PCNONE);CHKERRV(ierr);
> > > >   ierr=KSPSetTolerances(ksp,1e-5,1e-20,1e5,10000);CHKERRV(ierr);
> > > >   ierr=KSPSetFromOptions(ksp);CHKERRV(ierr);
> > > >   ierr=KSPSetUp(ksp);CHKERRV(ierr);
> > > >
> > > > Shiyuan
> > >
> > >
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20111203/846a249d/attachment.htm>


More information about the petsc-users mailing list