From 7a00ee214816b95128ad1d0d9b452fc49af2e15b Mon Sep 17 00:00:00 2001 From: Oliver Sander <oliver.sander@tu-dresden.de> Date: Fri, 17 May 2019 12:06:45 +0200 Subject: [PATCH] Properly convert SymmetricMatrix to FieldMatrix --- dune/gfe/symmetricmatrix.hh | 12 ++++++++++++ test/localgeodesicfestiffnesstest.cc | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/dune/gfe/symmetricmatrix.hh b/dune/gfe/symmetricmatrix.hh index a8d847bb..8eae7135 100644 --- a/dune/gfe/symmetricmatrix.hh +++ b/dune/gfe/symmetricmatrix.hh @@ -2,6 +2,7 @@ #define DUNE_GFE_SYMMETRICMATRIX_HH #include <dune/common/fvector.hh> +#include <dune/common/fmatrix.hh> namespace Dune { @@ -79,6 +80,17 @@ public: data_.axpy(a,other.data_); } + /** \brief Return the FieldMatrix representation of the symmetric tensor.*/ + Dune::FieldMatrix<T,N,N> matrix() const + { + Dune::FieldMatrix<T,N,N> mat; + for (int i=0; i<N; i++) + for (int j=0; j<=i; j++) + mat[j][i] = mat[i][j] = this->operator()(i,j); + + return mat; + } + private: Dune::FieldVector<T,N*(N+1)/2> data_; }; diff --git a/test/localgeodesicfestiffnesstest.cc b/test/localgeodesicfestiffnesstest.cc index 9f79510e..cbde11a7 100644 --- a/test/localgeodesicfestiffnesstest.cc +++ b/test/localgeodesicfestiffnesstest.cc @@ -151,10 +151,10 @@ void testHessian() embeddedHessian = 0; embeddedHessian[0][0] = TargetSpace::secondDerivativeOfDistanceSquaredWRTSecondArgument(coefficients[1], - coefficients[0]); + coefficients[0]).matrix(); embeddedHessian[1][1] = TargetSpace::secondDerivativeOfDistanceSquaredWRTSecondArgument(coefficients[0], - coefficients[1]); + coefficients[1]).matrix(); embeddedHessian[0][1] = TargetSpace::secondDerivativeOfDistanceSquaredWRTFirstAndSecondArgument(coefficients[0], coefficients[1]); -- GitLab