[petsc-users] testing for and removing a null space using JFNK

Mark Adams mfadams at lbl.gov
Thu Apr 4 06:31:49 CDT 2019

[keep on list]

On Thu, Apr 4, 2019 at 7:08 AM Dave Lee <davelee2804 at gmail.com> wrote:

> Hi Mark,
> Thanks for responding. My brief scan of the literature suggested that
> there are some methods out there to approximate the null space using SVD
> methods, but I wasn't sure how mature these methods were, or if PETSc had
> some capability in this regard.

SVDs will do it but they are expensive.

> My problem is to wrap a Newton solver around an existing incompressible
> Navier Stokes solver in order to iterate over the NS solution so as to
> determine periodic structures within a weakly nonlinear flow.

Other team members have more experience with INS. We have a lot of
capabilities for this.

You could start by looking at:


> I think there is a null space within my problem due to the
> incompressibility constraint (ie: the linear dependence of one velocity
> component on the others). I have some other ideas on how this may be
> removed before assembling the residual, so hopefully I can fix this at the
> level of the residual vector assembly before the problem manifests at the
> level of the Krylov vectors.
> Thanks again for clarifying.
> Cheers, Dave.
> On Thu, Apr 4, 2019 at 8:26 PM Mark Adams <mfadams at lbl.gov> wrote:
>> The Krylov space can not see the null space (by definition) and so
>> getting a useful near null space from it is not likely.
>> Getting a null space is a hard problem and bootstrap AMG methods, for
>> instance, are developed to try to do that. This is an advanced research
>> topic.
>> You really want to know your null space, what kind of equations do you
>> have?
>> Mark
>> On Thu, Apr 4, 2019 at 4:28 AM Dave Lee via petsc-users <
>> petsc-users at mcs.anl.gov> wrote:
>>> Hello PETSc,
>>> I'm attempting to solve a JFNK problem for a system where I only have a
>>> function to compute the residual, but no matrix.
>>> I wanted to know if there exists functionality in PETSc to do the
>>> following:
>>> 1) approximate a null space from a set of Krylov vectors
>>> 2) remove such a null space if it exists
>>> I'm vaguely familiar with the MatNullSpaceCreate/Remove() functionality,
>>> however I don't know the precise form of a null space, so I don't have a
>>> set of vectors I can assemble and pass to this.
>>> Cheers, Dave.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20190404/c9b493c0/attachment.html>

More information about the petsc-users mailing list