[Dune-devel] [Dune-Commit] dune-geometry r508 - branches/mn-devel/dune/geometry
Martin Nolte
nolte at mathematik.uni-freiburg.de
Wed Apr 17 15:45:56 CEST 2013
Hi Oli,
that was the intention all along and has been done a few minutes ago.
Best,
Martin
On 04/17/2013 03:32 PM, Oliver Sander wrote:
> Hi Martin,
> do you see any reason not to merge this (and the corresponding part
> in geometrygrid) to the trunk?
> Best,
> Oliver
>
> Am 17.04.2013 14:50, schrieb mnolte at dune-project.org:
>> Author: mnolte
>> Date: 2013-04-17 14:50:16 +0200 (Wed, 17 Apr 2013)
>> New Revision: 508
>>
>> Modified:
>> branches/mn-devel/dune/geometry/multilineargeometry.hh
>> Log:
>> remove user data
>>
>>
>> Modified: branches/mn-devel/dune/geometry/multilineargeometry.hh
>> ===================================================================
>> --- branches/mn-devel/dune/geometry/multilineargeometry.hh 2013-04-17
>> 12:34:02 UTC (rev 507)
>> +++ branches/mn-devel/dune/geometry/multilineargeometry.hh 2013-04-17
>> 12:50:16 UTC (rev 508)
>> @@ -114,12 +114,6 @@
>> static const bool v = false;
>> static const unsigned int topologyId = ~0u;
>> };
>> -
>> - /** \brief type of user data
>> -
>> - This is used by GeometryGrid to implement reference-counted
>> geometries.
>> - */
>> - struct UserData {};
>> };
>>
>>
>> @@ -168,8 +162,6 @@
>>
>> For example, GeometryGrid uses this to implement reference counting.
>> */
>> - typedef typename Traits::UserData UserData;
>> -
>> //! type of local coordinates
>> typedef FieldVector< ctype, mydimension> LocalCoordinate;
>> //! type of global coordinates
>> @@ -199,60 +191,45 @@
>> typedef Dune::ReferenceElements< ctype, mydimension> ReferenceElements;
>>
>> private:
>> - struct Storage
>> - : public UserData
>> - {
>> - template< class CornerStorage>
>> - Storage ( const ReferenceElement&refEl, const
>> CornerStorage&cornerStorage,
>> - const UserData&userData )
>> - : UserData( userData ),
>> - refElement(&refEl ),
>> - corners( cornerStorage )
>> - {}
>> -
>> - const ReferenceElement *refElement;
>> - typename Traits::template CornerStorage< mydimension,
>> coorddimension>::Type corners;
>> - };
>> -
>> typedef typename Traits::template CornerStorage< mydimension,
>> coorddimension>::Type::const_iterator CornerIterator;
>>
>> public:
>> /** \brief constructor
>> *
>> - * \param[in] refElement reference element for the geometry
>> - * \param[in] cornerStorage corner storage to store internally
>> - * \param[in] userData user data to store (optional, if default
>> constructable)
>> + * \param[in] refElement reference element for the geometry
>> + * \param[in] corners corners to store internally
>> *
>> - * \note The type of cornerStorage is actually a template argument.
>> + * \note The type of corners is actually a template argument.
>> * It is only required that the internal corner storage can be
>> * constructed from this object.
>> */
>> - template< class CornerStorage>
>> - MultiLinearGeometry ( const ReferenceElement&refElement, const
>> CornerStorage&cornerStorage,
>> - const UserData&userData = UserData() )
>> - : storage_( refElement, cornerStorage, userData )
>> + template< class Corners>
>> + MultiLinearGeometry ( const ReferenceElement&refElement,
>> + const Corners&corners )
>> + : refElement_(&refElement ),
>> + corners_( corners )
>> {}
>>
>> /** \brief constructor
>> *
>> - * \param[in] gt geometry type
>> - * \param[in] cornerStorage corner storage to store internally
>> - * \param[in] userData user data to store (optional, if default
>> constructable)
>> + * \param[in] gt geometry type
>> + * \param[in] corners corners to store internally
>> *
>> - * \note The type of cornerStorage is actually a template argument.
>> + * \note The type of corners is actually a template argument.
>> * It is only required that the internal corner storage can be
>> * constructed from this object.
>> */
>> - template< class CornerStorage>
>> - MultiLinearGeometry ( Dune::GeometryType gt, const
>> CornerStorage&cornerStorage,
>> - const UserData&userData = UserData() )
>> - : storage_( ReferenceElements::general( gt ), cornerStorage, userData )
>> + template< class Corners>
>> + MultiLinearGeometry ( Dune::GeometryType gt,
>> + const Corners&corners )
>> + : refElement_(&ReferenceElements::general( gt ) ),
>> + corners_( corners )
>> {}
>>
>> /** \brief is this mapping affine? */
>> bool affine () const
>> {
>> - CornerIterator cit = storage().corners.begin();
>> + CornerIterator cit = corners_.begin();
>> return affine( topologyId(), integral_constant< int,
>> mydimension>(), cit, jacobianTransposed_ );
>> }
>>
>> @@ -266,7 +243,7 @@
>> GlobalCoordinate corner ( int i ) const
>> {
>> assert( (i>= 0)&& (i< corners()) );
>> - return storage().corners[ i ];
>> + return corners_[ i ];
>> }
>>
>> /** \brief obtain the centroid of the mapping's image */
>> @@ -280,7 +257,7 @@
>> */
>> GlobalCoordinate global ( const LocalCoordinate&local ) const
>> {
>> - CornerIterator cit = storage().corners.begin();
>> + CornerIterator cit = corners_.begin();
>> GlobalCoordinate y;
>> global< false>( topologyId(), integral_constant< int,
>> mydimension>(), cit, ctype( 1 ), local, ctype( 1 ), y );
>> return y;
>> @@ -356,7 +333,7 @@
>> */
>> const JacobianTransposed&jacobianTransposed ( const
>> LocalCoordinate&local ) const
>> {
>> - CornerIterator cit = storage().corners.begin();
>> + CornerIterator cit = corners_.begin();
>> jacobianTransposed< false>( topologyId(), integral_constant< int,
>> mydimension>(), cit, ctype( 1 ), local, ctype( 1 ), jacobianTransposed_ );
>> return jacobianTransposed_;
>> }
>> @@ -369,17 +346,9 @@
>> */
>> const JacobianInverseTransposed&jacobianInverseTransposed ( const
>> LocalCoordinate&local ) const;
>>
>> - /** \brief read-only access to the internal user data */
>> - const UserData&userData () const { return storage_; }
>> - /** \brief read-write access to the internal user data */
>> - UserData&userData () { return storage_; }
>> -
>> protected:
>> - const Storage&storage () const { return storage_; }
>> - Storage&storage () { return storage_; }
>> + const ReferenceElement&refElement () const { return *refElement_; }
>>
>> - const ReferenceElement&refElement () const { return
>> *storage().refElement; }
>> -
>> TopologyId topologyId () const
>> {
>> return topologyId( integral_constant< bool,
>> hasSingleGeometryType>() );
>> @@ -415,7 +384,8 @@
>> mutable JacobianInverseTransposed jacobianInverseTransposed_;
>>
>> private:
>> - Storage storage_;
>> + const ReferenceElement *refElement_;
>> + typename Traits::template CornerStorage< mydimension,
>> coorddimension>::Type corners_;
>> };
>>
>>
>> @@ -476,7 +446,6 @@
>>
>> public:
>> typedef typename Base::ReferenceElement ReferenceElement;
>> - typedef typename Base::UserData UserData;
>>
>> typedef typename Base::ctype ctype;
>>
>> @@ -490,18 +459,16 @@
>> typedef typename Base::JacobianInverseTransposed
>> JacobianInverseTransposed;
>>
>> template< class CornerStorage>
>> - CachedMultiLinearGeometry ( const ReferenceElement&refElement, const
>> CornerStorage&cornerStorage,
>> - const UserData&userData = UserData() )
>> - : Base( refElement, cornerStorage, userData ),
>> + CachedMultiLinearGeometry ( const ReferenceElement&refElement, const
>> CornerStorage&cornerStorage )
>> + : Base( refElement, cornerStorage ),
>> affine_( Base::affine() ),
>> jacobianInverseTransposedComputed_( false ),
>> integrationElementComputed_( false )
>> {}
>>
>> template< class CornerStorage>
>> - CachedMultiLinearGeometry ( Dune::GeometryType gt, const
>> CornerStorage&cornerStorage,
>> - const UserData&userData = UserData() )
>> - : Base( gt, cornerStorage, userData ),
>> + CachedMultiLinearGeometry ( Dune::GeometryType gt, const
>> CornerStorage&cornerStorage )
>> + : Base( gt, cornerStorage ),
>> affine_( Base::affine() ),
>> jacobianInverseTransposedComputed_( false ),
>> integrationElementComputed_( false )
>>
>>
>> _______________________________________________
>> Dune-Commit mailing list
>> Dune-Commit at dune-project.org
>> http://lists.dune-project.org/mailman/listinfo/dune-commit
>
>
> _______________________________________________
> Dune-devel mailing list
> Dune-devel at dune-project.org
> http://lists.dune-project.org/mailman/listinfo/dune-devel
--
Dr. Martin Nolte <nolte at mathematik.uni-freiburg.de>
Universität Freiburg phone: +49-761-203-5630
Abteilung für angewandte Mathematik fax: +49-761-203-5632
Hermann-Herder-Straße 10
79104 Freiburg, Germany
More information about the Dune-devel
mailing list