diff --git a/AMDiS/src/PardisoSolver.cc b/AMDiS/src/PardisoSolver.cc index 80e4ccaa829f03877b4bd2643d6a39c4dd85ab89..f53ef71cb8e7c5eb34a326ca1fc64ec6f7756e51 100644 --- a/AMDiS/src/PardisoSolver.cc +++ b/AMDiS/src/PardisoSolver.cc @@ -151,7 +151,7 @@ namespace AMDiS { PARDISO(pt, &maxfct, &mnum, &mtype, &phase, &n, a, ia, ja, &idum, &nRhs, iparm, &msglvl, &ddum, &ddum, &error); - + TEST_EXIT(error == 0)("Intel MKL Pardiso error during symbolic factorization: %d\n", error); // Numerical factorization @@ -171,13 +171,6 @@ namespace AMDiS { TEST_EXIT(error == 0)("Intel MKL Pardiso error during solution: %d\n", error); - // Termination and release of memory - phase = -1; - - PARDISO(pt, &maxfct, &mnum, &mtype, &phase, &n, a, ia, ja, &idum, &nRhs, - iparm, &msglvl, &ddum, &ddum, &error); - - // Copy and resort solution. for (int i = 0; i < x->getSize(); i++) { DOFVector<double>::Iterator it(x->getDOFVector(i), USED_DOFS); @@ -198,12 +191,17 @@ namespace AMDiS { MSG("Residual: %e\n", this->residual); + // Termination and release of memory + phase = -1; + + PARDISO(pt, &maxfct, &mnum, &mtype, &phase, &n, a, ia, ja, &idum, &nRhs, + iparm, &msglvl, &ddum, &ddum, &error); free(a); free(ja); free(ia); - free(b); - free(x); + free(bvec); + free(xvec); return(1); }