diff --git a/dune/alugrid/2d/geometry.hh b/dune/alugrid/2d/geometry.hh index 3fc9b2390945959e3f2dbecf893b1e559870a47e..368edb2246c34dc4333936b500222beb5c74429b 100644 --- a/dune/alugrid/2d/geometry.hh +++ b/dune/alugrid/2d/geometry.hh @@ -728,6 +728,12 @@ namespace Dune // invalidate geometry implementation void invalidate () ; + // type of object provider + typedef ALUMemoryProvider< GeometryImplType > GeometryProviderType ; + + //! return storage provider for geometry objects + static GeometryProviderType& geoProvider(); + protected: // return reference coordinates of the alu triangle static std::pair< FieldMatrix< alu2d_ctype, 4, 2 >, FieldVector< alu2d_ctype, 4 > > @@ -740,12 +746,6 @@ namespace Dune //! get a new pointer object void getObject(); - // type of object provider - typedef ALUMemoryProvider< GeometryImplType > GeometryProviderType ; - - //! return storage provider for geometry objects - static GeometryProviderType& geoProvider(); - // return reference to geometry implementation GeometryImplType& geoImpl() const { @@ -757,6 +757,7 @@ namespace Dune GeometryImplType* geoImpl_; }; + namespace FacadeOptions { //! geometry can be stored as an object diff --git a/dune/alugrid/2d/geometry_imp.cc b/dune/alugrid/2d/geometry_imp.cc index 21b384aef8dd72151c919478706ca67b2002c068..58e6a5aed2ec131541fc20e80589f2c7b078d5b0 100644 --- a/dune/alugrid/2d/geometry_imp.cc +++ b/dune/alugrid/2d/geometry_imp.cc @@ -13,8 +13,8 @@ namespace Dune // --ALU2dGridGeometry // --Geometry //********************************************************************** -//! return storage provider for geometry objects +//! return storage provider for geometry objects template< int mydim, int cdim, class GridImp > inline typename ALU2dGridGeometry< mydim, cdim, GridImp >::GeometryProviderType& ALU2dGridGeometry< mydim, cdim, GridImp >::geoProvider() diff --git a/dune/alugrid/2d/grid_imp.cc b/dune/alugrid/2d/grid_imp.cc index be25e50af324665700cd24ec0d81373995f61f09..9e36d08782d03b33b5a3bc5ae3ad2b677ce130ed 100644 --- a/dune/alugrid/2d/grid_imp.cc +++ b/dune/alugrid/2d/grid_imp.cc @@ -557,6 +557,13 @@ namespace Dune geomTypes_[ 2 ].push_back( GeometryType( basic, 0 ) ); geomTypes_[ 1 ].push_back( GeometryType( basic, 1 ) ); geomTypes_[ 0 ].push_back( GeometryType( basic, 2 ) ); + + // initialize static storage variables + ALU2dGridGeometry<0, dimworld, const ThisType> :: geoProvider(); + ALU2dGridGeometry<1, dimworld, const ThisType> :: geoProvider(); + ALU2dGridGeometry<dim, dimworld, const ThisType> :: geoProvider(); + + ALU2dGridIntersectionBase < const ThisType > :: LocalGeometryStorageType :: instance(); } //! get global id set of grid diff --git a/dune/alugrid/3d/geometry.hh b/dune/alugrid/3d/geometry.hh index bb04e86a5395bfd498d51c7ad3791f288956772b..c17faa226742f6525ae14144b0f2a473ccc0e966 100644 --- a/dune/alugrid/3d/geometry.hh +++ b/dune/alugrid/3d/geometry.hh @@ -753,14 +753,6 @@ namespace Dune //! invalidate geometry implementation to avoid errors bool valid () const ; - protected: - //! assign pointer - void assign( const ALU3dGridGeometry& other ); - //! remove pointer object - void removeObj(); - //! get a new pointer object - void getObject(); - // type of object provider typedef ALUMemoryProvider< GeometryImplType > GeometryProviderType ; @@ -771,6 +763,14 @@ namespace Dune return storage; } + protected: + //! assign pointer + void assign( const ALU3dGridGeometry& other ); + //! remove pointer object + void removeObj(); + //! get a new pointer object + void getObject(); + // return reference to geometry implementation GeometryImplType& geoImpl() const { diff --git a/dune/alugrid/3d/grid_inline.hh b/dune/alugrid/3d/grid_inline.hh index 367c7abff253bb8fb9679bc910ec97376bca4c5c..0138a4d9f45c1786c90601f384d93dec3460dabe 100644 --- a/dune/alugrid/3d/grid_inline.hh +++ b/dune/alugrid/3d/grid_inline.hh @@ -69,6 +69,12 @@ namespace Dune postAdapt(); calcExtras(); + + // initialize static storage variables + ALU3dGridGeometry< 0, 3, const ThisType> :: geoProvider(); + ALU3dGridGeometry< 1, 3, const ThisType> :: geoProvider(); + ALU3dGridGeometry< 2, 3, const ThisType> :: geoProvider(); + ALU3dGridGeometry< 3, 3, const ThisType> :: geoProvider(); } // end constructor