From 41cb8a319ecac4d3d4912be2ce91d21d50b7d754 Mon Sep 17 00:00:00 2001
From: Simon Praetorius <simon.praetorius@tu-dresden.de>
Date: Wed, 20 Mar 2019 11:14:42 +0100
Subject: [PATCH] parametrize BasisCreator with Grid instead of GridView

---
 examples/cahn_hilliard.cc       |  2 +-
 examples/navier_stokes.cc       |  2 +-
 examples/neumann.cc             |  2 +-
 examples/periodic.cc            |  2 +-
 examples/stokes0.cc             |  2 +-
 examples/stokes1.cc             |  2 +-
 examples/stokes3.cc             |  2 +-
 examples/vecellipt.cc           |  2 --
 src/amdis/ProblemStatTraits.hpp | 13 +++++++------
 test/DataTransferTest.hpp       |  4 ++--
 test/MarkerTest.cpp             |  2 +-
 test/OperatorsTest.cpp          |  2 +-
 12 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/examples/cahn_hilliard.cc b/examples/cahn_hilliard.cc
index ceccd5a9..9f68a576 100644
--- a/examples/cahn_hilliard.cc
+++ b/examples/cahn_hilliard.cc
@@ -9,7 +9,7 @@
 using namespace AMDiS;
 
 using Grid = Dune::AlbertaGrid<GRIDDIM, WORLDDIM>;
-using Param = LagrangeBasis<typename Grid::LeafGridView, 1, 1>;
+using Param = LagrangeBasis<Grid, 1, 1>;
 
 int main(int argc, char** argv)
 {
diff --git a/examples/navier_stokes.cc b/examples/navier_stokes.cc
index ebb8fef7..4735e5f3 100644
--- a/examples/navier_stokes.cc
+++ b/examples/navier_stokes.cc
@@ -8,7 +8,7 @@
 using namespace AMDiS;
 
 using Grid = Dune::YaspGrid<2>;
-using Basis = TaylorHoodBasis<Grid::LeafGridView>;
+using Basis = TaylorHoodBasis<Grid>;
 
 int main(int argc, char** argv)
 {
diff --git a/examples/neumann.cc b/examples/neumann.cc
index c94947b8..eb423465 100644
--- a/examples/neumann.cc
+++ b/examples/neumann.cc
@@ -25,7 +25,7 @@ void run(Grid& grid)
 {
   grid.globalRefine(Grid::dimension == 2 ? 4 : 2);
 
-  using Traits = LagrangeBasis<typename Grid::LeafGridView, 2>;
+  using Traits = LagrangeBasis<Grid, 2>;
   ProblemStat<Traits> prob("ellipt", grid);
   prob.initialize(INIT_ALL);
   prob.boundaryManager().setBoxBoundary({1,2,2,1});
diff --git a/examples/periodic.cc b/examples/periodic.cc
index d1293153..2e61afb4 100644
--- a/examples/periodic.cc
+++ b/examples/periodic.cc
@@ -54,7 +54,7 @@ void print(Grid const& grid)
 template <class Grid>
 void run(Grid& grid)
 {
-  using Traits = LagrangeBasis<typename Grid::LeafGridView, 1>;
+  using Traits = LagrangeBasis<Grid, 1>;
 
   ProblemStat<Traits> prob("ellipt", grid);
   prob.initialize(INIT_ALL);
diff --git a/examples/stokes0.cc b/examples/stokes0.cc
index 6cb7168d..6c0bd639 100644
--- a/examples/stokes0.cc
+++ b/examples/stokes0.cc
@@ -5,7 +5,7 @@
 using namespace AMDiS;
 
 using Grid = Dune::YaspGrid<2>;
-using StokesParam = TaylorHoodBasis<Grid::LeafGridView>;
+using StokesParam = TaylorHoodBasis<Grid>;
 using StokesProblem = ProblemStat<StokesParam>;
 
 int main(int argc, char** argv)
diff --git a/examples/stokes1.cc b/examples/stokes1.cc
index 2755a9f5..13279763 100644
--- a/examples/stokes1.cc
+++ b/examples/stokes1.cc
@@ -5,7 +5,7 @@
 using namespace AMDiS;
 
 using Grid = Dune::YaspGrid<2>;
-using StokesParam = TaylorHoodBasis<Grid::LeafGridView>;
+using StokesParam = TaylorHoodBasis<Grid>;
 using StokesProblem = ProblemStat<StokesParam>;
 
 int main(int argc, char** argv)
diff --git a/examples/stokes3.cc b/examples/stokes3.cc
index 393a0b25..2358e900 100644
--- a/examples/stokes3.cc
+++ b/examples/stokes3.cc
@@ -6,7 +6,7 @@
 using namespace AMDiS;
 
 using Grid = Dune::YaspGrid<2>;
-using StokesParam = TaylorHoodBasis<Grid::LeafGridView>;
+using StokesParam = TaylorHoodBasis<Grid>;
 using StokesProblem = ProblemStat<StokesParam>;
 
 int main(int argc, char** argv)
diff --git a/examples/vecellipt.cc b/examples/vecellipt.cc
index 09fa7997..ec3d4356 100644
--- a/examples/vecellipt.cc
+++ b/examples/vecellipt.cc
@@ -10,8 +10,6 @@
 
 using namespace AMDiS;
 
-// 1 component with polynomial degree 1
-//using Grid = Dune::AlbertaGrid<GRIDDIM, WORLDDIM>;
 using ElliptParam   = YaspGridBasis<GRIDDIM, 2,2>;
 using ElliptProblem = ProblemStat<ElliptParam>;
 
diff --git a/src/amdis/ProblemStatTraits.hpp b/src/amdis/ProblemStatTraits.hpp
index 432be6f0..0be129b5 100644
--- a/src/amdis/ProblemStatTraits.hpp
+++ b/src/amdis/ProblemStatTraits.hpp
@@ -64,9 +64,10 @@ namespace AMDiS
   };
 
 
-  template <class GridView, class PreBasisCreator>
+  template <class Grid, class PreBasisCreator>
   struct DefaultBasisCreator
   {
+    using GridView = typename Grid::LeafGridView;
     static auto create(GridView const& gridView)
     {
       using namespace Dune::Functions::BasisFactory;
@@ -78,23 +79,23 @@ namespace AMDiS
 
   /// \brief ProblemStatTraits for a (composite) basis composed of
   /// lagrange bases of different degree.
-  template <class GridView, int... degrees>
+  template <class Grid, int... degrees>
   struct LagrangeBasis
-      : public DefaultBasisCreator<GridView, Impl::LagrangePreBasisCreator<degrees...>>
+      : public DefaultBasisCreator<Grid, Impl::LagrangePreBasisCreator<degrees...>>
   {};
 
   /// \brief Specialization of \ref LagrangeBasis for Grid type
   /// \ref Dune::YaspGrid for a given dimension.
   template <int dim, int... degrees>
   struct YaspGridBasis
-      : public LagrangeBasis<typename Dune::YaspGrid<dim>::LeafGridView, degrees...>
+      : public LagrangeBasis<Dune::YaspGrid<dim>, degrees...>
   {};
 
   /// \brief ProblemStatTraits of Taylor-Hood basis of lagrange-type
   /// with pressure degree k
-  template <class GridView, int k = 1>
+  template <class Grid, int k = 1>
   struct TaylorHoodBasis
-      : public DefaultBasisCreator<GridView, Impl::TaylorHoodPreBasisCreator<GridView::dimensionworld,k>>
+      : public DefaultBasisCreator<Grid, Impl::TaylorHoodPreBasisCreator<Grid::dimensionworld,k>>
   {};
 
 } // end namespace AMDiS
diff --git a/test/DataTransferTest.hpp b/test/DataTransferTest.hpp
index 11f0e301..d2478feb 100644
--- a/test/DataTransferTest.hpp
+++ b/test/DataTransferTest.hpp
@@ -159,8 +159,8 @@ bool refine_test(Fcts<BasisCreator> const& funcs, bool simplex = true)
 }
 
 template <class Grid>
-  using Lagrange3 = LagrangeBasis<typename Grid::LeafGridView, 3>;
+  using Lagrange3 = LagrangeBasis<Grid, 3>;
 template <class Grid>
-  using TaylorHood = TaylorHoodBasis<typename Grid::LeafGridView>;
+  using TaylorHood = TaylorHoodBasis<Grid>;
 
   constexpr double pi = 3.141592653589793238463;
diff --git a/test/MarkerTest.cpp b/test/MarkerTest.cpp
index 18968a7b..8448ef9c 100644
--- a/test/MarkerTest.cpp
+++ b/test/MarkerTest.cpp
@@ -8,7 +8,7 @@ using namespace AMDiS;
 static const int d = 2; // problem dimension
 
 using Grid  = Dune::UGGrid<d>;
-using Basis = LagrangeBasis<Grid::LeafGridView, 1>;
+using Basis = LagrangeBasis<Grid, 1>;
 using Problem = ProblemStat<Basis>;
 using DomainType = typename Dune::FieldVector<double,d>;
 
diff --git a/test/OperatorsTest.cpp b/test/OperatorsTest.cpp
index 1568cec3..b52fb972 100644
--- a/test/OperatorsTest.cpp
+++ b/test/OperatorsTest.cpp
@@ -10,7 +10,7 @@
 using namespace AMDiS;
 
 using Grid = Dune::YaspGrid<2>;
-using Param   = TaylorHoodBasis<typename Grid::LeafGridView>;
+using Param   = TaylorHoodBasis<Grid>;
 using Problem = ProblemStat<Param>;
 
 int main(int argc, char** argv)
-- 
GitLab