From b2ebaf05c39c0e0de313b4e1c431eaa80ccf1923 Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Tue, 7 Jun 2011 09:10:29 +0000 Subject: [PATCH] also test RealTuple<1> [[Imported from SVN: r7384]] --- test/localgeodesicfestiffnesstest.cc | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/test/localgeodesicfestiffnesstest.cc b/test/localgeodesicfestiffnesstest.cc index dfef3418..8971788a 100644 --- a/test/localgeodesicfestiffnesstest.cc +++ b/test/localgeodesicfestiffnesstest.cc @@ -6,6 +6,7 @@ #include <dune/istl/io.hh> #include <dune/gfe/unitvector.hh> +#include <dune/gfe/realtuple.hh> #include <dune/gfe/localgeodesicfestiffness.hh> #include "multiindex.hh" @@ -98,6 +99,9 @@ void testHessian() { const GridType* grid = makeTestGrid<domainDim>(); + const int spaceDim = TargetSpace::TangentVector::size; + const int embeddedSpaceDim = TargetSpace::EmbeddedTangentVector::size; + // ////////////////////////////////////////////////////////// // Test whether the energy is invariant under isometries // ////////////////////////////////////////////////////////// @@ -128,12 +132,12 @@ void testHessian() assembler.assembleHessian(*grid->template leafbegin<0>(), coefficients); - Matrix<FieldMatrix<double,2,2> > fdHessian = assembler.A_; + Matrix<FieldMatrix<double,spaceDim,spaceDim> > fdHessian = assembler.A_; std::cout << "fdHessian:\n"; printmatrix(std::cout, fdHessian, "fdHessian", "--"); - Matrix<FieldMatrix<double,3,3> > embeddedHessian(nDofs,nDofs); + Matrix<FieldMatrix<double,embeddedSpaceDim,embeddedSpaceDim> > embeddedHessian(nDofs,nDofs); embeddedHessian = 0; embeddedHessian[0][0] = TargetSpace::secondDerivativeOfDistanceSquaredWRTSecondArgument(coefficients[1], @@ -151,16 +155,14 @@ void testHessian() Matrix<FieldMatrix<double,2,2> > hessian(nDofs,nDofs); // transform to local tangent space bases - const int blocksize = 2; - const int embeddedBlocksize = 3; - std::vector<Dune::FieldMatrix<double,blocksize,embeddedBlocksize> > orthonormalFrames(nDofs); - std::vector<Dune::FieldMatrix<double,embeddedBlocksize,blocksize> > orthonormalFramesTransposed(nDofs); + std::vector<Dune::FieldMatrix<double,spaceDim,embeddedSpaceDim> > orthonormalFrames(nDofs); + std::vector<Dune::FieldMatrix<double,embeddedSpaceDim,spaceDim> > orthonormalFramesTransposed(nDofs); for (size_t j=0; j<nDofs; j++) { orthonormalFrames[j] = coefficients[j].orthonormalFrame(); - for (int k=0; k<embeddedBlocksize; k++) - for (int l=0; l<blocksize; l++) + for (int k=0; k<embeddedSpaceDim; k++) + for (int l=0; l<spaceDim; l++) orthonormalFramesTransposed[j][k][l] = orthonormalFrames[j][l][k]; } @@ -168,7 +170,7 @@ void testHessian() for (size_t j=0; j<nDofs; j++) for (size_t k=0; k<nDofs; k++) { - Dune::FieldMatrix<double,blocksize,embeddedBlocksize> tmp; + Dune::FieldMatrix<double,spaceDim,embeddedSpaceDim> tmp; Dune::FMatrixHelp::multMatrix(orthonormalFrames[j],embeddedHessian[j][k],tmp); hessian[j][k] = tmp.rightmultiplyany(orthonormalFramesTransposed[k]); @@ -184,5 +186,6 @@ void testHessian() int main(int argc, char** argv) { + testHessian<RealTuple<1>, 1>(); testHessian<UnitVector<3>, 1>(); } -- GitLab