From 4f4b44df084f45762afc6c9f9f09a86db9ae77e6 Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Sun, 1 Jan 2012 17:44:59 +0000 Subject: [PATCH] make the test compile with the current code. Didn't dare to actually run it yet [[Imported from SVN: r8334]] --- test/rotationtest.cc | 58 +++++++++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 20 deletions(-) diff --git a/test/rotationtest.cc b/test/rotationtest.cc index 2ecbb3d8..2970fbaa 100644 --- a/test/rotationtest.cc +++ b/test/rotationtest.cc @@ -4,8 +4,13 @@ #include <dune/common/fmatrix.hh> +#warning Do not include onedgrid.hh +#include <dune/grid/onedgrid.hh> + #include <dune/gfe/rotation.hh> #include <dune/gfe/svd.hh> +#warning Do not include rodlocalstiffness.hh +#include <dune/gfe/rodlocalstiffness.hh> #include "valuefactory.hh" using namespace Dune; @@ -134,7 +139,7 @@ void testDerivativeOfInterpolatedPosition() } // Compute analytical gradient - array<Rotation<double,3>,6> grad; + array<Quaternion<double>,6> grad; RodLocalStiffness<OneDGrid,double>::interpolationDerivative(q[i], q[j], s, grad); for (int l=0; l<6; l++) { @@ -154,35 +159,48 @@ void testDerivativeOfInterpolatedPosition() for (int l=1; l<7; l++) { double intervalLength = l/(double(3)); + Dune::FieldVector<double,3> variation; - fdGrad[0] = Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(eps,0,0)), - q[j], s, intervalLength); - fdGrad[0] -= Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(-eps,0,0)), - q[j], s, intervalLength); + variation = 0; variation[0] = eps; + fdGrad[0] = Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(SkewMatrix<double,3>(variation))), + q[j], s); + variation = 0; variation[0] = -eps; + fdGrad[0] -= Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(SkewMatrix<double,3>(variation))), + q[j], s); fdGrad[0] /= 2*eps; - fdGrad[1] = Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(0,eps,0)), - q[j], s, intervalLength); - fdGrad[1] -= Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(0,-eps,0)), - q[j], s, intervalLength); + variation = 0; variation[1] = eps; + fdGrad[1] = Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(SkewMatrix<double,3>(variation))), + q[j], s); + variation = 0; variation[1] = -eps; + fdGrad[1] -= Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(SkewMatrix<double,3>(variation))), + q[j], s); fdGrad[1] /= 2*eps; - fdGrad[2] = Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(0,0,eps)), - q[j], s, intervalLength); - fdGrad[2] -= Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(0,0,-eps)), - q[j], s, intervalLength); + variation = 0; variation[2] = eps; + fdGrad[2] = Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(SkewMatrix<double,3>(variation))), + q[j], s); + variation = 0; variation[2] = -eps; + fdGrad[2] -= Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(SkewMatrix<double,3>(variation))), + q[j], s); fdGrad[2] /= 2*eps; - fdGrad[3] = Rotation<double,3>::interpolateDerivative(q[i], q[j].mult(Rotation<double,3>::exp(eps,0,0)), s, intervalLength); - fdGrad[3] -= Rotation<double,3>::interpolateDerivative(q[i], q[j].mult(Rotation<double,3>::exp(-eps,0,0)), s, intervalLength); + variation = 0; variation[0] = eps; + fdGrad[3] = Rotation<double,3>::interpolateDerivative(q[i], q[j].mult(Rotation<double,3>::exp(SkewMatrix<double,3>(variation))), s); + variation = 0; variation[0] = -eps; + fdGrad[3] -= Rotation<double,3>::interpolateDerivative(q[i], q[j].mult(Rotation<double,3>::exp(SkewMatrix<double,3>(variation))), s); fdGrad[3] /= 2*eps; - fdGrad[4] = Rotation<double,3>::interpolateDerivative(q[i], q[j].mult(Rotation<double,3>::exp(0,eps,0)), s, intervalLength); - fdGrad[4] -= Rotation<double,3>::interpolateDerivative(q[i], q[j].mult(Rotation<double,3>::exp(0,-eps,0)), s, intervalLength); + variation = 0; variation[1] = eps; + fdGrad[4] = Rotation<double,3>::interpolateDerivative(q[i], q[j].mult(Rotation<double,3>::exp(SkewMatrix<double,3>(variation))), s); + variation = 0; variation[1] = -eps; + fdGrad[4] -= Rotation<double,3>::interpolateDerivative(q[i], q[j].mult(Rotation<double,3>::exp(SkewMatrix<double,3>(variation))), s); fdGrad[4] /= 2*eps; - fdGrad[5] = Rotation<double,3>::interpolateDerivative(q[i], q[j].mult(Rotation<double,3>::exp(0,0,eps)), s, intervalLength); - fdGrad[5] -= Rotation<double,3>::interpolateDerivative(q[i], q[j].mult(Rotation<double,3>::exp(0,0,-eps)), s, intervalLength); + variation = 0; variation[2] = -eps; + fdGrad[5] = Rotation<double,3>::interpolateDerivative(q[i], q[j].mult(Rotation<double,3>::exp(SkewMatrix<double,3>(variation))), s); + variation = 0; variation[2] = -eps; + fdGrad[5] -= Rotation<double,3>::interpolateDerivative(q[i], q[j].mult(Rotation<double,3>::exp(SkewMatrix<double,3>(variation))), s); fdGrad[5] /= 2*eps; // Compute analytical velocity vector gradient @@ -263,7 +281,7 @@ void testRotation(Rotation<double,3> q) for (int l=-2; l<2; l++) if (i!=0 || j!=0 || k!=0 || l!=0) { - Rotation<double,3> q2(Rotation<double,3>(i,j,k,l)); + Rotation<double,3> q2(Quaternion<double>(i,j,k,l)); q2.normalize(); // set up corresponding rotation matrix -- GitLab