[Dune-devel] [Dune-Commit] dune-geometry r508 - branches/mn-devel/dune/geometry

Oliver Sander sander at igpm.rwth-aachen.de
Wed Apr 17 16:30:19 CEST 2013


Excellent! Many thanks!

Am 17.04.2013 15:45, schrieb Martin Nolte:
> 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
>





More information about the Dune-devel mailing list