From 90d672f26a1f970a196d093d7ca86343784c9de5 Mon Sep 17 00:00:00 2001
From: Oliver Sander <sander@igpm.rwth-aachen.de>
Date: Tue, 23 Oct 2007 12:47:01 +0000
Subject: [PATCH] moved the vector transformation from the reference element
 out of the method interpolateVelocity()

[[Imported from SVN: r1719]]
---
 src/quaternion.hh   | 4 +---
 src/rodassembler.cc | 9 +++++++--
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/quaternion.hh b/src/quaternion.hh
index 293e6b82..c2e233c3 100644
--- a/src/quaternion.hh
+++ b/src/quaternion.hh
@@ -340,7 +340,7 @@ public:
         \param omega must be between 0 and 1
     */
     static Quaternion<T> interpolateDerivative(const Quaternion<T>& a, const Quaternion<T>& b, 
-                                               double omega, double intervalLength) {
+                                               double omega) {
         Quaternion<T> result(0);
 
         // Compute difference on T_a SO(3)
@@ -349,8 +349,6 @@ public:
         Dune::FieldVector<double,3> v = xi;
         v *= omega;
         
-        xi /= intervalLength;
-
         // //////////////////////////////////////////////////////////////
         //   v now contains the derivative at 'a'.  The derivative at
         //   the requested site is v pushed forward by Dexp.
diff --git a/src/rodassembler.cc b/src/rodassembler.cc
index a1fe9445..a942e256 100644
--- a/src/rodassembler.cc
+++ b/src/rodassembler.cc
@@ -324,7 +324,9 @@ getStrain(const Dune::array<Configuration,2>& localSolution,
         
     // Get the derivative of the rotation at the quadrature point by interpolating in $H$
     Quaternion<double> q_s = Quaternion<double>::interpolateDerivative(localSolution[0].q, localSolution[1].q,
-                                                                       pos, 1/shapeGrad[1]);
+                                                                       pos);
+    // Transformation from the reference element
+    q_s *= inv[0][0];
         
     // /////////////////////////////////////////////
     //   Sum it all up
@@ -483,7 +485,10 @@ assembleGradient(const Entity& element,
         
         // Get the derivative of the rotation at the quadrature point by interpolating in $H$
         Quaternion<double> q_s = Quaternion<double>::interpolateDerivative(solution[0].q, solution[1].q,
-                                                                              quadPos, integrationElement);
+                                                                           quadPos);
+        // Transformation from the reference element
+        q_s *= inv[0][0];
+        
         
         // The current strain
         FieldVector<double,blocksize> strain = getStrain(solution, element, quadPos);
-- 
GitLab