From 31a13688d405fbe6efbef7fe783bf1352ee474d8 Mon Sep 17 00:00:00 2001
From: Oliver Sander <oliver.sander@tu-dresden.de>
Date: Sat, 27 Feb 2021 17:45:27 +0100
Subject: [PATCH] Fix evil bug in output code

The computation of element centers was wrong (it was in global
coordinates rather than in local ones).  This did not matter
for quasiconvexity-test.cc (because there all shape function
derivatives are constant, and it doesn't matter where you
evaluate them).  But it lead to wrong results in
quasiconvexity-test-micromorphic.cc.
---
 src/quasiconvexity-test-micromorphic.cc | 2 +-
 src/quasiconvexity-test.cc              | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/quasiconvexity-test-micromorphic.cc b/src/quasiconvexity-test-micromorphic.cc
index 10a9b1f..5f41b95 100644
--- a/src/quasiconvexity-test-micromorphic.cc
+++ b/src/quasiconvexity-test-micromorphic.cc
@@ -76,7 +76,7 @@ void writeDisplacement(const Basis& basis, const Vector& deformation, const Fiel
     // store values of shape functions
     std::vector<Dune::FieldVector<double,dim> > shapeFunctionValues(localFiniteElement.size());
 
-    auto p = element.geometry().center();
+    auto p = referenceElement(element).position(0,0);  // Element center in local coordinates
 
     // get gradients of shape functions
     localFiniteElement.localBasis().evaluateFunction(p, shapeFunctionValues);
diff --git a/src/quasiconvexity-test.cc b/src/quasiconvexity-test.cc
index 94905a9..173bf59 100644
--- a/src/quasiconvexity-test.cc
+++ b/src/quasiconvexity-test.cc
@@ -139,7 +139,7 @@ void writeDisplacement(const Basis& basis, const Vector& periodicX, const FieldM
     std::vector<Dune::FieldMatrix<double,1,dim> > referenceGradients(localFiniteElement.size());
     std::vector<Dune::FieldVector<double,dim> > gradients(localFiniteElement.size());
 
-    auto p = element.geometry().center();
+    auto p = referenceElement(element).position(0,0);  // Element center in local coordinates
 
     const auto jacobianInverseTransposed = element.geometry().jacobianInverseTransposed(p);
 
-- 
GitLab