3.2-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
functionspacebasis.hh
Go to the documentation of this file.
1// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2// vi: set et ts=4 sw=4 sts=4:
3/*****************************************************************************
4 * See the file COPYING for full copying permissions. *
5 * *
6 * This program is free software: you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation, either version 3 of the License, or *
9 * (at your option) any later version. *
10 * *
11 * This program is distributed in the hope that it will be useful, *
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14 * GNU General Public License for more details. *
15 * *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
18 *****************************************************************************/
26#ifndef DUMUX_DISCRETIZATION_FUNCTION_SPACE_BASIS_HH
27#define DUMUX_DISCRETIZATION_FUNCTION_SPACE_BASIS_HH
28
29#if HAVE_DUNE_FUNCTIONS
30
32#include <dune/functions/functionspacebases/lagrangebasis.hh>
33
34namespace Dumux {
35
43template< class GridGeometry,
44 DiscretizationMethod dm = GridGeometry::discMethod >
45struct FunctionSpaceBasisTraits;
46
52template<class GridGeometry, std::enable_if_t<GridGeometry::discMethod != DiscretizationMethod::fem, int> = 0>
53typename FunctionSpaceBasisTraits<GridGeometry>::GlobalBasis
54getFunctionSpaceBasis(const GridGeometry& gridGeometry)
55{ return {gridGeometry.gridView()}; }
56
61template<class GridGeometry, std::enable_if_t<GridGeometry::discMethod == DiscretizationMethod::fem, int> = 0>
62const typename FunctionSpaceBasisTraits<GridGeometry>::GlobalBasis&
63getFunctionSpaceBasis(const GridGeometry& gridGeometry)
64{ return gridGeometry.feBasis(); }
65
66
68// Specializations of the FunctionSpaceBasisTraits class //
70
72template< class GridGeometry >
73struct FunctionSpaceBasisTraits<GridGeometry, DiscretizationMethod::box>
74{ using GlobalBasis = Dune::Functions::LagrangeBasis<typename GridGeometry::GridView, /*order*/1>; };
75
77template< class GridGeometry >
78struct FunctionSpaceBasisTraits<GridGeometry, DiscretizationMethod::cctpfa>
79{ using GlobalBasis = Dune::Functions::LagrangeBasis<typename GridGeometry::GridView, /*order*/0>; };
80
82template< class GridGeometry >
83struct FunctionSpaceBasisTraits<GridGeometry, DiscretizationMethod::ccmpfa>
84{ using GlobalBasis = Dune::Functions::LagrangeBasis<typename GridGeometry::GridView, /*order*/0>; };
85
87template< class GridGeometry >
88struct FunctionSpaceBasisTraits<GridGeometry, DiscretizationMethod::fem>
89{ using GlobalBasis = typename GridGeometry::FEBasis; };
90
91} // end namespace Dumux
92
93#endif // HAVE_DUNE_FUNCTIONS
94#endif // DUMUX_FUNCTION_SPACE_BASIS_HH
The available discretization methods in Dumux.
DiscretizationMethod
The available discretization methods in Dumux.
Definition: method.hh:37
Definition: adapt.hh:29