From 37d699b2b7d685bf4e45f0fef9fabfa557bf678e Mon Sep 17 00:00:00 2001 From: bangerth Date: Thu, 11 Dec 2008 20:57:48 +0000 Subject: [PATCH] Add specializations for symmetrize for the various dimensions. git-svn-id: https://svn.dealii.org/trunk@17916 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/base/include/base/symmetric_tensor.h | 64 +++++++++++++++----- 1 file changed, 49 insertions(+), 15 deletions(-) diff --git a/deal.II/base/include/base/symmetric_tensor.h b/deal.II/base/include/base/symmetric_tensor.h index 1cb86e4299..9a75321aff 100644 --- a/deal.II/base/include/base/symmetric_tensor.h +++ b/deal.II/base/include/base/symmetric_tensor.h @@ -2452,27 +2452,61 @@ outer_product (const SymmetricTensor<2,dim> &t1, /** - * Return the symmetrized version of the full rank-2 tensor, - * i.e. (t+transpose(t))/2, as a symmetric rank-2 tensor. + * Return the symmetrized version of a full rank-2 tensor, + * i.e. (t+transpose(t))/2, as a symmetric rank-2 tensor. This is the version + * for dim==1. * * @relates SymmetricTensor * @author Wolfgang Bangerth, 2005 */ -template inline -SymmetricTensor<2,dim> -symmetrize (const Tensor<2,dim> &t) +SymmetricTensor<2,1> +symmetrize (const Tensor<2,1> &t) { - SymmetricTensor<2,dim> s; - for (unsigned int i=0; i(i,i)) = t[i][i]; - - for (unsigned int j=i+1; j(i,j)) - = (t[i][j] + t[j][i])/2; - } - return s; + const double array[1] + = { t[0][0] }; + return SymmetricTensor<2,1>(array); +} + + + +/** + * Return the symmetrized version of a full rank-2 tensor, + * i.e. (t+transpose(t))/2, as a symmetric rank-2 tensor. This is the version + * for dim==2. + * + * @relates SymmetricTensor + * @author Wolfgang Bangerth, 2005 + */ +inline +SymmetricTensor<2,2> +symmetrize (const Tensor<2,2> &t) +{ + const double array[3] + = { t[0][0], t[1][1], (t[0][1] + t[1][0])/2 }; + return SymmetricTensor<2,2>(array); +} + + + +/** + * Return the symmetrized version of a full rank-2 tensor, + * i.e. (t+transpose(t))/2, as a symmetric rank-2 tensor. This is the version + * for dim==3. + * + * @relates SymmetricTensor + * @author Wolfgang Bangerth, 2005 + */ +inline +SymmetricTensor<2,3> +symmetrize (const Tensor<2,3> &t) +{ + const double array[6] + = { t[0][0], t[1][1], t[2][2], + (t[0][1] + t[1][0])/2, + (t[0][2] + t[2][0])/2, + (t[1][2] + t[2][1])/2 }; + return SymmetricTensor<2,3>(array); } -- 2.39.5