>> It does not remove any DOF. It adds just one DOF - the Lagrange
>> multiplier and an equation which makes the system regular.
>
> I'm probably just using different terminology, but how can the system be
> regular if it has a nullspace? If there is u such that A.u = 0, I would
> say that A is singular, not regular.

The original problem is singular indeed. What Jan did is add a row and
a column (Lagrange multiplier) such that the new extended system is
regular.

--Nico


On Wed, Jan 22, 2014 at 7:04 PM, Nikolaus Rath <[email protected]> wrote:
> On 01/21/2014 11:15 AM, Jan Blechta wrote:
>> On Tue, 21 Jan 2014 11:01:50 -0800
>> Nikolaus Rath <[email protected]> wrote:
>>
>>> On 01/21/2014 09:43 AM, Simone Pezzuto wrote:
>>>> 2014/1/21 Jan Blechta <[email protected]
>>>> <mailto:[email protected]>>
>>>>
>>>>     On Tue, 21 Jan 2014 17:18:54 +0000
>>>>     "Garth N. Wells" <[email protected] <mailto:[email protected]>>
>>>> wrote:
>>>>
>>>>     > On 2014-01-21 17:01, Nikolaus Rath wrote:
>>>>     > > Hello,
>>>>     > >
>>>>     > > I noticed that the neumann-poisson demo
>>>>     > >
>>>>     
>>>> (http://fenicsproject.org/documentation/dolfin/1.3.0/python/demo/documented/neumann-poisson/python/documentation.html
>>>>     
>>>> <https://urldefense.proofpoint.com/v1/url?u=http://fenicsproject.org/documentation/dolfin/1.3.0/python/demo/documented/neumann-poisson/python/documentation.html&k=Izx05CQZXsnLXkTIfmT7FQ%3D%3D%0A&r=1KW6QPJUrZMjRkn7m6Ouj0V90HWobEY8fXrhlFmuc%2Bc%3D%0A&m=v%2F3Ze6UBI9gR2l%2Fu82%2F4Y4fHujXMqW47hgHfmNXSjGw%3D%0A&s=e188e7efbe5d6d1deabbd7fb92be8e35f91642b13aacc34896849ef0c60c62e7>)
>>>>     > > fails when using a different solver, e.g. when replacing
>>>>     > >
>>>>     > > solve(a == L, w)
>>>>     > >
>>>>     > > with
>>>>     > >
>>>>     > > solve(a == L, w,
>>>>     > >       solver_parameters = {'linear_solver': 'cg',
>>>>     > >                            'preconditioner': 'ilu'})
>>>>     > >
>>>>     >
>>>>     > This problem needs very careful treatment when using iterative
>>>>     > solvers. Simple block-box preconditioners and solvers will
>>>>     > very likely fail.
>>>>
>>>>     AMG preconditioning based on operator
>>>>
>>>>       (inner(grad(u), grad(v)) + c*d)*dx
>>>>
>>>>     could perform well. This operator does not have a dense row
>>>> like the original one. This is a strategy similar to
>>>> demo_stokes-iterative.
>>>>
>>>>
>>>> In this case the preconditioner is singular (pure neumann), no it
>>>> cannot be used.
>>>>
>>>> As Garth was mentioning, this problem is delicate for iterative
>>>> solver, not only because
>>>> its indefiniteness, but because the Lagrangian constraint you're
>>>> imposing yields
>>>> a column (the last one) of the full matrix that belongs to the
>>>> kernel of the top-left block.
>>>>
>>>> Since the nullspace is at hands, I would provide it to the solver
>>>> and then use CG+AMG,
>>>> with Jacobi relaxation at coarser scale instead Gauss elimination
>>>> (at least with petsc boomeramg).
>>>
>>>
>>> Why is there a nullspace? Doesn't the \int u = 0 constraint remove the
>>> remaining degree of freedom resulting from the pure Neumann boundary
>>> conditions?
>>
>> It does not remove any DOF. It adds just one DOF - the Lagrange
>> multiplier and an equation which makes the system regular.
>
> I'm probably just using different terminology, but how can the system be
> regular if it has a nullspace? If there is u such that A.u = 0, I would
> say that A is singular, not regular.
>
>
>
> Best,
> Nikolaus
>
> _______________________________________________
> fenics mailing list
> [email protected]
> http://fenicsproject.org/mailman/listinfo/fenics
_______________________________________________
fenics mailing list
[email protected]
http://fenicsproject.org/mailman/listinfo/fenics

Reply via email to