[Dune-devel] smoother aggregation preconditioner using DUNE

Markus Blatt markus at dr-blatt.de
Fri Nov 8 12:54:56 CET 2019


On Thu, Nov 07, 2019 at 12:20:44PM +0100, Bao Kai wrote:
> 
> Currently, we are trying to make a smoother aggregation two-level
> method (maybe multiple level later).

You are very brave. I never dared trying to implement this one as I deem an
efficient parallel implementation to be rather involved. It will be interesting
to see for what kind of problems it will make a difference. On the coarser
levels there will be additional non-zeros compared to non-smoothed aggregation.
Therefore the better convergence will come at the price of more computational
work per iteration.

> The basic formulation is:
> 
> x: fine degree of freedom
> x_c : coarse degree of freedom
> A = fine-matrix
> P = prolongation-operator
> Ac = P^T A P : coarse matrix
> move to fine is: P*x_c
> move to coarse P^T*x
> Given that the structure of P is defined with sufficient nonzero elements
> P=(I -(1/lambda)* A)^n P_I
> where P_I is the the representation of your prolongation operator.
> 
> The basic task is to be able to generate and operate on to parallel
> index sets. One for the coarse grid and one for the fine grid (and
> then more if multilevel is considered),  and the connection between
> them is given by P. This is a rather general task.
>

I do not think that constructing the indexset is a general task (at least how
I understand it). The initial index set is given by the pure aggregation (it is
the same as now). Depending on n you need to extend it. Using the extended one
you can compute your communication pattern. You also need to precompute the
sparsity pattern of P. You will need to get additional matrix rows form other
processes to do the actual computation in parallel, and, and, and.

> Do you know if it exist some utilities for this in dune and where to
> search for it?

In parallel, I do not think so. I tried to avoid these kind of costly things
as much as possible. There are some matrix-matrix multiplication functions
in matrixmatrix.hh but do not assume these to be fast (as they will also
compute the sparsity pattern).

> For me it seems like dune-fem which operate on function
> spaces or any of the modules gluing grids should use similar things.
>

I would not assume that these work with matrices at all, but could be wrong.

> In addition basic tasks is parallel sparse matrix matrix
> multiplication where the structures can be generated ones and where
> the index sets of the two "vector spaces" is used is need. Has anyone
> made general implementations of this in DUNE?
>

Personally, I would not call it a basic task. It seems rather involved.

> And also, as far as I understand correctly, the redistributeMatrix
> only deals with square matrices. For us, the P is rectangular, is
> there anything has been done related to redistribute rectangular
> matrices. We guess there the remoteIndices for both direction will be
> needed.
>

I fail to see why P would need to be redistributed. It is computed for
every level using A and the aggregation information. Redistributing A
before solving on the coarse level should be enough.

Markus


-- 
Dr. Markus Blatt - HPC-Simulation-Software & Services http://www.dr-blatt.de
Pedettistr. 38, 85072 Eichstätt, Germany,  USt-Id: DE279960836
Tel.: +49 (0) 160 97590858




More information about the Dune-devel mailing list