diff --git a/AMDiS/src/parallel/PetscSolverGlobalMatrix.cc b/AMDiS/src/parallel/PetscSolverGlobalMatrix.cc index d58d07a101d6ebebe1074876b06050e31038e357..5394a7d6ffc5462935ea381ae1e0bfe59e6b9c1f 100644 --- a/AMDiS/src/parallel/PetscSolverGlobalMatrix.cc +++ b/AMDiS/src/parallel/PetscSolverGlobalMatrix.cc @@ -408,6 +408,7 @@ namespace AMDiS { namespace Parallel { MatNullSpace matNullspace; Vec nullspaceBasis; + SystemVector *basisVec = NULL; if (nullspace.size() > 0 || hasConstantNullspace || constNullspaceComponent.size() > 0) { @@ -415,7 +416,7 @@ namespace AMDiS { namespace Parallel { if (constNullspaceComponent.size() > 0) { nullspace.clear(); - SystemVector *basisVec = new SystemVector(vec); + basisVec = new SystemVector(vec); basisVec->set(0.0); for (unsigned int i = 0; i < constNullspaceComponent.size(); i++) basisVec->getDOFVector(constNullspaceComponent[i])->set(1.0); @@ -463,12 +464,14 @@ namespace AMDiS { namespace Parallel { // PETSc. solve(getVecRhsInterior(), getVecSolInterior()); - + // delete PETSc stuff if (nullspace.size() > 0) { MatNullSpaceDestroy(&matNullspace); VecDestroy(&nullspaceBasis); } - + + // delete allocated memory + delete basisVec; // === Transfere values from PETSc's solution vectors to the DOF vectors. === PetscScalar *vecPointer;