[Dune] dune parallel matrix format, example

Feng Xing snakexf at gmail.com
Fri Jul 22 16:46:06 CEST 2016


Dear Markus,

Thank you very much for the help, I do really progresse a lot to realise a small test myself. 
However, I would like to ask a little more help about a small difficulty. Thank you very much.

I try to consider a 1d Poisson problem with 2 MPI procs and each proc contains 4 nodes for example (0,1,2,3 are in MPI 0 etc.).
I follow the example “parallelamgtest.cc” in dune/istl which consider a 2d Poisson problem with parallel AMG method.
However I got 'Dune::ISTLError’ errors.

It seems that the matrix and the index are correct and also the sparse pattern is symmetric. 
I think perhaps the error is from "AMG amg(op, criterion, smootherArgs, comm);”
I copy my AMG configuration also in the mail.

Best regards,
Feng Xing
Postdoc INRIA France 

MPI Proc 0:
	the matrix is 
row    0   2.00e+00  -1.00e+00          .          .          .
row    1  -1.00e+00   2.00e+00  -1.00e+00          .          .
row    2          .  -1.00e+00   2.00e+00  -1.00e+00          .
row    3          .          .  -1.00e+00   2.00e+00  -1.00e+00
row    4          .          .          .   0.00e+00   1.00e+00
	the index is
{global=0, local={local=0, attr=1, public=1}}
{global=1, local={local=1, attr=1, public=1}}
{global=2, local={local=2, attr=1, public=1}}
{global=3, local={local=3, attr=1, public=1}}
{global=4, local={local=4, attr=3, public=1}}

MPI Proc 1: 
	the matrix is:
row    0   1.00e+00   0.00e+00          .          .          .
row    1  -1.00e+00   2.00e+00  -1.00e+00          .          .
row    2          .  -1.00e+00   2.00e+00  -1.00e+00          .
row    3          .          .  -1.00e+00   2.00e+00  -1.00e+00
row    4          .          .          .  -1.00e+00   2.00e+00
	the index is:
{global=3, local={local=0, attr=3, public=1}}
{global=4, local={local=1, attr=1, public=1}}
{global=5, local={local=2, attr=1, public=1}}
{global=6, local={local=3, attr=1, public=1}}
{global=7, local={local=4, attr=1, public=1}}

AMG Configuration
  typedef Dune::Amg::CoarsenCriterion<Dune::Amg::SymmetricCriterion<BMat,Dune::Amg::FirstDiagonal> > Criterion;
  typedef Dune::SeqSSOR<BMat,BVec,BVec> Smoother;
  typedef Dune::BlockPreconditioner<BVec,BVec,Comm,Smoother> ParSmoother;
  typedef Dune::Amg::SmootherTraits<ParSmoother>::Arguments SmootherArgs;

  SmootherArgs smootherArgs;
  smootherArgs.iterations = 1;

  Criterion criterion;  
  criterion.setNoPreSmoothSteps(1); 
  criterion.setNoPostSmoothSteps(1);
  criterion.setGamma(1); // V-cycle=1, W-cycle=2
  criterion.setAdditive(false);
  criterion.setMaxLevel(2);
  criterion.setCoarsenTarget(4);

  typedef Dune::Amg::AMG<Operator,BVec,ParSmoother,Comm> AMG;
  AMG amg(op, criterion, smootherArgs, comm);



> On 18 Jul 2016, at 10:23, Markus Blatt <markus at dr-blatt.de> wrote:
> 
> On Mon, Jul 18, 2016 at 10:19:56AM +0200, Markus Blatt wrote:
>> 
>> Now you have your complete parallel index set with a global index and
>> a marker for each local index. Let l(i) be the function that
>> determines the local index of the global (PETSc) index i, them your
>> local matrix can be set up, if you insert an entry l(i),l(j) for each
>> PETSc sparse matrix entry (i,j). For all column indices g not in {n_i,
>> ..., n_{i+1}-1}, you insert a row l(g) with a 1 on the diagonal and
>> zeros elsewhere. Please make sure that for a symmetric sparse matrix
>> the sparsity pattern should be symetric, too.
>> 
> 
> Small addition: Now you can setup a parallel linear Operator by
> passing the local sparse matrix and the communication object to
> OverlappingSchwarzOperator. Or even write your own one.
> 
> Markus
> 
> -- 
> Dr. Markus Blatt - HPC-Simulation-Software & Services http://www.dr-blatt.de
> Hans-Bunte-Str. 8-10, 69123 Heidelberg, Germany
> Tel.: +49 (0) 160 97590858
> _______________________________________________
> Dune mailing list
> Dune at dune-project.org
> http://lists.dune-project.org/mailman/listinfo/dune

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.dune-project.org/pipermail/dune/attachments/20160722/2dfff0a3/attachment.htm>


More information about the Dune mailing list