]> https://gitweb.dealii.org/ - dealii.git/commitdiff
improve patch slightly
authorTimo Heister <timo.heister@gmail.com>
Thu, 7 Aug 2014 15:40:13 +0000 (11:40 -0400)
committerTimo Heister <timo.heister@gmail.com>
Thu, 7 Aug 2014 15:40:13 +0000 (11:40 -0400)
include/deal.II/lac/constraint_matrix.h
include/deal.II/lac/constraint_matrix.templates.h

index 282fa05f95154485b46ad06660074565a9faa251..09edea34f7badbcd38417d7c86dd2bc06728d3d3 100644 (file)
@@ -649,22 +649,22 @@ public:
    * account and throws an exception in case there are any
    * inhomogeneities. Use the function using both a matrix and vector for that
    * case.
-   * Note: this function does not work for MPI vectors because it would require 
-   * ghosted vector in that case, however all ghosted vectors are read-only objects.
-   * Instead, use the analogue with two input arguments.
+   *
+   * @note This function does not work for MPI vectors. Use condense() with
+   * two vector arguments instead.
    */
   template <class VectorType>
   void condense (VectorType &vec) const;
 
   /**
-   * Same as above, but accepts two input arguments. If called in parallel, one 
-   * vector is supposed to be a ghosted vector and the other vector without ghost
-   * elements. The function copies and condenses values from @p vec_ghosted into 
-   * @p vec.
+   * The function copies and condenses values from @p vec_ghosted into @p
+   * output. In a serial code it is equivalent to calling condense (vec). If
+   * called in parallel, @p vec_ghosted is supposed to contain ghost elements
+   * while @p output should not.
    */
   template <class VectorType>
   void condense (const VectorType &vec_ghosted,
-                 VectorType       &vec) const;
+                 VectorType       &output) const;
 
   /**
    * Condense a given matrix and a given vector. The associated matrix struct
index d54eca03e6bb337daa0eb2d1703c2f0a6a348948..12136a8b708e820f00a57a022d87ee6e19692766 100644 (file)
@@ -78,7 +78,9 @@ ConstraintMatrix::condense (const VectorType &vec_ghosted,
 {
   Assert (sorted == true, ExcMatrixNotClosed());
 
-  vec = vec_ghosted;
+  // if this is called with different arguments, we need to copy the data over:
+  if (&vec != &vec_ghosted)
+    vec = vec_ghosted;
 
   // distribute all entries, and set them to zero. do so in
   // two loops because in the first one we need to add to elements

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.