ML's multigrid
Barry Smith
bsmith at mcs.anl.gov
Sun Mar 23 10:58:49 CDT 2008
Thomas,
It is possible there is an error in our PCSetUp_ML() but more
likely
there is a misunderstanding. If you call KSPSolve() repeatedly without
calling KSPSetOperators() again then it uses the same matrix and
preconditioner
as for the previous solve (that is KSP does not know that you changed
entries in the matrix). If you change the matrix you must call
KSPSetOperators()
again to get the new preconditioner being built before calling
KSPSolve()
again.
Barry
On Mar 23, 2008, at 2:46 AM, Thomas Geenen wrote:
> dear Petsc users,
>
> I am using the AMG from ML as a preconditioner to CG. I am looking
> at the
> scaling characteristics of different parts of the preconditioner
> (some rough
> timings). To this end I have put some timing calls in ml.c.
> now when i run the code and the solver is called for the first time
> i can see
> that indeed the ML routines are called in particular PCSetUp_ML.
> In this routine a considerable amount of time is spend in the
> aggregation and
> interpolation operator construction (as expected). However the
> second time
> the solver is called this routine is no longer called. This seems to
> be
> inconsistent with the concept of AMG where the coarse grids and
> interpolation
> operators have to be constructed again when the matrix has changed
> (due to
> changing material properties as a function of time for instance).
> Destroying the preconditioner after each solve seems a waste of
> resources
> especially since in PCSetUp_ML , there are options to reuse
> datastructures.
> pc-setupcalled, reuse etc.
>
> are the aggregation and interpolation comstruction routines called
> from a
> different part in the code?
> ML_Gen_MGHierarchy_UsingAggregation(ml_object,
> 0,ML_INCREASING,agg_object);
> seems to be called only from PCSetUp_ML.
>
> cheers
> Thomas
>
More information about the petsc-users
mailing list