Skip to content

#1549 Bug in the parellel version of preconditioners

Metadata

Property Value
Reported by Nagaiah (nagaiah.chamakuri@gmail.com)
Reported at Dec 30, 2014 16:44
Type Bug Report
Version Git (pre2.4) [cmake]
Operating System Linux
Last edited by Dominic Kempf (dominic.r.kempf@gmail.com)
Last edited at Jan 27, 2015 15:46
Closed by Dominic Kempf (dominic.r.kempf@gmail.com)
Closed at Jan 27, 2015 15:46
Closed in version Unknown
Resolution Fixed
Comment ... in 341d0f32967785e1453c9a281ded69b81fabca29

on master and releases/2.0 |

Description

There is a strange bug sitting in the parallel version of nonoverlapping solvers (specifically in preconditioners) in Dune-PDELab. Please find the simple test case (attached). Here I am trying to solve the following problem.

-nabla . (a nabla u) + u = f(x).

Corresponding local operators are implemented in test_parallel.hh file. Here "a" is a tensor (a.t.m constant over the elements for simplicity).

The problem triggers while solving the above system using ISTLBackend_NOVLP_BCGS_Jacobi solver (CG solver does not compile with recent GIT version. Error at line 458. it should supposed to be PPre ppre(gfs,A); instead of PPre ppre(gfs,istl::raw(A)); Please some one change it in GIT version ).

The program produces correct solution using 1 processor (see the solution at test_seq.png). On more processors this produces wrong solution at the processor boundaries (see the solution on 2 processors at test_par_2procs.png). I observed that this is due to the bug at datahandle call in the preconditioner. I tried with different preconditioners, but they also have same the problem. With no preconditioner this program produces solution as expected in parallel( ISTLBackend_NOVLP_BCGS_NOPREC).

One obeservation: If I remove the tensor "a" in the assembly, then this test case produces correct result as well.

Even keeping tensor but offdiagonal values set to zero also produces correct result. (for this change, set fulltensor = false; at line 90 in test.cc file).

I failed to understand the relation between the tensor values and the prallel preconditioners. I tried to look more in the parallel preconditioners, but I failed to understand the complete code.

The same problem implementation works charmly on older version of PDELab 1.1.0.

This program tested using latest GIT version of all core modules and pdelab. Also the problem remains with dune-2.3.1 and pdelab-2.0. Operating system: Opensuse 12.3. gcc-4.7 and MPICH-3.1.3

Attachments