diff --git a/Solver/linearSystemPETSc.hpp b/Solver/linearSystemPETSc.hpp
index dcbe582da3537f2d0afdd142e46a6fe1d94adce5..6c24339edbc5d5da065e4524e3fe2abf64ccfd72 100644
--- a/Solver/linearSystemPETSc.hpp
+++ b/Solver/linearSystemPETSc.hpp
@@ -137,6 +137,8 @@ void linearSystemPETSc<scalar>::preAllocateEntries()
     else
       _try(MatMPIBAIJSetPreallocation(_a, blockSize, 0, &nByRowDiag[0], 0, &nByRowOffDiag[0]));
   }
+  if (blockSize > 1)
+    _try(MatSetOption(_a, MAT_ROW_ORIENTED, PETSC_FALSE));
   _entriesPreAllocated = true;
 }
 
@@ -151,12 +153,11 @@ void linearSystemPETSc<scalar>::allocate(int nbRows)
   _try(MatSetSizes(_a, blockSize * nbRows, blockSize * nbRows, PETSC_DETERMINE, PETSC_DETERMINE));
   if (blockSize > 1) {
     if (commSize > 1) {
-      MatSetType(_a, MATMPIBAIJ);
+      _try(MatSetType(_a, MATMPIBAIJ));
     }
     else {
-      MatSetType(_a, MATSEQBAIJ);
+      _try(MatSetType(_a, MATSEQBAIJ));
     }
-    MatSetOption(_a, MAT_ROW_ORIENTED, PETSC_FALSE);
   }
   // override the default options with the ones from the option
   // database (if any)