From 4db3e9430c375232e6fb95bd9ab3de5cb6fa311a Mon Sep 17 00:00:00 2001
From: Thomas Witkowski <thomas.witkowski@gmx.de>
Date: Sat, 8 Dec 2012 14:13:42 +0000
Subject: [PATCH] Fixed memory issue in block matrix solver.

---
 AMDiS/src/parallel/PetscSolverGlobalBlockMatrix.cc | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/AMDiS/src/parallel/PetscSolverGlobalBlockMatrix.cc b/AMDiS/src/parallel/PetscSolverGlobalBlockMatrix.cc
index 6e2019e3..f7fd4b3a 100644
--- a/AMDiS/src/parallel/PetscSolverGlobalBlockMatrix.cc
+++ b/AMDiS/src/parallel/PetscSolverGlobalBlockMatrix.cc
@@ -26,7 +26,7 @@ namespace AMDiS {
 
     double wtime = MPI::Wtime();
 
-    createMatVec(*seqMat);
+    prepare();
 
     const FiniteElemSpace *feSpace = componentSpaces[0];
     nComponents = seqMat->getNumRows();
@@ -198,6 +198,7 @@ namespace AMDiS {
       VecRestoreArray(tmp, &vecPointer);
     }
 
+    VecDestroy(&petscSolVec);
 
     // === Synchronize DOFs at common DOFs, i.e., DOFs that correspond to ===
     // === more than one partition.                                       ===
@@ -225,9 +226,10 @@ namespace AMDiS {
   {
     FUNCNAME("PetscSolverGlobalBlockMatrix::destroyVectorData()");
 
+    for (unsigned int i = 0; i < nestVec.size(); i++)
+      VecDestroy(&(nestVec[i]));
+      
     vecDestroy();
-
-    VecDestroy(&petscSolVec);
   }
 
 
-- 
GitLab