dune-geometry  2.2.0
mockgeometry.hh
Go to the documentation of this file.
00001 // -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
00002 // vi: set et ts=8 sw=2 sts=2:
00003 
00004 #ifndef DUNE_GEOMETRY_MOCKGEOMETRY_HH
00005 #define DUNE_GEOMETRY_MOCKGEOMETRY_HH
00006 
00007 #include <cstddef>
00008 
00009 #include <dune/common/fmatrix.hh>
00010 #include <dune/geometry/type.hh>
00011 #include <dune/geometry/genericgeometry/geometry.hh>
00012 #include <dune/geometry/genericgeometry/geometrytraits.hh>
00013 
00014 namespace Dune {
00015 
00017 
00031   template<class ctype, std::size_t mydim, std::size_t coorddim>
00032   class MockGeometry :
00033     public GenericGeometry::BasicGeometry<
00034       mydim, GenericGeometry::DefaultGeometryTraits<ctype, coorddim, coorddim>
00035       >
00036   {
00037     typedef GenericGeometry::DefaultGeometryTraits<ctype, coorddim, coorddim>
00038       Traits;
00039     typedef GenericGeometry::BasicGeometry<mydim, Traits> Base;
00040 
00041     // Hide members of BasicGeometry that are not part of Dune::Geometry
00042     using typename Base::JacobianInverseTransposed;
00043 
00044   public:
00046     typedef FieldMatrix<ctype, coorddim, mydim> Jacobian;
00048     typedef FieldMatrix<ctype, mydim, coorddim> JacobianTransposed;
00049 
00051     MockGeometry() {}
00053     template<class CoordVector>
00054     MockGeometry(const GeometryType &type, const CoordVector &coords) :
00055       Base(type, coords)
00056     { }
00058     template<int fatherdim>
00059     MockGeometry(const MockGeometry<ctype, fatherdim, coorddim> &father,
00060                  int i) :
00061       Base(static_cast<const GenericGeometry::BasicGeometry<
00062              fatherdim,
00063              GenericGeometry::DefaultGeometryTraits<ctype, coorddim, coorddim>
00064              > &>(father),
00065            i)
00066     { }
00067 
00069     JacobianTransposed jacobianTransposed
00070     (const typename Base::LocalCoordinate &local) const
00071     { return Base::jacobianTransposed(local); }
00073     Jacobian jacobianInverseTransposed
00074     (const typename Base::LocalCoordinate &local) const
00075     { return Base::jacobianInverseTransposed(local); }
00076   };
00077 
00078 }  // namespace Dune
00079 
00080 #endif // DUNE_GEOMETRY_MOCKGEOMETRY_HH