On Fri, Aug 26, 2011 at 2:27 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote: > On Fri, Aug 26, 2011 at 13:19, John Fettig <john.fettig at gmail.com> wrote: >> >> When you are solving a >> series of equations, where the nonzero pattern stays the same but the >> values change, shouldn't it make sense to offer an option for AMG >> solvers which changes the matrices used on the levels but does not >> recompute the restriction/interpolating matrices? > > Smoothed aggregation is not a purely symbolic operation, it actually uses > the matrix entries to compute the interpolation operator. Now if the matrix > entries are not changing too quickly, the old interpolants might still be > good, in which case it would be nice to only update the Galerkin coarse > level operators.
Exactly, this would provide a nice intermediate between "build everything anew" and "reuse everything". From experimentation in serial, it is a very useful option to have. > With ML, there is a technical problem that we don't get the interpolation > back in a PETSc Mat, so we can't use PETSc MatPtAP(). I don't know if they > have a similar function that is callable by users, or another way to only > update the Galerkin operators without redoing the smoothed aggregation. There must be a way for them to do it. In the version 5 guide, they write: "In this fragment of code, the user defines the ML preconditioner, but the preconditioner is created only with the call ComputePreconditioner(). This may be useful, for example, when ML is used in conjunction with nonlinear solvers (like Nox [17]). Method ReComputePreconditioner() can be used to recompute the preconditioner using already available information about the aggregates. ReComputePreconditioner() reuses the already computed tentative prolongator, then recomputes the smoothed prolongators and the other components of the hierarchy, like smoothers and coarse solver11." Although they don't explain how it could be done in the "Advanced usage" section, leaving your question unanswered. John