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