From 827979a870fcc1af6ab2e47b3a07459c6b9b578e Mon Sep 17 00:00:00 2001
From: Oliver Sander <sander@igpm.rwth-aachen.de>
Date: Tue, 31 Aug 2010 13:44:51 +0000
Subject: [PATCH] Use a special implementation of a rank-3 tensor

[[Imported from SVN: r6298]]
---
 dune/gfe/localgeodesicfefunction.hh |  5 +++--
 dune/gfe/tensor3.hh                 | 17 +++++++++++++++++
 2 files changed, 20 insertions(+), 2 deletions(-)
 create mode 100644 dune/gfe/tensor3.hh

diff --git a/dune/gfe/localgeodesicfefunction.hh b/dune/gfe/localgeodesicfefunction.hh
index ba464af7..ecefdbea 100644
--- a/dune/gfe/localgeodesicfefunction.hh
+++ b/dune/gfe/localgeodesicfefunction.hh
@@ -10,6 +10,7 @@
 #include <dune/gfe/targetspacertrsolver.hh>
 
 #include <dune/gfe/svd.hh>
+#include <dune/gfe/tensor3.hh>
 
 //! calculates ret = A * B
 template< class K, int m, int n, int p >
@@ -290,11 +291,11 @@ evaluateDerivativeOfGradientWRTCoefficient(const Dune::FieldVector<ctype, dim>&
     assembler.assembleHessian(q,dFdq);
     
     //
-    std::array<Dune::FieldMatrix<double,targetDim,targetDim>, dim+1> dcDqF;
+    Tensor3<double,dim+1,targetDim,targetDim> dcDqF;
     
     
     
-    std::array<Dune::FieldMatrix<double,targetDim,dim+1>, dim+1> dcDwF;
+    Tensor3<double,dim+1,targetDim,dim+1> dcDwF;
     for (size_t i=0; i<dcDwF.size(); i++)
         dcDwF[i] = TargetSpace::secondDerivativeOfDistanceSquaredWRTFirstAndSecondArgument(coefficients_[i], q);
     
diff --git a/dune/gfe/tensor3.hh b/dune/gfe/tensor3.hh
new file mode 100644
index 00000000..4845b6be
--- /dev/null
+++ b/dune/gfe/tensor3.hh
@@ -0,0 +1,17 @@
+#ifndef DUNE_TENSOR_3_HH
+#define DUNE_TENSOR_3_HH
+
+/** \file
+    \brief A third-rank tensor
+    */
+    
+template <class T, int N1, int N2, int N3>
+class Tensor3
+    : public Dune::array<Dune::FieldMatrix<T,N2,N3>,N1>
+{
+
+
+    
+};
+
+#endif
\ No newline at end of file
-- 
GitLab