[keep on list] On Thu, Apr 4, 2019 at 7:08 AM Dave Lee <davelee2...@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: https://www.mcs.anl.gov/petsc/documentation/tutorials/HandsOnExercise.html#example4 > 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 <mfad...@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@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. >>> >>