]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Implementation of add function for three vectors.
authorRalf Hartmann <Ralf.Hartmann@dlr.de>
Tue, 21 Feb 2006 17:07:34 +0000 (17:07 +0000)
committerRalf Hartmann <Ralf.Hartmann@dlr.de>
Tue, 21 Feb 2006 17:07:34 +0000 (17:07 +0000)
git-svn-id: https://svn.dealii.org/trunk@12448 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/lac/include/lac/vector.h
deal.II/lac/include/lac/vector.templates.h

index 23d0d63c24423249e2f36657c0fa62e74a86e58f..df78d9f203a6713b6a3e3f158914b8f0cfd16730 100644 (file)
@@ -604,16 +604,23 @@ class Vector :
     void scale (const Vector<Number2> &scaling_factors);
     
                                     /**
-                                     * Assignment <tt>*this = a*V</tt>.
+                                     * Assignment <tt>*this = a*u</tt>.
                                      */
     template <typename Number2>
-    void equ (const Number a, const Vector<Number2>& V);
+    void equ (const Number a, const Vector<Number2>& u);
     
                                     /**
-                                     * Assignment <tt>*this = a*V + b*W</tt>.
+                                     * Assignment <tt>*this = a*u + b*v</tt>.
                                      */
-    void equ (const Number a, const Vector<Number>& V,
-             const Number b, const Vector<Number>& W);
+    void equ (const Number a, const Vector<Number>& u,
+             const Number b, const Vector<Number>& v);
+    
+                                    /**
+                                     * Assignment <tt>*this = a*u + b*v + b*w</tt>.
+                                     */
+    void equ (const Number a, const Vector<Number>& u,
+             const Number b, const Vector<Number>& v,
+             const Number c, const Vector<Number>& w);
 
                                     /**
                                      * Compute the elementwise ratio of the
index 0c4411486af66a45826fd8fe3d73ac8255168712..db9fbf7c78671a67ad9dc40823042d23ad8f0229 100644 (file)
@@ -558,6 +558,19 @@ void Vector<Number>::scale (const Vector<Number2> &s)
 }
 
 
+template <typename Number>
+template <typename Number2>
+void Vector<Number>::equ (const Number a, const Vector<Number2>& u)
+{
+  Assert (vec_size!=0, ExcEmptyObject());
+  Assert (vec_size == u.vec_size, ExcDimensionMismatch(vec_size, u.vec_size));
+  iterator i_ptr = begin(),
+          i_end = end();
+  typename Vector<Number2>::const_iterator u_ptr = u.begin();
+  while (i_ptr!=i_end)
+    *i_ptr++ = a * *u_ptr++;
+}
+
 
 template <typename Number>
 void Vector<Number>::equ (const Number a, const Vector<Number>& u,
@@ -575,22 +588,25 @@ void Vector<Number>::equ (const Number a, const Vector<Number>& u,
 }
 
 
-
 template <typename Number>
-template <typename Number2>
-void Vector<Number>::equ (const Number a, const Vector<Number2>& u)
+void Vector<Number>::equ (const Number a, const Vector<Number>& u,
+                         const Number b, const Vector<Number>& v,
+                         const Number c, const Vector<Number>& w)
 {
   Assert (vec_size!=0, ExcEmptyObject());
   Assert (vec_size == u.vec_size, ExcDimensionMismatch(vec_size, u.vec_size));
+  Assert (vec_size == v.vec_size, ExcDimensionMismatch(vec_size, v.vec_size));
+  Assert (vec_size == w.vec_size, ExcDimensionMismatch(vec_size, w.vec_size));
   iterator i_ptr = begin(),
           i_end = end();
-  typename Vector<Number2>::const_iterator u_ptr = u.begin();
+  const_iterator u_ptr = u.begin(),
+                v_ptr = v.begin(),
+                w_ptr = w.begin();
   while (i_ptr!=i_end)
-    *i_ptr++ = a * *u_ptr++;
+    *i_ptr++ = a * *u_ptr++  + b * *v_ptr++ + c * *w_ptr++;
 }
 
 
-
 template <typename Number>
 void Vector<Number>::ratio (const Vector<Number> &a, const Vector<Number> &b)
 {

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.