]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Define product between a vector and a symmetric tensor.
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Fri, 25 Mar 2016 20:28:39 +0000 (15:28 -0500)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Sat, 26 Mar 2016 01:14:33 +0000 (20:14 -0500)
Also update some confusing pieces of documentation.

doc/news/changes.h
include/deal.II/base/symmetric_tensor.h

index f47409cb594fef1ecec659910e3fab65dfbc94a5..8f76112a59d9f7192e6a8bc0935f729d8c14a704 100644 (file)
@@ -111,6 +111,14 @@ inconvenience this causes.
 <h3>Specific improvements</h3>
 
 <ol>
+ <li> New: The product of a rank-1 tensor (a vector) and a rank-2
+ symmetric tensor (a symmetric matrix) is now defined and yields
+ a rank-1 tensor (a vector). The opposite product was previously
+ already defined.
+ <br>
+ (Wolfgang Bangerth, 2016/03/25)
+ </li>
+
  <li> Fixed: DoFHandler::locally_owned_dofs() could create a segmentation
  fault in cases where some processors do not own any cells. This was caused
  by an incorrect computation in DoFTools::locally_owned_dofs_per_subdomain().
index 4743fd22ad5a9969eb4046ab4b837829f31ef5e9..671a1c330144e836f87cf67e4ad05a00fc3d6c8c 100644 (file)
@@ -3067,16 +3067,8 @@ double_contract (SymmetricTensor<2,3,Number> &tmp,
 
 
 /**
- * Multiplication operator performing a contraction of the last index of the
- * first argument and the first index of the second argument. This function
- * therefore does the same as the corresponding <tt>contract</tt> function,
- * but returns the result as a return value, rather than writing it into the
- * reference given as the first argument to the <tt>contract</tt> function.
- *
- * Note that for the <tt>Tensor</tt> class, the multiplication operator only
- * performs a contraction over a single pair of indices. This is in contrast
- * to the multiplication operator for symmetric tensors, which does the double
- * contraction.
+ * Multiply a symmetric rank-2 tensor (i.e., a matrix) by a rank-1 tensor
+ * (i.e., a vector). The result is a rank-1 tensor (i.e., a vector).
  *
  * @relates SymmetricTensor
  * @author Wolfgang Bangerth, 2005
@@ -3094,6 +3086,23 @@ operator * (const SymmetricTensor<2,dim,Number> &src1,
 }
 
 
+/**
+ * Multiply a rank-1 tensor (i.e., a vector) by a symmetric rank-2 tensor
+ * (i.e., a matrix). The result is a rank-1 tensor (i.e., a vector).
+ *
+ * @relates SymmetricTensor
+ * @author Wolfgang Bangerth, 2005
+ */
+template <int dim, typename Number>
+Tensor<1,dim,Number>
+operator * (const Tensor<1,dim,Number> &src1,
+            const SymmetricTensor<2,dim,Number> &src2)
+{
+  // this is easy for symmetric tensors:
+  return src2 * src1;
+}
+
+
 /**
  * Output operator for symmetric tensors of rank 2. Print the elements
  * consecutively, with a space in between, two spaces between rank 1

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.