diff --git a/Solver/linearSystemPETSc.hpp b/Solver/linearSystemPETSc.hpp index 73af243fa2a0ec4ad48448977bcc7c7e34d6ae6a..dc66e630410d5f8b6559ef603f243cbfd394b304 100644 --- a/Solver/linearSystemPETSc.hpp +++ b/Solver/linearSystemPETSc.hpp @@ -103,7 +103,9 @@ void linearSystemPETSc<scalar>::allocate(int nbRows) _try(MatAppendOptionsPrefix(_a, this->_parameters["petscPrefix"].c_str())); _try(MatSetFromOptions(_a)); _try(MatGetOwnershipRange(_a, &_localRowStart, &_localRowEnd)); - _try(MatGetSize(_a, &_globalSize, &_localSize)); + int nbColumns; + _localSize = _localRowEnd - _localRowStart; + _try(MatGetSize(_a, &_globalSize, &nbColumns)); // preallocation option must be set after other options _try(VecCreate(PETSC_COMM_WORLD, &_x)); _try(VecSetSizes(_x, nbRows, PETSC_DETERMINE));