Skip to content
Snippets Groups Projects
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
Branches
Tags
No related merge requests found
......@@ -4,7 +4,7 @@
#include "DOFVector.h"
#include "Debug.h"
#include "SystemVector.h"
#include "VtkWriter.h"
#include "petscksp.h"
namespace AMDiS {
......@@ -283,10 +283,10 @@ namespace AMDiS {
// Traverse all non zero entries in this row.
for (icursor_type icursor = begin<nz>(cursor),
icend = end<nz>(cursor); icursor != icend; ++icursor) {
if (value(*icursor) != 0.0) {
int petscColIdx =
meshDistributor->mapLocalToGlobal(col(*icursor)) * nComponents + j;
int petscColIdx =
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,
// increment the d_nnz values for this row, otherwise the o_nnz value.
if (petscColIdx >= meshDistributor->getRstart() * nComponents &&
......@@ -445,6 +445,9 @@ namespace AMDiS {
MatAssemblyBegin(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. ===
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment