]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Exit early if there are no matrix entries to add.
authorDavid Wells <wellsd2@rpi.edu>
Sun, 24 Apr 2016 22:47:28 +0000 (18:47 -0400)
committerDavid Wells <wellsd2@rpi.edu>
Mon, 25 Apr 2016 22:18:56 +0000 (18:18 -0400)
This gets around an issue where, if one is using a sparsity pattern
created by make_flux_sparsity_pattern and the 'nonzero' coupling option,
one may end up trying to add zeros to entries that do not exist in the
sparsity pattern on the current processor. This problem shows up when
adding fluxes between locally owned and ghost cells.

This commit sidesteps the issue by exiting early if there is
nothing (i.e., the only thing to do is add zero) to do.

doc/news/changes.h
source/lac/trilinos_sparse_matrix.cc

index 7ba12b45f34065c5a57d4f4c8ed24fed39bae1cd..b22f6ffc36a82e3cb3343fddb2a3a6d31086c50c 100644 (file)
@@ -201,6 +201,14 @@ inconvenience this causes.
 <h3>Specific improvements</h3>
 
 <ol>
+ <li> Fixed: TrilinosWrappers::SparseMatrix will now exit early if there are no
+ entries to add to the matrix. This usually occurs when zero elision is on. This
+ fixes a bug where the matrix raises an exception if there are no entries to add
+ to a matrix and the provided row and column values are not locally stored.
+ <br>
+ (David Wells, 2016/04/24)
+ </li>
+
  <li> Fixed: TrilinosWrappers::MPI::Vector and TrilinosWrappers::Vector could
  access invalid memory in the reinit() method if the MPI communicator was
  deleted before termination of the program. This usually happened when using
index 56ad9213e02e3c8db170dfb5a657ebf2e27be865..b8e96e7a2a1f6079bb26f20a4bd0175ed707c7f0 100644 (file)
@@ -1656,6 +1656,11 @@ namespace TrilinosWrappers
         Assert(n_columns <= (TrilinosWrappers::types::int_type)n_cols, ExcInternalError());
 
       }
+    // Exit early if there is nothing to do
+    if (n_columns == 0)
+      {
+        return;
+      }
 
     // If the calling processor owns the row to which we want to add values, we
     // can directly call the Epetra_CrsMatrix input function, which is much

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.