diff --git a/src/quaternion.hh b/src/quaternion.hh index 293e6b820fc857ad83068d540f1019f12ea3cba3..c2e233c338ff918037cc996743c7132dfe30d7e0 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 a1fe9445338235836cd004abd5e42eac9d5fbb2a..a942e256953dca510fcf22fb75c641da5219d4ff 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);