From 0b5a00970f777dc969f169d866e986520ac4ed1a Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Tue, 27 Apr 2010 15:06:59 +0000 Subject: [PATCH] Start working on using local bases of the tangent spaces of S^n. For this now the TangentVector class of S^n has only n components, while the EmbeddedTangentVector class still has n+1. The code around it needs to be fixed accordingly. [[Imported from SVN: r5963]] --- dune/gfe/geodesicfeassembler.hh | 2 +- dune/gfe/localgeodesicfestiffness.hh | 4 ++-- dune/gfe/riemanniantrsolver.hh | 4 ++-- dune/gfe/targetspacertrsolver.hh | 2 +- dune/gfe/unitvector.hh | 4 ++-- harmonicmaps.cc | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/dune/gfe/geodesicfeassembler.hh b/dune/gfe/geodesicfeassembler.hh index 5924b8a4..a76ffe7f 100644 --- a/dune/gfe/geodesicfeassembler.hh +++ b/dune/gfe/geodesicfeassembler.hh @@ -22,7 +22,7 @@ class GeodesicFEAssembler { enum { gridDim = GridView::dimension }; //! Dimension of a tangent space - enum { blocksize = TargetSpace::TangentVector::size }; + enum { blocksize = TargetSpace::EmbeddedTangentVector::size }; //! typedef Dune::FieldMatrix<double, blocksize, blocksize> MatrixBlock; diff --git a/dune/gfe/localgeodesicfestiffness.hh b/dune/gfe/localgeodesicfestiffness.hh index c491b6fd..49e4631d 100644 --- a/dune/gfe/localgeodesicfestiffness.hh +++ b/dune/gfe/localgeodesicfestiffness.hh @@ -309,7 +309,7 @@ assemble(const Entity& element, /** \brief Specialization for unit vectors */ template<class GridView, int dim> class LocalGeodesicFEStiffness <GridView,UnitVector<dim> > - : public Dune::LocalStiffness<GridView,double,UnitVector<dim>::TangentVector::size> + : public Dune::LocalStiffness<GridView,double,UnitVector<dim>::EmbeddedTangentVector::size> { typedef UnitVector<dim> TargetSpace; @@ -333,7 +333,7 @@ class LocalGeodesicFEStiffness <GridView,UnitVector<dim> > public: //! Each block is x, y, theta in 2d, T (R^3 \times SO(3)) in 3d - enum { blocksize = TargetSpace::TangentVector::size }; + enum { blocksize = TargetSpace::EmbeddedTangentVector::size }; // define the number of components of your system, this is used outside // to allocate the correct size of (dense) blocks with a FieldMatrix diff --git a/dune/gfe/riemanniantrsolver.hh b/dune/gfe/riemanniantrsolver.hh index 7c1ec683..4fd20899 100644 --- a/dune/gfe/riemanniantrsolver.hh +++ b/dune/gfe/riemanniantrsolver.hh @@ -18,9 +18,9 @@ template <class GridType, class TargetSpace> class RiemannianTrustRegionSolver : public IterativeSolver<std::vector<TargetSpace>, - Dune::BitSetVector<TargetSpace::TangentVector::size> > + Dune::BitSetVector<TargetSpace::EmbeddedTangentVector::size> > { - const static int blocksize = TargetSpace::TangentVector::size; + const static int blocksize = TargetSpace::EmbeddedTangentVector::size; const static int gridDim = GridType::dimension; diff --git a/dune/gfe/targetspacertrsolver.hh b/dune/gfe/targetspacertrsolver.hh index 87219999..cf2ede95 100644 --- a/dune/gfe/targetspacertrsolver.hh +++ b/dune/gfe/targetspacertrsolver.hh @@ -13,7 +13,7 @@ class TargetSpaceRiemannianTRSolver // : public IterativeSolver<std::vector<TargetSpace>, // Dune::BitSetVector<TargetSpace::TangentVector::size> > { - const static int blocksize = TargetSpace::TangentVector::size; + const static int blocksize = TargetSpace::EmbeddedTangentVector::size; // Centralize the field type here typedef double field_type; diff --git a/dune/gfe/unitvector.hh b/dune/gfe/unitvector.hh index 059d99da..98d4553f 100644 --- a/dune/gfe/unitvector.hh +++ b/dune/gfe/unitvector.hh @@ -39,7 +39,7 @@ public: /** \brief The type used for coordinates */ typedef double ctype; - typedef Dune::FieldVector<double,dim> TangentVector; + typedef Dune::FieldVector<double,dim-1> TangentVector; typedef Dune::FieldVector<double,dim> EmbeddedTangentVector; UnitVector<dim>& operator=(const Dune::FieldVector<double,dim>& vector) @@ -50,7 +50,7 @@ public: } /** \brief The exponential map */ - static UnitVector exp(const UnitVector& p, const TangentVector& v) { + static UnitVector exp(const UnitVector& p, const EmbeddedTangentVector& v) { assert( std::abs(p.data_*v) < 1e-5 ); diff --git a/harmonicmaps.cc b/harmonicmaps.cc index c7915287..7d529c9d 100644 --- a/harmonicmaps.cc +++ b/harmonicmaps.cc @@ -45,7 +45,7 @@ typedef RealTuple<1> TargetSpace; #endif // Tangent vector of the image space -const int blocksize = TargetSpace::TangentVector::size; +const int blocksize = TargetSpace::EmbeddedTangentVector::size; using namespace Dune; -- GitLab