From fe9d03866763881f2259521eeaff1ee2dc8060ef Mon Sep 17 00:00:00 2001
From: Thomas Witkowski <thomas.witkowski@gmx.de>
Date: Thu, 12 Jun 2008 08:05:13 +0000
Subject: [PATCH] * PardisoSolver bugfix

---
 AMDiS/src/PardisoSolver.cc | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/AMDiS/src/PardisoSolver.cc b/AMDiS/src/PardisoSolver.cc
index 80e4ccaa..f53ef71c 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);
   }
-- 
GitLab