[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