From: Wolfgang Bangerth Date: Wed, 6 Apr 2005 04:20:27 +0000 (+0000) Subject: Add multiplication operators. Still have to write comments for them. X-Git-Tag: v8.0.0~14171 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=242caaf42aa265bb8a9edb2fd1d1f15e6158f162;p=dealii.git Add multiplication operators. Still have to write comments for them. git-svn-id: https://svn.dealii.org/trunk@10376 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/base/include/base/tensor.h b/deal.II/base/include/base/tensor.h index c8eb359225..05898ca5cc 100644 --- a/deal.II/base/include/base/tensor.h +++ b/deal.II/base/include/base/tensor.h @@ -468,6 +468,18 @@ double contract (const Tensor<1,dim> &src1, } + +template +inline +double +operator * (const Tensor<1,dim> &src1, + const Tensor<1,dim> &src2) +{ + return contract(src1, src2); +} + + + /** * Contract a tensor of rank 2 with a tensor of rank 1. The result is * dest[i] = sum_j src1[i][j] src2[j]. @@ -489,6 +501,20 @@ void contract (Tensor<1,dim> &dest, +template +Tensor<1,dim> +operator * (const Tensor<2,dim> &src1, + const Tensor<1,dim> &src2) +{ + Tensor<1,dim> dest; + for (unsigned int i=0; idest[i] = sum_j src1[j] src2[j][i]. @@ -510,6 +536,21 @@ void contract (Tensor<1,dim> &dest, +template +inline +Tensor<1,dim> +operator * (const Tensor<1,dim> &src1, + const Tensor<2,dim> &src2) +{ + Tensor<1,dim> dest; + for (unsigned int i=0; idest[i][k] = sum_j src1[i][j] src2[j][k]. @@ -532,6 +573,22 @@ void contract (Tensor<2,dim> &dest, +template +inline +Tensor<2,dim> +operator * (const Tensor<2,dim> &src1, + const Tensor<2,dim> &src2) +{ + Tensor<2,dim> dest; + for (unsigned int i=0; iindex1 of the first tensor, @@ -679,6 +736,23 @@ void contract (Tensor<3,dim> &dest, +template +inline +Tensor<3,dim> +operator * (const Tensor<3,dim> &src1, + const Tensor<2,dim> &src2) +{ + Tensor<3,dim> dest; + for (unsigned int i=0; idest[i][j][l] = sum_k src1[i][k] src2[k][j][l]. @@ -701,6 +775,23 @@ void contract (Tensor<3,dim> &dest, } + +template +inline +Tensor<3,dim> +operator * (const Tensor<2,dim> &src1, + const Tensor<3,dim> &src2) +{ + Tensor<3,dim> dest; + for (unsigned int i=0; idest[i][j][k][l] = sum_m src1[i][j][m] src2[m][k][l]. @@ -710,17 +801,18 @@ void contract (Tensor<3,dim> &dest, */ template inline -void contract (Tensor<4,dim> &dest, - const Tensor<3,dim> &src1, - const Tensor<3,dim> &src2) +Tensor<4,dim> +operator * (const Tensor<3,dim> &src1, + const Tensor<3,dim> &src2) { - dest.clear (); + Tensor<4,dim> dest; for (unsigned int i=0; i