Commit a795bfed authored by Backofen, Rainer's avatar Backofen, Rainer
Browse files

set solver iteration in adaptInfo also for parallel (PetSc)

parent 9c3b4f73
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include "DOFVector.h" #include "DOFVector.h"
#include "Debug.h" #include "Debug.h"
#include "SystemVector.h" #include "SystemVector.h"
#include "VtkWriter.h"
#include "petscksp.h" #include "petscksp.h"
...@@ -47,7 +46,7 @@ namespace AMDiS { ...@@ -47,7 +46,7 @@ namespace AMDiS {
clock_t first = clock(); clock_t first = clock();
fillPetscMatrix(systemMatrix, rhs); fillPetscMatrix(systemMatrix, rhs);
solvePetscMatrix(*solution); solvePetscMatrix(*solution, adaptInfo);
#ifdef _OPENMP #ifdef _OPENMP
INFO(info, 8)("solution of discrete system needed %.5f seconds system time / %.5f seconds wallclock time\n", INFO(info, 8)("solution of discrete system needed %.5f seconds system time / %.5f seconds wallclock time\n",
...@@ -474,7 +473,7 @@ namespace AMDiS { ...@@ -474,7 +473,7 @@ namespace AMDiS {
} }
void GlobalMatrixSolver::solvePetscMatrix(SystemVector &vec) void GlobalMatrixSolver::solvePetscMatrix(SystemVector &vec, AdaptInfo *adaptInfo)
{ {
FUNCNAME("GlobalMatrixSolver::solvePetscMatrix()"); FUNCNAME("GlobalMatrixSolver::solvePetscMatrix()");
...@@ -535,7 +534,8 @@ namespace AMDiS { ...@@ -535,7 +534,8 @@ namespace AMDiS {
int iterations = 0; int iterations = 0;
KSPGetIterationNumber(solver, &iterations); KSPGetIterationNumber(solver, &iterations);
MSG(" Number of iterations: %d\n", iterations); MSG(" Number of iterations: %d\n", iterations);
adaptInfo->setSolverIterations(iterations);
double norm = 0.0; double norm = 0.0;
MatMult(petscMatrix, petscSolVec, petscTmpVec); MatMult(petscMatrix, petscSolVec, petscTmpVec);
VecAXPY(petscTmpVec, -1.0, petscRhsVec); VecAXPY(petscTmpVec, -1.0, petscRhsVec);
......
...@@ -79,7 +79,7 @@ namespace AMDiS { ...@@ -79,7 +79,7 @@ namespace AMDiS {
void setDofVector(Vec& petscVec, DOFVector<double>* vec, void setDofVector(Vec& petscVec, DOFVector<double>* vec,
int disMult = 1, int dispAdd = 0); int disMult = 1, int dispAdd = 0);
void solvePetscMatrix(SystemVector &vec); void solvePetscMatrix(SystemVector &vec, AdaptInfo *adaptInfo);
protected: protected:
MeshDistributor *meshDistributor; MeshDistributor *meshDistributor;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment