Skip to content
Snippets Groups Projects
Commit 4f4b44df authored by Oliver Sander's avatar Oliver Sander Committed by sander@FU-BERLIN.DE
Browse files

make the test compile with the current code. Didn't dare to actually run it yet

[[Imported from SVN: r8334]]
parent f6970a69
No related branches found
No related tags found
No related merge requests found
...@@ -4,8 +4,13 @@ ...@@ -4,8 +4,13 @@
#include <dune/common/fmatrix.hh> #include <dune/common/fmatrix.hh>
#warning Do not include onedgrid.hh
#include <dune/grid/onedgrid.hh>
#include <dune/gfe/rotation.hh> #include <dune/gfe/rotation.hh>
#include <dune/gfe/svd.hh> #include <dune/gfe/svd.hh>
#warning Do not include rodlocalstiffness.hh
#include <dune/gfe/rodlocalstiffness.hh>
#include "valuefactory.hh" #include "valuefactory.hh"
using namespace Dune; using namespace Dune;
...@@ -134,7 +139,7 @@ void testDerivativeOfInterpolatedPosition() ...@@ -134,7 +139,7 @@ void testDerivativeOfInterpolatedPosition()
} }
// Compute analytical gradient // Compute analytical gradient
array<Rotation<double,3>,6> grad; array<Quaternion<double>,6> grad;
RodLocalStiffness<OneDGrid,double>::interpolationDerivative(q[i], q[j], s, grad); RodLocalStiffness<OneDGrid,double>::interpolationDerivative(q[i], q[j], s, grad);
for (int l=0; l<6; l++) { for (int l=0; l<6; l++) {
...@@ -154,35 +159,48 @@ void testDerivativeOfInterpolatedPosition() ...@@ -154,35 +159,48 @@ void testDerivativeOfInterpolatedPosition()
for (int l=1; l<7; l++) { for (int l=1; l<7; l++) {
double intervalLength = l/(double(3)); 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)), variation = 0; variation[0] = eps;
q[j], s, intervalLength); fdGrad[0] = Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(SkewMatrix<double,3>(variation))),
fdGrad[0] -= Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(-eps,0,0)), q[j], s);
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);
fdGrad[0] /= 2*eps; fdGrad[0] /= 2*eps;
fdGrad[1] = Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(0,eps,0)), variation = 0; variation[1] = eps;
q[j], s, intervalLength); fdGrad[1] = Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(SkewMatrix<double,3>(variation))),
fdGrad[1] -= Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(0,-eps,0)), q[j], s);
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);
fdGrad[1] /= 2*eps; fdGrad[1] /= 2*eps;
fdGrad[2] = Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(0,0,eps)), variation = 0; variation[2] = eps;
q[j], s, intervalLength); fdGrad[2] = Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(SkewMatrix<double,3>(variation))),
fdGrad[2] -= Rotation<double,3>::interpolateDerivative(q[i].mult(Rotation<double,3>::exp(0,0,-eps)), q[j], s);
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);
fdGrad[2] /= 2*eps; fdGrad[2] /= 2*eps;
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(-eps,0,0)), s, intervalLength); 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[3] /= 2*eps;
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(0,-eps,0)), s, intervalLength); 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[4] /= 2*eps;
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(0,0,-eps)), s, intervalLength); 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; fdGrad[5] /= 2*eps;
// Compute analytical velocity vector gradient // Compute analytical velocity vector gradient
...@@ -263,7 +281,7 @@ void testRotation(Rotation<double,3> q) ...@@ -263,7 +281,7 @@ void testRotation(Rotation<double,3> q)
for (int l=-2; l<2; l++) for (int l=-2; l<2; l++)
if (i!=0 || j!=0 || k!=0 || l!=0) { 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(); q2.normalize();
// set up corresponding rotation matrix // set up corresponding rotation matrix
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment