]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Accessing matrix rows uses, in fact, the global row number...
authorwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 21 May 2004 19:10:58 +0000 (19:10 +0000)
committerwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 21 May 2004 19:10:58 +0000 (19:10 +0000)
git-svn-id: https://svn.dealii.org/branches/Branch-5-0@9282 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/lac/source/petsc_matrix_base.cc

index 9680e7e421b1013f79e885994219eb486674abb3..6f6ae79eb47667d1d6db8454caa979c0ebfcccef 100644 (file)
@@ -44,40 +44,6 @@ namespace PETScWrappers
                                        // otherwise first flush PETSc caches
       matrix->compress ();
 
-                                       // next get the number of the row
-                                       // relative to the rows this process
-                                       // actually stores (remember that
-                                       // matrices can be distributed)
-      signed int local_row = -1;
-      if ((dynamic_cast<const PETScWrappers::SparseMatrix *>(matrix) != 0)
-         ||
-         (dynamic_cast<const PETScWrappers::FullMatrix *>(matrix) != 0))
-        {
-          local_row = this->a_row;
-        }
-      else if (dynamic_cast<const PETScWrappers::MPI::SparseMatrix *>(matrix)
-               != 0)
-        {
-                                           // first verify that the requested
-                                           // element is actually locally
-                                           // available
-          int ierr;
-          int begin, end;
-          ierr = MatGetOwnershipRange (*matrix, &begin, &end);
-          AssertThrow (ierr == 0, ExcPETScError(ierr));
-
-          AssertThrow ((this->a_row >= static_cast<unsigned int>(begin)) &&
-                       (this->a_row < static_cast<unsigned int>(end)),
-                       ExcAccessToNonlocalRow (this->a_row, begin, end-1));
-
-                                           // alright, so we seem to have this
-                                           // particular row on the present
-                                           // processor
-          local_row = this->a_row - begin;
-        }
-      else
-        Assert (false, ExcInternalError());
-
                                        // get a representation of the present
                                        // row
       int          ncols;
@@ -85,7 +51,7 @@ namespace PETScWrappers
       PetscScalar *values;
 
       int ierr;
-      ierr = MatGetRow(*matrix, local_row, &ncols, &colnums, &values);
+      ierr = MatGetRow(*matrix, this->a_row, &ncols, &colnums, &values);
       AssertThrow (ierr == 0, MatrixBase::ExcPETScError(ierr));
 
                                        // copy it into our caches
@@ -94,7 +60,7 @@ namespace PETScWrappers
       value_cache.reset (new std::vector<PetscScalar> (values, values+ncols));
 
                                        // and finally restore the matrix
-      ierr = MatRestoreRow(*matrix, local_row, &ncols, &colnums, &values);
+      ierr = MatRestoreRow(*matrix, this->a_row, &ncols, &colnums, &values);
       AssertThrow (ierr == 0, MatrixBase::ExcPETScError(ierr));
     }
   }

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.