On Wed, Feb 7, 2018 at 2:24 PM, Smith, Barry F. <bsm...@mcs.anl.gov> wrote:
> > A square matrix with a null space results in an underdetermined system, > that is a solution with more than one solution. The solutions can be > written as x + alpha_1 v_1 + ... alpha_n v_n where the v_n form an > orthonormal basis for the null space and x is orthogonal to the null space. > > When you provide the null space KSP Krylov methods find the norm > minimizing solution (x) , that is it finds the x with the smallest norm > that satisfies the system. This is exactly the same as saying you take any > solution of the system and remove all the components in the directions of > the null space. > > If you do not provide the null space then the Krylov space may find you > a solution that is not the norm minimizing solution, thus that solution has > a component of the null space within it. What component of the null space > in the solution depends on what you use for an initial guess and right hand > side. > Additionally, assuming your initial guess is orthogonal to the null space, of course, your solution can "float" away from roundoff error. This is what you were seeing initially w/o the null space. As you saw you can just project it out yourself but as Barry said it is better to let KSP do it. > > When you have a preconditioner then things can get trickier because the > preconditioner can (unless you remove them) components in the direction of > the null space. These components can get amplified with each iteration of > the Krylov method so it looks like the Krylov method is not converging > since the norm of the solution is getting larger and larger (these larger > components are in the null space.) This is why one should always provide > the null space when solving singular systems with singular matrices. > > Barry > > > > On Feb 7, 2018, at 11:43 AM, Marco Cisternino < > marco.cistern...@optimad.it> wrote: > > > > Hi everybody, > > I would like to ask what solution is computed if I try to solve the > linear system relative to the problem in subject without creating the null > space. > > I tried with and without the call to > > MatNullSpaceCreate(m_communicator, PETSC_TRUE, 0, NULL, &nullspace); > > and I get zero averaged solution with and the same solution plus a > constant without. > > How does PETSc work in the second case? > > Does it check the matrix singularity? And is it able to create the null > space with the constant automatically? > > Thanks. > > > > > > Marco Cisternino, PhD > > marco.cistern...@optimad.it > > _______________________________ > > OPTIMAD Engineering srl > > Via Giacinto Collegno 18, Torino, Italia. > > +3901119719782 > > www.optimad.it > > > >