Commit 2ffb4759 authored by Thomas Witkowski's avatar Thomas Witkowski
Browse files

Improved memory allocation for petsc matrix in the case of zero diagonal elements.

parent 3c9efbeb
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
#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"
namespace AMDiS { namespace AMDiS {
...@@ -283,10 +283,10 @@ namespace AMDiS { ...@@ -283,10 +283,10 @@ namespace AMDiS {
// Traverse all non zero entries in this row. // Traverse all non zero entries in this row.
for (icursor_type icursor = begin<nz>(cursor), for (icursor_type icursor = begin<nz>(cursor),
icend = end<nz>(cursor); icursor != icend; ++icursor) { icend = end<nz>(cursor); icursor != icend; ++icursor) {
if (value(*icursor) != 0.0) {
int petscColIdx = int petscColIdx =
meshDistributor->mapLocalToGlobal(col(*icursor)) * nComponents + j; meshDistributor->mapLocalToGlobal(col(*icursor)) * nComponents + j;
if (value(*icursor) != 0.0 || petscRowIdx == petscColIdx) {
// The row DOF is a rank DOF, if also the column is a rank DOF, // The row DOF is a rank DOF, if also the column is a rank DOF,
// increment the d_nnz values for this row, otherwise the o_nnz value. // increment the d_nnz values for this row, otherwise the o_nnz value.
if (petscColIdx >= meshDistributor->getRstart() * nComponents && if (petscColIdx >= meshDistributor->getRstart() * nComponents &&
...@@ -445,6 +445,9 @@ namespace AMDiS { ...@@ -445,6 +445,9 @@ namespace AMDiS {
MatAssemblyBegin(petscMatrix, MAT_FINAL_ASSEMBLY); MatAssemblyBegin(petscMatrix, MAT_FINAL_ASSEMBLY);
MatAssemblyEnd(petscMatrix, MAT_FINAL_ASSEMBLY); MatAssemblyEnd(petscMatrix, MAT_FINAL_ASSEMBLY);
#if (DEBUG != 0)
INFO(info, 8)("Fill petsc matrix 3 needed %.5f seconds\n", TIME_USED(first, clock()));
#endif
// === Transfer values from DOF vector to the PETSc vector. === // === Transfer values from DOF vector to the PETSc vector. ===
......
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