]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Fix bug.
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Thu, 4 May 2000 11:14:37 +0000 (11:14 +0000)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Thu, 4 May 2000 11:14:37 +0000 (11:14 +0000)
git-svn-id: https://svn.dealii.org/trunk@2792 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/lac/source/sparsity_pattern.cc

index e010645ef536c15f551ea7432eb3b8c8f4424ad3..7118b92a639e28a9785010a6b6ff96b8ec764f8a 100644 (file)
@@ -135,15 +135,32 @@ SparsityPattern::SparsityPattern (const SparsityPattern &original,
       const unsigned int * const
        original_row_end   = &original.colnums[original.rowstart[row+1]];
 
+                                      // find pointers before and
+                                      // after extra
+                                      // off-diagonals. if at top or
+                                      // bottom of matrix, then set
+                                      // these pointers such that no
+                                      // copying is necessary (see
+                                      // the #copy# commands)
       const unsigned int * const
-       original_last_before_side_diagonals = lower_bound (original_row_start,
-                                                          original_row_end,
-                                                          row-extra_off_diagonals);
+       original_last_before_side_diagonals
+       = (row > extra_off_diagonals ?
+          lower_bound (original_row_start,
+                       original_row_end,
+                       row-extra_off_diagonals) :
+          original_row_start);
+      
       const unsigned int * const
-       original_first_after_side_diagonals = upper_bound (original_row_start,
-                                                          original_row_end,
-                                                          row+extra_off_diagonals);
-
+       original_first_after_side_diagonals
+       = (row < rows-extra_off_diagonals-1 ?
+          upper_bound (original_row_start,
+                       original_row_end,
+                       row+extra_off_diagonals) :
+          original_row_end);
+
+                                      // find first free slot. the
+                                      // first slot in each row is
+                                      // the diagonal element
       unsigned int * next_free_slot = &colnums[rowstart[row]] + 1;
 
                                       // copy elements before side-diagonals

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.