[Dune] [Dune-Commit] dune-grid r7402 - in trunk/dune/grid: geometrygrid io/file/dgfparser utility

Oliver Sander sander at mi.fu-berlin.de
Thu Feb 10 17:53:56 CET 2011


Hi Martin!
If you explicitly do want the flexibility of being able to exchange the
allocator then the additional template parameter is no problem at all
with me.  I just wanted to make sure this small additional design
complexity comes with a reason.

best,
Oliver

Am 10.02.2011 17:20, schrieb Martin Nolte:
> Hi Oli,
>
> there are a lot of (fast) std::allocators and this way all of them are
> supported. If we, for example, hardwire the allocator to PoolAllocator, then
> you cannot use a threadsafe pool allocator implementation (which I was told to
> exist somewhere in boost).
>
> Somehow, I don't understand your problem, anyway. GeometryGrid can still be
> instantiated with only 2 template arguments and I guess the default
> (std::allocator) is absolutely ok for you (since you don't care for
> performance anyway). Moreover, I would like to keep the SmallObjectAllocator
> around in my own code. Hence, if I want to use this one with GeometryGrid, I
> need a way to specify this and the simplest choice is a template argument. The
> preprocessor is not really an option, is it?
>
> To elaborate the problem with the PoolAllocator a little further: As far as I
> understand it, the problem is not the PoolAllocator, but the template
> instantiation order. The Geometry gets a template argument Grid, which is yet
> incomplete. Under normal circumstances this magically works. For gcc-4.4 and
> GeometryGrid with PoolAllocator it does not. Don't ask me why; I never liked
> this chicken - egg problem.
>
> Best,
>
> Martin
>
> On 02/10/2011 03:27 PM, Oliver Sander wrote:
>    
>> Hi Martin!
>> I wonder whether it is necessary to make the allocator a parameter
>> of GeometryGrid.  I would imagine that there is a single way to
>> optimally implement the memory management of GeometryGrid,
>> and that you will never have to change it.  Or am I wrong?  Do you
>> have a use case where exchanging the memory management in
>> GeometryGrid makes sense?
>>
>> If the pool allocator doesn't work with this, but std::allocator does,
>> then supposedly it's a bug in the poolallocator?  Have you tried
>> the poolallocator from boost?
>>
>> best,
>> Oliver
>>
>> Am 10.02.2011 11:38, schrieb mnolte at dune-project.org:
>>      
>>> Author: mnolte
>>> Date: 2011-02-10 11:38:14 +0100 (Thu, 10 Feb 2011)
>>> New Revision: 7402
>>>
>>> Modified:
>>>      trunk/dune/grid/geometrygrid/cachedcoordfunction.hh
>>>      trunk/dune/grid/geometrygrid/capabilities.hh
>>>      trunk/dune/grid/geometrygrid/entity.hh
>>>      trunk/dune/grid/geometrygrid/entitypointer.hh
>>>      trunk/dune/grid/geometrygrid/grid.hh
>>>      trunk/dune/grid/geometrygrid/indexsets.hh
>>>      trunk/dune/grid/geometrygrid/intersection.hh
>>>      trunk/dune/grid/geometrygrid/iterator.hh
>>>      trunk/dune/grid/geometrygrid/persistentcontainer.hh
>>>      trunk/dune/grid/io/file/dgfparser/dgfgeogrid.hh
>>>      trunk/dune/grid/utility/hostgridaccess.hh
>>> Log:
>>> use a std::allocator to allocate memory for the entity.
>>>
>>> Somehow this does not work with the pool allocator due to GeometryGrid being
>>> an incomplete type in the entity.
>>> It works with std::allocator and SmallObjectAllocator, though.
>>>
>>>
>>> Modified: trunk/dune/grid/geometrygrid/cachedcoordfunction.hh
>>> ===================================================================
>>> --- trunk/dune/grid/geometrygrid/cachedcoordfunction.hh    2011-02-10
>>> 09:19:50 UTC (rev 7401)
>>> +++ trunk/dune/grid/geometrygrid/cachedcoordfunction.hh    2011-02-10
>>> 10:38:14 UTC (rev 7402)
>>> @@ -20,6 +20,8 @@
>>>      template<   class HostGrid, class CoordFunction>
>>>      class CachedCoordFunction;
>>>
>>> +
>>> +
>>>      // GeoGrid::CoordCache
>>>      // -------------------
>>>
>>>
>>> Modified: trunk/dune/grid/geometrygrid/capabilities.hh
>>> ===================================================================
>>> --- trunk/dune/grid/geometrygrid/capabilities.hh    2011-02-10 09:19:50 UTC
>>> (rev 7401)
>>> +++ trunk/dune/grid/geometrygrid/capabilities.hh    2011-02-10 10:38:14 UTC
>>> (rev 7402)
>>> @@ -13,7 +13,7 @@
>>>      // External Forward Declarations
>>>      // -----------------------------
>>>
>>> -  template<   class HostGrid, class CoordFunction>
>>> +  template<   class HostGrid, class CoordFunction, class Allocator>
>>>      class GeometryGrid;
>>>
>>>
>>> @@ -27,61 +27,61 @@
>>>        // Capabilities from dune-grid
>>>        // ---------------------------
>>>
>>> -    template<   class HostGrid, class CoordFunction>
>>> -    struct hasSingleGeometryType<   GeometryGrid<   HostGrid, CoordFunction>   >
>>> +    template<   class HostGrid, class CoordFunction, class Allocator>
>>> +    struct hasSingleGeometryType<   GeometryGrid<   HostGrid, CoordFunction,
>>> Allocator>   >
>>>        {
>>>          static const bool v = hasSingleGeometryType<   HostGrid>   :: v;
>>>          static const unsigned int topologyId = hasSingleGeometryType<
>>> HostGrid>   :: topologyId;
>>>        };
>>>
>>>
>>> -    template<   class HostGrid, class CoordFunction, int codim>
>>> -    struct hasEntity<   GeometryGrid<   HostGrid, CoordFunction>, codim>
>>> +    template<   class HostGrid, class CoordFunction, class Allocator, int
>>> codim>
>>> +    struct hasEntity<   GeometryGrid<   HostGrid, CoordFunction, Allocator>,
>>> codim>
>>>        {
>>>          static const bool v = true;
>>>        };
>>>
>>>
>>> -    template<   class HostGrid, class CoordFunction>
>>> -    struct isParallel<   GeometryGrid<   HostGrid, CoordFunction>   >
>>> +    template<   class HostGrid, class CoordFunction, class Allocator>
>>> +    struct isParallel<   GeometryGrid<   HostGrid, CoordFunction, Allocator>   >
>>>        {
>>>          static const bool v = isParallel<   HostGrid>::v;
>>>        };
>>>
>>>
>>> -    template<   class HostGrid, class CoordFunction, int codim>
>>> -    struct canCommunicate<   GeometryGrid<   HostGrid, CoordFunction>, codim>
>>> +    template<   class HostGrid, class CoordFunction, class Allocator, int
>>> codim>
>>> +    struct canCommunicate<   GeometryGrid<   HostGrid, CoordFunction,
>>> Allocator>, codim>
>>>        {
>>>          static const bool v = canCommunicate<   HostGrid, codim>::v;
>>>        };
>>>
>>>
>>> -    template<   class HostGrid, class CoordFunction>
>>> -    struct hasBackupRestoreFacilities<   GeometryGrid<   HostGrid,
>>> CoordFunction>   >
>>> +    template<   class HostGrid, class CoordFunction, class Allocator>
>>> +    struct hasBackupRestoreFacilities<   GeometryGrid<   HostGrid,
>>> CoordFunction, Allocator>   >
>>>        {
>>>          static const bool v = hasBackupRestoreFacilities<   HostGrid>::v;
>>>        };
>>>
>>> -    template<   class HostGrid, class CoordFunction>
>>> -    struct isLevelwiseConforming<   GeometryGrid<   HostGrid, CoordFunction>   >
>>> +    template<   class HostGrid, class CoordFunction, class Allocator>
>>> +    struct isLevelwiseConforming<   GeometryGrid<   HostGrid, CoordFunction,
>>> Allocator>   >
>>>        {
>>>          static const bool v = isLevelwiseConforming<   HostGrid>::v;
>>>        };
>>>
>>> -    template<   class HostGrid, class CoordFunction>
>>> -    struct isLeafwiseConforming<   GeometryGrid<   HostGrid, CoordFunction>   >
>>> +    template<   class HostGrid, class CoordFunction, class Allocator>
>>> +    struct isLeafwiseConforming<   GeometryGrid<   HostGrid, CoordFunction,
>>> Allocator>   >
>>>        {
>>>          static const bool v = isLeafwiseConforming<   HostGrid>::v;
>>>        };
>>>
>>> -    template<   class HostGrid, class CoordFunction>
>>> -    struct threadSafe<   GeometryGrid<   HostGrid, CoordFunction>   >
>>> +    template<   class HostGrid, class CoordFunction, class Allocator>
>>> +    struct threadSafe<   GeometryGrid<   HostGrid, CoordFunction, Allocator>   >
>>>        {
>>>          static const bool v = false;
>>>        };
>>>
>>> -    template<   class HostGrid, class CoordFunction>
>>> -    struct viewThreadSafe<   GeometryGrid<   HostGrid, CoordFunction>   >
>>> +    template<   class HostGrid, class CoordFunction, class Allocator>
>>> +    struct viewThreadSafe<   GeometryGrid<   HostGrid, CoordFunction,
>>> Allocator>   >
>>>        {
>>>          static const bool v = false;
>>>        };
>>> @@ -101,8 +101,8 @@
>>>          static const bool v = hasHostEntity<   Grid, codim>::v;
>>>        };
>>>
>>> -    template<   class HostGrid, class CoordFunction, int codim>
>>> -    struct hasHostEntity<   GeometryGrid<   HostGrid, CoordFunction>, codim>
>>> +    template<   class HostGrid, class CoordFunction, class Allocator, int
>>> codim>
>>> +    struct hasHostEntity<   GeometryGrid<   HostGrid, CoordFunction,
>>> Allocator>, codim>
>>>        {
>>>          static const bool v = hasEntity<   HostGrid, codim>::v;
>>>        };
>>>
>>> Modified: trunk/dune/grid/geometrygrid/entity.hh
>>> ===================================================================
>>> --- trunk/dune/grid/geometrygrid/entity.hh    2011-02-10 09:19:50 UTC (rev
>>> 7401)
>>> +++ trunk/dune/grid/geometrygrid/entity.hh    2011-02-10 10:38:14 UTC (rev
>>> 7402)
>>> @@ -117,7 +117,7 @@
>>>          typedef typename HostGrid::template Codim<
>>> codimension>::EntityPointer HostEntityPointer;
>>>
>>>          //! type of corresponding entity seed
>>> -      typedef typename Grid::template Codim<   codimension>::EntitySeed
>>> EntitySeed;
>>> +      typedef typename Traits::template Codim<   codimension>::EntitySeed
>>> EntitySeed;
>>>
>>>          //! type of host elements, i.e., of host entities of codimension 0
>>>          typedef typename HostGrid::template Codim<   0>::Entity HostElement;
>>> @@ -355,7 +355,7 @@
>>>          typedef typename HostGrid::template Codim<
>>> codimension>::EntityPointer HostEntityPointer;
>>>
>>>          //! type of corresponding entity seed
>>> -      typedef typename Grid::template Codim<   codimension>::EntitySeed
>>> EntitySeed;
>>> +      typedef typename Traits::template Codim<   codimension>::EntitySeed
>>> EntitySeed;
>>>
>>>          //! type of host elements, i.e., of host entities of codimension 0
>>>          typedef typename HostGrid::template Codim<   0>::Entity HostElement;
>>>
>>> Modified: trunk/dune/grid/geometrygrid/entitypointer.hh
>>> ===================================================================
>>> --- trunk/dune/grid/geometrygrid/entitypointer.hh    2011-02-10 09:19:50 UTC
>>> (rev 7401)
>>> +++ trunk/dune/grid/geometrygrid/entitypointer.hh    2011-02-10 10:38:14 UTC
>>> (rev 7402)
>>> @@ -12,7 +12,7 @@
>>>      // External Forward Declarations
>>>      // -----------------------------
>>>
>>> -  template<   class HostGrid, class CordFunction>
>>> +  template<   class HostGrid, class CoordFunction, class Allocator>
>>>      class GeometryGrid;
>>>
>>>
>>> @@ -56,11 +56,11 @@
>>>        {};
>>>        /** \endcond */
>>>
>>> -    template<   int codim, class HostGrid, class CoordFunction>
>>> -    struct EntityPointerTraits<   codim, GeometryGrid<   HostGrid,
>>> CoordFunction>   >
>>> +    template<   int codim, class HostGrid, class CoordFunction, class
>>> Allocator>
>>> +    struct EntityPointerTraits<   codim, GeometryGrid<   HostGrid,
>>> CoordFunction, Allocator>   >
>>>        : public ExportParams<   HostGrid, CoordFunction>
>>>        {
>>> -      typedef Dune::GeometryGrid<   HostGrid, CoordFunction>   Grid;
>>> +      typedef Dune::GeometryGrid<   HostGrid, CoordFunction, Allocator>   Grid;
>>>
>>>          static const bool fake = !Capabilities::hasHostEntity<   Grid,
>>> codim>::v;
>>>
>>> @@ -157,7 +157,7 @@
>>>          ~EntityPointer ()
>>>          {
>>>            if( entity_ )
>>> -          delete( entity_ );
>>> +          entityAllocator().deallocate( entity_ );
>>>          }
>>>
>>>          This&operator= ( const This&other )
>>> @@ -181,8 +181,8 @@
>>>
>>>          Entity&dereference () const
>>>          {
>>> -        if( entity_ == 0 )
>>> -          entity_ = new  MakeableEntity( EntityImpl( grid(),
>>> *hostIterator() ) ) ;
>>> +        if( !entity_ )
>>> +          entity_ = entityAllocator().allocate( EntityImpl( grid(),
>>> *hostIterator() ) );
>>>            return *entity_;
>>>          }
>>>
>>> @@ -212,11 +212,17 @@
>>>          {
>>>            if( entity_ )
>>>            {
>>> -          delete entity_ ;
>>> +          entityAllocator().deallocate( entity_ );
>>>              entity_ = 0;
>>>            }
>>>          }
>>>
>>> +      typename Grid::Traits::template EntityAllocator<   codimension>   &
>>> +      entityAllocator () const
>>> +      {
>>> +        return grid().template entityAllocator<   codimension>();
>>> +      }
>>> +
>>>        private:
>>>          const Grid *grid_;
>>>          mutable MakeableEntity *entity_;
>>> @@ -262,8 +268,7 @@
>>>          typedef typename MakeableEntity::ImplementationType EntityImpl;
>>>
>>>        public:
>>> -      EntityPointer ( const Grid&grid,
>>> -                      const HostElementIterator&hostElementIterator, int
>>> subEntity )
>>> +      EntityPointer ( const Grid&grid, const
>>> HostElementIterator&hostElementIterator, int subEntity )
>>>          : grid_(&grid ),
>>>            entity_( 0 ),
>>>            subEntity_( subEntity ),
>>> @@ -309,7 +314,7 @@
>>>          ~EntityPointer ()
>>>          {
>>>            if( entity_ )
>>> -          delete entity_;
>>> +          entityAllocator().deallocate( entity_ );
>>>          }
>>>
>>>          This&operator= ( const This&other )
>>> @@ -358,8 +363,8 @@
>>>
>>>          Entity&dereference () const
>>>          {
>>> -        if( entity_ == 0 )
>>> -          entity_ = new MakeableEntity( EntityImpl( grid(),
>>> *hostElementIterator(), subEntity_ ) );
>>> +        if( !entity_ )
>>> +          entity_ = entityAllocator().allocate( EntityImpl( grid(),
>>> *hostElementIterator(), subEntity_ ) );
>>>            return *entity_;
>>>          }
>>>
>>> @@ -384,7 +389,7 @@
>>>          {
>>>            if( entity_ )
>>>            {
>>> -          delete entity_;
>>> +          entityAllocator().deallocate( entity_ );
>>>              entity_ = 0;
>>>            }
>>>          }
>>> @@ -394,6 +399,12 @@
>>>            return hostElementIterator_;
>>>          }
>>>
>>> +      typename Grid::Traits::template EntityAllocator<   codimension>   &
>>> +      entityAllocator () const
>>> +      {
>>> +        return grid().template entityAllocator<   codimension>();
>>> +      }
>>> +
>>>        private:
>>>          const Grid *grid_;
>>>          mutable MakeableEntity *entity_;
>>>
>>> Modified: trunk/dune/grid/geometrygrid/grid.hh
>>> ===================================================================
>>> --- trunk/dune/grid/geometrygrid/grid.hh    2011-02-10 09:19:50 UTC (rev 7401)
>>> +++ trunk/dune/grid/geometrygrid/grid.hh    2011-02-10 10:38:14 UTC (rev 7402)
>>> @@ -7,6 +7,8 @@
>>>
>>>    #include<dune/grid/common/grid.hh>
>>>
>>> +#include<dune/grid/genericgeometry/codimtable.hh>
>>> +
>>>    #include<dune/grid/geometrygrid/capabilities.hh>
>>>    #include<dune/grid/geometrygrid/entity.hh>
>>>    #include<dune/grid/geometrygrid/entityseed.hh>
>>> @@ -29,7 +31,7 @@
>>>      template<   class HostGrid>
>>>      class DefaultCoordFunction;
>>>
>>> -  template<   class HostGrid, class CoordFunction = DefaultCoordFunction<
>>> HostGrid>   >
>>> +  template<   class HostGrid, class CoordFunction = DefaultCoordFunction<
>>> HostGrid>, class Allocator = std::allocator<   void>   >
>>>      class GeometryGrid;
>>>
>>>
>>> @@ -50,11 +52,11 @@
>>>      namespace GenericGeometry
>>>      {
>>>
>>> -    template<   class HostGrid, class CoordFunction>
>>> -    struct GlobalGeometryTraits<   GeometryGrid<   HostGrid, CoordFunction>   >
>>> +    template<   class HostGrid, class CoordFunction, class Allocator>
>>> +    struct GlobalGeometryTraits<   GeometryGrid<   HostGrid, CoordFunction,
>>> Allocator>   >
>>>        : public DefaultGeometryTraits<   typename HostGrid::ctype,
>>> HostGrid::dimension, CoordFunction::dimRange>
>>>        {
>>> -      typedef GeometryGrid<   HostGrid, CoordFunction>   Grid;
>>> +      typedef GeometryGrid<   HostGrid, CoordFunction, Allocator>   Grid;
>>>
>>>          typedef DuneCoordTraits<   typename HostGrid::ctype>   CoordTraits;
>>>
>>> @@ -88,10 +90,9 @@
>>>            static const EvaluationType evaluateIntegrationElement =
>>> ComputeOnDemand;
>>>            static const EvaluationType evaluateNormal = ComputeOnDemand;
>>>          };
>>> -
>>>        };
>>>
>>> -  }
>>> +  } // namespace GenericGeometry
>>>
>>>
>>>
>>> @@ -117,16 +118,44 @@
>>>
>>>
>>>
>>> +    // EntityAllocator
>>> +    // ---------------
>>> +
>>> +    template<   class Entity, class Allocator>
>>> +    struct EntityAllocator
>>> +    {
>>> +      typedef MakeableInterfaceObject<   Entity>   MakeableEntity;
>>> +
>>> +      template<   class EntityImpl>
>>> +      MakeableEntity *allocate ( const EntityImpl&entityImpl )
>>> +      {
>>> +        MakeableEntity *entity = allocator_.allocate( 1 );
>>> +        allocator_.construct( entity, MakeableEntity( entityImpl ) );
>>> +        return entity;
>>> +      }
>>> +
>>> +      void deallocate ( MakeableEntity *entity )
>>> +      {
>>> +        allocator_.destroy( entity );
>>> +        allocator_.deallocate( entity, 1 );
>>> +      }
>>> +
>>> +    private:
>>> +      typename Allocator::template rebind<   MakeableEntity>::other allocator_;
>>> +    };
>>> +
>>> +
>>> +
>>>        // GridFamily
>>>        // ----------
>>>
>>> -    template<   class HostGrid, class CoordFunction>
>>> +    template<   class HostGrid, class CoordFunction, class Allocator>
>>>        struct GridFamily
>>>        {
>>>          struct Traits
>>>          : public ExportParams<   HostGrid, CoordFunction>
>>>          {
>>> -        typedef GeometryGrid<   HostGrid, CoordFunction>   Grid;
>>> +        typedef GeometryGrid<   HostGrid, CoordFunction, Allocator>   Grid;
>>>
>>>            typedef typename HostGrid::ctype ctype;
>>>
>>> @@ -194,10 +223,17 @@
>>>              typedef Dune::GridView<   DefaultLevelGridViewTraits<   const
>>> Grid, pitype>   >
>>>                LevelGridView;
>>>            };
>>> +
>>> +        template<   int codim>
>>> +        struct EntityAllocator
>>> +        : public GeoGrid::EntityAllocator<   typename Codim<
>>> codim>::Entity, Allocator>
>>> +        {};
>>> +
>>> +        typedef GenericGeometry::CodimTable<   EntityAllocator, dimension>
>>> EntityAllocatorTable;
>>>          };
>>>        };
>>>
>>> -  }
>>> +  } // namespace GeoGrid
>>>
>>>
>>>
>>> @@ -244,21 +280,21 @@
>>>       *
>>>       *  \nosubgrouping
>>>       */
>>> -  template<   class HostGrid, class CoordFunction>
>>> +  template<   class HostGrid, class CoordFunction, class Allocator>
>>>      class GeometryGrid
>>>      /** \cond */
>>>      : public GridDefaultImplementation
>>>          <   HostGrid::dimension, CoordFunction::dimRange, typename
>>> HostGrid::ctype,
>>> -        GeoGrid::GridFamily<   HostGrid, CoordFunction>   >,
>>> +        GeoGrid::GridFamily<   HostGrid, CoordFunction, Allocator>   >,
>>>        public GeoGrid::ExportParams<   HostGrid, CoordFunction>,
>>> -    public GeoGrid::BackupRestoreFacilities<   GeometryGrid<   HostGrid,
>>> CoordFunction>   >
>>> +    public GeoGrid::BackupRestoreFacilities<   GeometryGrid<   HostGrid,
>>> CoordFunction, Allocator>   >
>>>      /** \endcond */
>>>      {
>>> -    typedef GeometryGrid<   HostGrid, CoordFunction>   Grid;
>>> +    typedef GeometryGrid<   HostGrid, CoordFunction, Allocator>   Grid;
>>>
>>>        typedef GridDefaultImplementation
>>>          <   HostGrid::dimension, CoordFunction::dimRange, typename
>>> HostGrid::ctype,
>>> -        GeoGrid::GridFamily<   HostGrid, CoordFunction>   >
>>> +        GeoGrid::GridFamily<   HostGrid, CoordFunction, Allocator>   >
>>>          Base;
>>>
>>>        friend class GeoGrid::HierarchicIterator<   const Grid>;
>>> @@ -276,11 +312,11 @@
>>>        template<   int, PartitionIteratorType, class>   friend class
>>> GeoGrid::LevelIteratorTraits;
>>>        template<   int, PartitionIteratorType, class>   friend class
>>> GeoGrid::LeafIteratorTraits;
>>>
>>> -    template<   class, class, class>   friend class PersistentContainer;
>>> +    template<   class, class, class>   friend class PersistentContainer;
>>>
>>>      public:
>>>        /** \cond */
>>> -    typedef GeoGrid::GridFamily<   HostGrid, CoordFunction>   GridFamily;
>>> +    typedef GeoGrid::GridFamily<   HostGrid, CoordFunction, Allocator>
>>> GridFamily;
>>>        /** \endcond */
>>>
>>>        /** \name Traits
>>> @@ -860,6 +896,13 @@
>>>          return getRealImplementation( entity ).hostEntity();
>>>        }
>>>
>>> +    template<   int codim>
>>> +    typename Traits::template EntityAllocator<   codim>   &entityAllocator()
>>> const
>>> +    {
>>> +      integral_constant<   int, codim>   codimVariable;
>>> +      return entityAllocators_[ codimVariable ];
>>> +    }
>>> +
>>>      private:
>>>        HostGrid *const hostGrid_;
>>>        CoordFunction&coordFunction_;
>>> @@ -867,6 +910,7 @@
>>>        mutable LeafIndexSet *leafIndexSet_;
>>>        mutable GlobalIdSet *globalIdSet_;
>>>        mutable LocalIdSet *localIdSet_;
>>> +    mutable typename Traits::EntityAllocatorTable entityAllocators_;
>>>      };
>>>
>>>
>>> @@ -874,9 +918,9 @@
>>>      // GeometryGrid::Codim
>>>      // -------------------
>>>
>>> -  template<   class HostGrid, class CoordFunction>
>>> +  template<   class HostGrid, class CoordFunction, class Allocator>
>>>      template<   int codim>
>>> -  struct GeometryGrid<   HostGrid, CoordFunction>::Codim
>>> +  struct GeometryGrid<   HostGrid, CoordFunction, Allocator>::Codim
>>>      : public Base::template Codim<   codim>
>>>      {
>>>        /** \name Entity and Entity Pointer Types
>>>
>>> Modified: trunk/dune/grid/geometrygrid/indexsets.hh
>>> ===================================================================
>>> --- trunk/dune/grid/geometrygrid/indexsets.hh    2011-02-10 09:19:50 UTC
>>> (rev 7401)
>>> +++ trunk/dune/grid/geometrygrid/indexsets.hh    2011-02-10 10:38:14 UTC
>>> (rev 7402)
>>> @@ -16,7 +16,7 @@
>>>      // External Forward Declarations
>>>      // -----------------------------
>>>
>>> -  template<   class HostGrid, class CoordFunction>
>>> +  template<   class HostGrid, class CoordFunction, class Allocator>
>>>      class GeometryGrid;
>>>
>>>
>>>
>>> Modified: trunk/dune/grid/geometrygrid/intersection.hh
>>> ===================================================================
>>> --- trunk/dune/grid/geometrygrid/intersection.hh    2011-02-10 09:19:50 UTC
>>> (rev 7401)
>>> +++ trunk/dune/grid/geometrygrid/intersection.hh    2011-02-10 10:38:14 UTC
>>> (rev 7402)
>>> @@ -10,7 +10,7 @@
>>>      // External Forward Declataions
>>>      // ----------------------------
>>>
>>> -  template<   class HostGrid, class CoordFunction>
>>> +  template<   class HostGrid, class CoordFunction, class Allocator>
>>>      class GeometryGrid;
>>>
>>>
>>> @@ -224,13 +224,13 @@
>>>        // LeafIntersection
>>>        // ----------------
>>>
>>> -    template<   class HostGrid, class CoordFunction>
>>> -    class LeafIntersection<   const GeometryGrid<   HostGrid, CoordFunction>   >
>>> +    template<   class HostGrid, class CoordFunction, class Allocator>
>>> +    class LeafIntersection<   const GeometryGrid<   HostGrid, CoordFunction,
>>> Allocator>   >
>>>        : public Intersection
>>> -<   const GeometryGrid<   HostGrid, CoordFunction>,
>>> +<   const GeometryGrid<   HostGrid, CoordFunction, Allocator>,
>>>             typename HostGrid::Traits::LeafIntersection>
>>>        {
>>> -      typedef GeometryGrid<   HostGrid, CoordFunction>   Grid;
>>> +      typedef GeometryGrid<   HostGrid, CoordFunction, Allocator>   Grid;
>>>          typedef typename HostGrid::Traits::LeafIntersection HostIntersection;
>>>
>>>          typedef Intersection<   const Grid, HostIntersection>   Base;
>>> @@ -248,13 +248,13 @@
>>>        // LevelIntersection
>>>        // -----------------
>>>
>>> -    template<   class HostGrid, class CoordFunction>
>>> -    class LevelIntersection<   const GeometryGrid<   HostGrid, CoordFunction>   >
>>> +    template<   class HostGrid, class CoordFunction, class Allocator>
>>> +    class LevelIntersection<   const GeometryGrid<   HostGrid, CoordFunction,
>>> Allocator>   >
>>>        : public Intersection
>>> -<   const GeometryGrid<   HostGrid, CoordFunction>,
>>> +<   const GeometryGrid<   HostGrid, CoordFunction, Allocator>,
>>>            typename HostGrid::Traits::LevelIntersection>
>>>        {
>>> -      typedef GeometryGrid<   HostGrid, CoordFunction>   Grid;
>>> +      typedef GeometryGrid<   HostGrid, CoordFunction, Allocator>   Grid;
>>>          typedef typename HostGrid::Traits::LevelIntersection HostIntersection;
>>>
>>>          typedef Intersection<   const Grid, HostIntersection>   Base;
>>>
>>> Modified: trunk/dune/grid/geometrygrid/iterator.hh
>>> ===================================================================
>>> --- trunk/dune/grid/geometrygrid/iterator.hh    2011-02-10 09:19:50 UTC (rev
>>> 7401)
>>> +++ trunk/dune/grid/geometrygrid/iterator.hh    2011-02-10 10:38:14 UTC (rev
>>> 7402)
>>> @@ -11,7 +11,7 @@
>>>      // External Forward Declarations
>>>      // -----------------------------
>>>
>>> -  template<   class HostGrid, class CoordFunction>
>>> +  template<   class HostGrid, class CoordFunction, class Allocator>
>>>      class GeometryGrid;
>>>
>>>
>>>
>>> Modified: trunk/dune/grid/geometrygrid/persistentcontainer.hh
>>> ===================================================================
>>> --- trunk/dune/grid/geometrygrid/persistentcontainer.hh    2011-02-10
>>> 09:19:50 UTC (rev 7401)
>>> +++ trunk/dune/grid/geometrygrid/persistentcontainer.hh    2011-02-10
>>> 10:38:14 UTC (rev 7402)
>>> @@ -11,13 +11,13 @@
>>>      // ------------------------------------
>>>
>>>      template<   class HostGrid, class CoordFunction, class Data, class
>>> Allocator>
>>> -  class PersistentContainer<   GeometryGrid<   HostGrid, CoordFunction>,
>>> Data, Allocator>
>>> +  class PersistentContainer<   GeometryGrid<   HostGrid, CoordFunction,
>>> Allocator>, Data, Allocator>
>>>      : public PersistentContainer<   HostGrid, Data, Allocator>
>>>      {
>>>        typedef PersistentContainer<   HostGrid, Data, Allocator>   Base;
>>>
>>>      public:
>>> -    typedef GeometryGrid<   HostGrid, CoordFunction>   GridType;
>>> +    typedef GeometryGrid<   HostGrid, CoordFunction, Allocator>   GridType;
>>>
>>>        typedef typename GridType::template Codim<   0>::Entity ElementType;
>>>
>>>
>>> Modified: trunk/dune/grid/io/file/dgfparser/dgfgeogrid.hh
>>> ===================================================================
>>> --- trunk/dune/grid/io/file/dgfparser/dgfgeogrid.hh    2011-02-10 09:19:50
>>> UTC (rev 7401)
>>> +++ trunk/dune/grid/io/file/dgfparser/dgfgeogrid.hh    2011-02-10 10:38:14
>>> UTC (rev 7402)
>>> @@ -107,10 +107,10 @@
>>>      // DGFGridFactory for GeometryGrid
>>>      // -------------------------------
>>>
>>> -  template<   class HostGrid, class CoordFunction>
>>> -  struct DGFGridFactory<   GeometryGrid<   HostGrid, CoordFunction>   >
>>> +  template<   class HostGrid, class CoordFunction, class Allocator>
>>> +  struct DGFGridFactory<   GeometryGrid<   HostGrid, CoordFunction,
>>> Allocator>   >
>>>      {
>>> -    typedef GeometryGrid<   HostGrid, CoordFunction>   Grid;
>>> +    typedef GeometryGrid<   HostGrid, CoordFunction, Allocator>   Grid;
>>>
>>>        const static int dimension = Grid::dimension;
>>>        typedef MPIHelper::MPICommunicator MPICommunicator;
>>> @@ -181,8 +181,8 @@
>>>      // DGFGridInfo for GeometryGrid
>>>      // ----------------------------
>>>
>>> -  template<   class HostGrid, class CoordFunction>
>>> -  struct DGFGridInfo<   GeometryGrid<   HostGrid, CoordFunction>   >
>>> +  template<   class HostGrid, class CoordFunction, class Allocator>
>>> +  struct DGFGridInfo<   GeometryGrid<   HostGrid, CoordFunction, Allocator>   >
>>>      {
>>>        static int refineStepsForHalf ()
>>>        {
>>>
>>> Modified: trunk/dune/grid/utility/hostgridaccess.hh
>>> ===================================================================
>>> --- trunk/dune/grid/utility/hostgridaccess.hh    2011-02-10 09:19:50 UTC
>>> (rev 7401)
>>> +++ trunk/dune/grid/utility/hostgridaccess.hh    2011-02-10 10:38:14 UTC
>>> (rev 7402)
>>> @@ -9,7 +9,7 @@
>>>      // External Forward Declarations
>>>      // -----------------------------
>>>
>>> -  template<   class HostGrid, class CoordFunction>
>>> +  template<   class HostGrid, class CoordFunction, class Allocator>
>>>      class GeometryGrid;
>>>
>>>
>>> @@ -29,13 +29,13 @@
>>>       *
>>>       *  \nosubgrouping
>>>       */
>>> -  template<   class HG, class CoordFunction>
>>> -  struct HostGridAccess<   GeometryGrid<   HG, CoordFunction>   >
>>> +  template<   class HG, class CoordFunction, class Allocator>
>>> +  struct HostGridAccess<   GeometryGrid<   HG, CoordFunction, Allocator>   >
>>>      {
>>>        /** \name Exported Types
>>>         * \{ */
>>>
>>> -    typedef GeometryGrid<   HG, CoordFunction>   Grid;
>>> +    typedef GeometryGrid<   HG, CoordFunction, Allocator>   Grid;
>>>
>>>        //! type of HostGrid
>>>        typedef typename Grid::HostGrid HostGrid;
>>>
>>>
>>> _______________________________________________
>>> Dune-Commit mailing list
>>> Dune-Commit at dune-project.org
>>> http://lists.dune-project.org/mailman/listinfo/dune-commit
>>>
>>>        
>>
>> _______________________________________________
>> Dune mailing list
>> Dune at dune-project.org
>> http://lists.dune-project.org/mailman/listinfo/dune
>>      
>    





More information about the Dune mailing list