#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