From 6c3f0706c3b426e3a6896e272f123380a18c34a7 Mon Sep 17 00:00:00 2001 From: Martin Schneider <martin.schneider@iws.uni-stuttgart.de> Date: Wed, 31 Aug 2016 17:06:18 +0200 Subject: [PATCH] [adaptive] Definition of AdaptionHelper property For a mass conservative adaption process, model dependent adaption helper are needed. --- dumux/implicit/adaptive/adaptionhelper.hh | 33 ++++++++++--------- dumux/implicit/adaptive/gridadapt.hh | 10 +++--- .../implicit/adaptive/gridadaptproperties.hh | 3 ++ .../adaptive/gridadaptpropertydefaults.hh | 3 ++ 4 files changed, 27 insertions(+), 22 deletions(-) diff --git a/dumux/implicit/adaptive/adaptionhelper.hh b/dumux/implicit/adaptive/adaptionhelper.hh index c4462861e8..e88021c201 100644 --- a/dumux/implicit/adaptive/adaptionhelper.hh +++ b/dumux/implicit/adaptive/adaptionhelper.hh @@ -16,8 +16,8 @@ * You should have received a copy of the GNU General Public License * * along with this program. If not, see <http://www.gnu.org/licenses/>. * *****************************************************************************/ -#ifndef DUMUX_ADAPTIONHELPER_HH -#define DUMUX_ADAPTIONHELPER_HH +#ifndef DUMUX_IMPLICIT_ADAPTIONHELPER_HH +#define DUMUX_IMPLICIT_ADAPTIONHELPER_HH #include <dune/grid/common/gridenums.hh> #include <dune/grid/common/rangegenerators.hh> @@ -46,7 +46,7 @@ NEW_PROP_TAG(Scalar); * \brief Base class holding the variables for implicit models. */ template<class TypeTag> -class AdaptionHelper +class ImplicitAdaptionHelper { private: typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; @@ -54,16 +54,6 @@ private: typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - struct AdaptedValues - { - PrimaryVariables u; - int count; - AdaptedValues() - { - count = 0; - } - }; - enum { // Grid and world dimension dim = GridView::dimension, @@ -77,7 +67,6 @@ private: typedef typename Grid::LevelGridView LevelGridView; typedef typename GridView::Traits::template Codim<0>::Entity Element; typedef typename GridView::Traits::template Codim<dofCodim>::Entity DofEntity; - typedef Dune::PersistentContainer<Grid, AdaptedValues> PersistentContainer; typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; typedef typename GridView::ctype CoordScalar; @@ -86,9 +75,21 @@ private: typedef Dune::PQkLocalFiniteElementCache<CoordScalar, Scalar, dim, 1> LocalFiniteElementCache; typedef typename LocalFiniteElementCache::FiniteElementType LocalFiniteElement; -private: +protected: const GridView gridView_; const Grid& grid_; + + struct AdaptedValues + { + PrimaryVariables u; + int count; + AdaptedValues() + { + count = 0; + } + }; + + typedef Dune::PersistentContainer<Grid, AdaptedValues> PersistentContainer; PersistentContainer adaptionMap_; public: @@ -99,7 +100,7 @@ public: * * @param gridView a DUNE gridview object corresponding to diffusion and transport equation */ - AdaptionHelper(const GridView& gridView) : + ImplicitAdaptionHelper(const GridView& gridView) : gridView_(gridView), grid_(gridView.grid()), adaptionMap_(grid_, dofCodim) {} diff --git a/dumux/implicit/adaptive/gridadapt.hh b/dumux/implicit/adaptive/gridadapt.hh index 351adbf29e..ccc221d660 100644 --- a/dumux/implicit/adaptive/gridadapt.hh +++ b/dumux/implicit/adaptive/gridadapt.hh @@ -24,7 +24,6 @@ #define DUMUX_IMPLICIT_GRIDADAPT_HH #include "gridadaptproperties.hh" -#include "adaptionhelper.hh" #include <unordered_map> #include <dune/common/exceptions.hh> @@ -62,6 +61,7 @@ class ImplicitGridAdapt typedef typename GET_PROP_TYPE(TypeTag, AdaptionIndicator) AdaptionIndicator; typedef typename GET_PROP_TYPE(TypeTag, AdaptionInitializationIndicator) AdaptionInitializationIndicator; + typedef typename GET_PROP_TYPE(TypeTag, AdaptionHelper) AdaptionHelper; enum { isBox = GET_PROP_VALUE(TypeTag, ImplicitIsBox) }; @@ -71,8 +71,8 @@ public: * @param problem The problem */ ImplicitGridAdapt (Problem& problem) - : adaptionHelper_(problem.gridView()), - problem_(problem), + : problem_(problem), + adaptionHelper_(problem.gridView()), adaptionIndicator_(problem), marked_(0), coarsened_(0) @@ -324,9 +324,6 @@ public: } private: - AdaptionHelper<TypeTag> adaptionHelper_; - - /*! * @brief Method ensuring the refinement ratio of 2:1 * @@ -418,6 +415,7 @@ private: // private Variables Problem& problem_; + AdaptionHelper adaptionHelper_; AdaptionIndicator adaptionIndicator_; int marked_; diff --git a/dumux/implicit/adaptive/gridadaptproperties.hh b/dumux/implicit/adaptive/gridadaptproperties.hh index fb3928b944..dfa71287d0 100644 --- a/dumux/implicit/adaptive/gridadaptproperties.hh +++ b/dumux/implicit/adaptive/gridadaptproperties.hh @@ -39,6 +39,9 @@ NEW_TYPE_TAG(GridAdapt); //! Defines if the grid is h-adaptive NEW_PROP_TAG(AdaptiveGrid); +//! Class which stores data and reconstructs primary variables for adapted grid +NEW_PROP_TAG(AdaptionHelper); + //! Class defining the refinement/coarsening indicator NEW_PROP_TAG(AdaptionIndicator); diff --git a/dumux/implicit/adaptive/gridadaptpropertydefaults.hh b/dumux/implicit/adaptive/gridadaptpropertydefaults.hh index 1d6ed742a0..20f52eb7fe 100644 --- a/dumux/implicit/adaptive/gridadaptpropertydefaults.hh +++ b/dumux/implicit/adaptive/gridadaptpropertydefaults.hh @@ -31,6 +31,7 @@ #include "gridadaptproperties.hh" #include "gridadaptindicatordefault.hh" #include "gridadaptinitializationindicator.hh" +#include "adaptionhelper.hh" namespace Dumux { @@ -60,6 +61,8 @@ SET_BOOL_PROP(GridAdapt, GridAdaptRefineAtSource, false); SET_TYPE_PROP(GridAdapt, AdaptionIndicator, ImplicitGridAdaptIndicatorDefault<TypeTag>); //!Set default class for adaption initialization indicator SET_TYPE_PROP(GridAdapt, AdaptionInitializationIndicator, ImplicitGridAdaptInitializationIndicatorDefault<TypeTag>); +//!Set default class for adaption helper +SET_TYPE_PROP(GridAdapt, AdaptionHelper, ImplicitAdaptionHelper<TypeTag>); } // namespace Properties } // namespace Dumux -- GitLab