[petsc-users] lying about nullspaces

Geoffrey Irving irving at naml.us
Mon Jan 9 17:20:22 CST 2012


Ah, right.  I'm using incomplete Cholesky as a preconditioner, which
usually won't be stable on the subspace.  The subspace is derived from
freezing the normal velocity of points involved in collisions, so it
has no useful algebraic properties.

It's not too difficult to symbolically apply P to A (it won't change
the sparsity), but unfortunately that would make the sparsity pattern
change each iteration, which would significantly increase the cost of
ICC.  I suppose the best alternative may be to add a large energy term
of the form

    || x - P x ||^2

P is block diagonal with dense blocks, so ICC should have no problem
fixing the resulting bad condition number.

Thanks,
Geoffrey

On Mon, Jan 9, 2012 at 3:08 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote:
> Yes, this usually works as long as the preconditioner for A is stable on the
> non-null subspace.
>
> On Jan 9, 2012 5:43 PM, "Geoffrey Irving" <irving at naml.us> wrote:
>>
>> Hello,
>>
>> I have a matrix A and an orthogonal projection operator P onto a
>> fairly large (but sparse) linear subspace.  I want to solve the system
>>
>>    PAPx = Pb
>>
>> If set up a MatNullSpace object with MatNullSpaceSetFunction, with KSP
>> solve the system I want even if A is nonsingular?
>>
>> Thanks,
>> Geoffrey


More information about the petsc-users mailing list