diff --git a/dumux/io/artgridcreator.hh b/dumux/io/artgridcreator.hh index 68c71f193d3238e1dc914d7e5c1dc187d0350cb4..71394360215854798a61eeb9026f062bda3c2bcc 100644 --- a/dumux/io/artgridcreator.hh +++ b/dumux/io/artgridcreator.hh @@ -337,7 +337,7 @@ public: } } - grid_ = factory.createGrid(); + gridPtr() = factory.createGrid(); } static void outputARTtoScreen() @@ -398,7 +398,16 @@ public: */ static Grid &grid() { - return *grid_; + return *gridPtr(); + } + + /*! + * \brief Returns a reference to the shared pointer to the grid. + */ + static GridPointer &gridPtr() + { + static GridPointer grid; + return grid; } /*! @@ -407,7 +416,7 @@ public: */ static void loadBalance() { - grid_->loadBalance(); + gridPtr()->loadBalance(); } static int vertexNumber() @@ -448,11 +457,8 @@ private: static int edgeNumber_; static int faceNumber_; //in 2D static int elementNumber_; //in 3D - static GridPointer grid_; }; -template <class TypeTag> -typename Dumux::ArtGridCreator<TypeTag>::GridPointer ArtGridCreator<TypeTag>::grid_; template <class TypeTag> typename Dumux::ArtGridCreator<TypeTag>::VerticesVector ArtGridCreator<TypeTag>::vertices_; template <class TypeTag> diff --git a/dumux/io/cubegridcreator.hh b/dumux/io/cubegridcreator.hh index 51a8fa6e4c051d1f21e4a6713888c9b53ac72eac..8991d59a0db796eb2c96c7ac178b37c6c2330ef6 100644 --- a/dumux/io/cubegridcreator.hh +++ b/dumux/io/cubegridcreator.hh @@ -80,7 +80,7 @@ public: cellRes[2] = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, Grid, NumberOfCellsZ); } - cubeGrid_ = Dune::StructuredGridFactory<Grid>::createCubeGrid(lowerLeft, upperRight, cellRes); + gridPtr() = Dune::StructuredGridFactory<Grid>::createCubeGrid(lowerLeft, upperRight, cellRes); } /*! @@ -88,7 +88,7 @@ public: */ static Grid &grid() { - return *cubeGrid_; + return *gridPtr(); } /*! @@ -97,16 +97,19 @@ public: */ static void loadBalance() { - cubeGrid_->loadBalance(); + gridPtr()->loadBalance(); } -protected: - static GridPointer cubeGrid_; + /*! + * \brief Returns a reference to the shared pointer to the grid. + */ + static GridPointer &gridPtr() + { + static GridPointer cubeGrid; + return cubeGrid; + } }; -template <class TypeTag> -typename Dumux::CubeGridCreator<TypeTag>::GridPointer CubeGridCreator<TypeTag>::cubeGrid_; - } #endif diff --git a/dumux/io/dgfgridcreator.hh b/dumux/io/dgfgridcreator.hh index d2cf71f392fbd958553fef6b4f5a29725f9c2ada..ff501a351c649c62abc5cdde1d5a5858709a3f4e 100644 --- a/dumux/io/dgfgridcreator.hh +++ b/dumux/io/dgfgridcreator.hh @@ -51,8 +51,8 @@ public: */ static void makeGrid(const std::string& dgfFileName) { - gridPtr_ = GridPointer(dgfFileName.c_str(), Dune::MPIHelper::getCommunicator()); - }; + gridPtr() = GridPointer(dgfFileName.c_str(), Dune::MPIHelper::getCommunicator()); + } /*! * \brief Load the grid from the dgf file given in the input file. @@ -68,16 +68,15 @@ public: */ static Grid &grid() { - return *gridPtr_; + return *gridPtr(); } /*! * \brief Returns a reference to the grid pointer. - * - * This method is specific to the DgfGridCreator! */ static GridPointer &gridPtr() { + static GridPointer gridPtr_; return gridPtr_; } @@ -86,16 +85,10 @@ public: */ static void loadBalance() { - gridPtr_.loadBalance(); + gridPtr().loadBalance(); } - -private: - static GridPointer gridPtr_; }; -template <class TypeTag> -typename DgfGridCreator<TypeTag>::GridPointer DgfGridCreator<TypeTag>::gridPtr_; - } // namespace Dumux #endif diff --git a/dumux/io/simplexgridcreator.hh b/dumux/io/simplexgridcreator.hh index de895db0509ac8278aa5122361878cdca80792d7..c5babd54b2bfac3d8b4b5662b48e371c5f235f3f 100644 --- a/dumux/io/simplexgridcreator.hh +++ b/dumux/io/simplexgridcreator.hh @@ -78,7 +78,7 @@ public: cellRes[2] = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, Grid, NumberOfCellsZ); } - simplexGrid_ = Dune::StructuredGridFactory<Grid>::createSimplexGrid(lowerLeft, upperRight, cellRes); + gridPtr() = Dune::StructuredGridFactory<Grid>::createSimplexGrid(lowerLeft, upperRight, cellRes); } /*! @@ -86,7 +86,7 @@ public: */ static Grid &grid() { - return *simplexGrid_; + return *gridPtr(); } /*! @@ -95,16 +95,19 @@ public: */ static void loadBalance() { - simplexGrid_->loadBalance(); + gridPtr()->loadBalance(); } -private: - static GridPointer simplexGrid_; + /*! + * \brief Returns a reference to the shared pointer to the grid. + */ + static GridPointer &gridPtr() + { + static GridPointer simplexGrid; + return simplexGrid; + } }; -template <class TypeTag> -typename SimplexGridCreator<TypeTag>::GridPointer SimplexGridCreator<TypeTag>::simplexGrid_; - } #endif