diff --git a/AMDiS/src/parallel/BddcMlSolver.cc b/AMDiS/src/parallel/BddcMlSolver.cc index 6ad4bbdb32a3c46f6ed946b330342757af79edb6..eeac4bebd8591fa35a1e09ad58472db03e8e6d3a 100644 --- a/AMDiS/src/parallel/BddcMlSolver.cc +++ b/AMDiS/src/parallel/BddcMlSolver.cc @@ -199,7 +199,7 @@ namespace AMDiS { double rhs[ndofs]; for (int i = 0; i < nComponents; i++) { DOFVector<double>& dofvec = *(rhsVec->getDOFVector(i)); - for (int j = 0; j < ndofs; j++) + for (int j = 0; j < nnods; j++) rhs[j * nComponents + i] = dofvec[j]; } @@ -340,7 +340,7 @@ namespace AMDiS { int method = 1; double tol = 1.e-6; - int maxit = 1000; + int maxit = 10; int ndecrmax = 30; int num_iter = 0; int converged_reason = 0; @@ -358,6 +358,14 @@ namespace AMDiS { MSG("BDDCML converged reason: %d within %d iterations \n", converged_reason, num_iter); + bddcml_download_local_solution(&isub, rhs, &ndofs); + + for (int i = 0; i < nComponents; i++) { + DOFVector<double>& dofvec = *(vec.getDOFVector(i)); + for (int j = 0; j < nnods; j++) + dofvec[j] = rhs[j * nComponents + i]; + } + bddcml_finalize(); }