From 555d3666527b8cf7be217719693b6a7209c3108d Mon Sep 17 00:00:00 2001
From: absingh <absingh@mpi-cbg.de>
Date: Fri, 24 Apr 2020 01:28:05 +0200
Subject: [PATCH] Solver bug fix

---
 src/DCPSE_op/DCPSEActiveGelTest.cpp | 12 +++++++-----
 src/DCPSE_op/DCPSE_Solver.hpp       |  2 ++
 src/DCPSE_op/DCPSE_op.hpp           | 10 +++++-----
 3 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/DCPSE_op/DCPSEActiveGelTest.cpp b/src/DCPSE_op/DCPSEActiveGelTest.cpp
index 6428fd03..7a021068 100644
--- a/src/DCPSE_op/DCPSEActiveGelTest.cpp
+++ b/src/DCPSE_op/DCPSEActiveGelTest.cpp
@@ -2040,7 +2040,7 @@ BOOST_AUTO_TEST_SUITE(dcpse_op_suite_tests)
         RHS[x] = dV[x];
         RHS[y] = dV[y];
         Particles.ghost_get<10>();
-        DCPSE_scheme<equations2d3p, decltype(Particles)> Solver(Particles);
+        DCPSE_scheme<equations2d3pE, decltype(Particles)> Solver(Particles);
         Solver.impose(Stokes1, bulk, RHS[0], vx);
         Solver.impose(Stokes2, bulk, RHS[1], vy);
         Solver.impose(continuity, bulkF, 0, ic);
@@ -2050,13 +2050,15 @@ BOOST_AUTO_TEST_SUITE(dcpse_op_suite_tests)
         Solver.impose(V[y], dw_p, 0, vy);
         Solver.impose(P, ref_p, 0, ic);
         tt.start();
-        auto A = Solver.getA();
-        A.write("Matrix_A");
+        BOOST_TEST_MESSAGE("Solver Imposed...");
+        /*//auto A = Solver.getA();
+        //A.write("Matrix_A");
         petsc_solver<double> solver;
         solver.setSolver(KSPGMRES);
         solver.setRestart(500);
-        solver.setPreconditioner(PCJACOBI);
-        Solver.solve_with_solver(solver, V[x], V[y], P);
+        solver.setPreconditioner(PCJACOBI);*/
+        Solver.solve(V[x], V[y], P);
+        BOOST_TEST_MESSAGE("Solver Solved...");
         //Solver.solve(V[x], V[y],P);
         tt.stop();
         std::cout << "Stokes Solved in " << tt.getwct() << " seconds." << std::endl;
diff --git a/src/DCPSE_op/DCPSE_Solver.hpp b/src/DCPSE_op/DCPSE_Solver.hpp
index acc9155d..0b5a4545 100644
--- a/src/DCPSE_op/DCPSE_Solver.hpp
+++ b/src/DCPSE_op/DCPSE_Solver.hpp
@@ -655,11 +655,13 @@ public:
             // get the particle
             auto key = it.get();
 
+/*
             if (key == 298 && create_vcluster().rank() == 1)
             {
             	int debug = 0;
             	debug++;
             }
+*/
 
             // Calculate the non-zero colums
             typename Sys_eqs::stype coeff = 1.0;
diff --git a/src/DCPSE_op/DCPSE_op.hpp b/src/DCPSE_op/DCPSE_op.hpp
index b703e327..a37c443e 100644
--- a/src/DCPSE_op/DCPSE_op.hpp
+++ b/src/DCPSE_op/DCPSE_op.hpp
@@ -71,7 +71,7 @@ public:
                 o1.template value_nz<Sys_eqs>(p_map,k,cols,k_coeff,comp);
 
                 auto kk_coeff = dcp.getSign() * coeff_dc * coeff / dcp.getEpsilonPrefactor(key);
-                o1.template value_nz<Sys_eqs>(p_map,k,cols,k_coeff,comp);
+                o1.template value_nz<Sys_eqs>(p_map,key,cols,kk_coeff,comp);
                 //cols[p_map. template getProp<0>(k)*Sys_eqs::nvar + comp] += coeff_dc * coeff / dcp.getEpsilonPrefactor(key);
 
                 //cols[p_map. template getProp<0>(key)*Sys_eqs::nvar + comp] += dcp.getSign() * coeff_dc * coeff / dcp.getEpsilonPrefactor(key);
@@ -167,7 +167,7 @@ public:
                 o1.template value_nz<Sys_eqs>(p_map,k,cols,k_coeff,comp);
 
                 auto kk_coeff = dcp[i].getSign() * coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
-                o1.template value_nz<Sys_eqs>(p_map,k,cols,k_coeff,comp);
+                o1.template value_nz<Sys_eqs>(p_map,key,cols,kk_coeff,comp);
 
 
                 //cols[p_map. template getProp<0>(k)*Sys_eqs::nvar + comp] += coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
@@ -266,7 +266,7 @@ public:
                 o1.template value_nz<Sys_eqs>(p_map,k,cols,k_coeff,comp);
 
                 auto kk_coeff = dcp[i].getSign() * coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
-                o1.template value_nz<Sys_eqs>(p_map,k,cols,k_coeff,comp);
+                o1.template value_nz<Sys_eqs>(p_map,key,cols,kk_coeff,comp);
 
 
                 //cols[p_map. template getProp<0>(k)*Sys_eqs::nvar + comp] += coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
@@ -513,7 +513,7 @@ public:
                 o1.template value_nz<Sys_eqs>(p_map,k,cols,k_coeff,comp);
 
                 auto kk_coeff = dcp[i].getSign() * coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
-                o1.template value_nz<Sys_eqs>(p_map,k,cols,k_coeff,comp);
+                o1.template value_nz<Sys_eqs>(p_map,key,cols,kk_coeff,comp);
 
 
                 //cols[p_map. template getProp<0>(k)*Sys_eqs::nvar + comp] += coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
@@ -611,7 +611,7 @@ public:
                 o2.template value_nz<Sys_eqs>(p_map,k,cols,k_coeff,comp);
 
                 auto kk_coeff = o1.value(key) * dcp[i].getSign() * coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
-                o2.template value_nz<Sys_eqs>(p_map,k,cols,kk_coeff,comp);
+                o2.template value_nz<Sys_eqs>(p_map,key,cols,kk_coeff,comp);
 
                 //cols[p_map. template getProp<0>(k)*Sys_eqs::nvar + comp] += o1.value(key)[i] * coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
                 //cols[p_map. template getProp<0>(key)*Sys_eqs::nvar + comp] += o1.value(key)[i] * dcp[i].getSign() * coeff_dc * coeff / dcp[i].getEpsilonPrefactor(key);
-- 
GitLab