From fb2ded7df05891bfafa33fe9a6f44d7fad895eef Mon Sep 17 00:00:00 2001
From: DennisGlaeser <dennis.glaeser@iws.uni-stuttgart.de>
Date: Wed, 29 Nov 2017 15:33:51 +0100
Subject: [PATCH] [evalGradients] fix errors

---
 dumux/discretization/evalgradients.hh | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/dumux/discretization/evalgradients.hh b/dumux/discretization/evalgradients.hh
index ea0687e423..0384c97c0b 100644
--- a/dumux/discretization/evalgradients.hh
+++ b/dumux/discretization/evalgradients.hh
@@ -56,11 +56,14 @@ evalGradients(const Element& element,
               const typename Element::Geometry::GlobalCoordinate& globalPos)
 {
     using PrimaryVariables = typename BoxElementSolution<TypeTag>::PrimaryVariables;
-    using PriVarGradients = Dune::FieldVector<typename Element::Geometry::GlobalCoordinate, PrimaryVariables::dimension>;
+    using GlobalPosition = typename Element::Geometry::GlobalCoordinate;
 
-    // evalutae gradients using the local finite element basis
+    // evaluate gradients using the local finite element basis
     const auto& localBasis = fvGridGeometry.feCache().get(geometry.type()).localBasis();
 
+    // the inverse transposed of the jacobian matrix
+    const auto jacInvT = g.jacobianInverseTransposed(local);
+
     // evaluate the shape function gradients at the scv center
     using ShapeJacobian = typename decltype(localBasis)::Traits::JacobianType;
     const auto localPos = geometry.local(globalPos);
@@ -68,15 +71,15 @@ evalGradients(const Element& element,
     localBasis.evaluateJacobian(localPos, shapeJacobian);
 
     // interpolate the gradients
-    PriVarGradients result( PrimaryVariables(0.0) );
-    for (int i = 0; i < element.subEntities(dim); ++i)
+    Dune::FieldVector<GlobalPosition, PrimaryVariables::dimension> result( PrimaryVariables(0.0) );
+    for (int i = 0; i < element.subEntities(Element::Geometry::mydimension); ++i)
     {
         // the global shape function gradient
         GlobalPosition gradN;
         jacInvT.mv(shapeJacobian[i][0], gradN);
 
         // add gradient to global privar gradients
-        for (unsigned int pvIdx = 0; pvIdx < numEq; ++pvIdx)
+        for (unsigned int pvIdx = 0; pvIdx < PrimaryVariables::dimension; ++pvIdx)
         {
             GlobalPosition tmp(gradN);
             tmp *= elemSol[i][pvIdx];
@@ -103,11 +106,11 @@ evalGradients(const Element& element,
  */
 template< class Element, class FVGridGeometry, class TypeTag >
 typename CCElementSolution<TypeTag>::PrimaryVariables
-evalSolution(const Element& element,
-             const typename Element::Geometry& geometry,
-             const FVGridGeometry& fvGridGeometry,
-             const CCElementSolution<TypeTag>& elemSol,
-             const typename Element::Geometry::GlobalCoordinate& globalPos)
+evalGradients(const Element& element,
+              const typename Element::Geometry& geometry,
+              const FVGridGeometry& fvGridGeometry,
+              const CCElementSolution<TypeTag>& elemSol,
+              const typename Element::Geometry::GlobalCoordinate& globalPos)
 { DUNE_THROW(Dune::NotImplemented, "General gradient evaluation for cell-centered methods"); }
 
 } // namespace Dumux
-- 
GitLab