3.5-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, class DiscretizationMethod = typename GridGeometry::DiscretizationMethod >
44struct FunctionSpaceBasisTraits;
45
51template<class GridGeometry, std::enable_if_t<GridGeometry::discMethod != DiscretizationMethods::fem, int> = 0>
52typename FunctionSpaceBasisTraits<GridGeometry>::GlobalBasis
53getFunctionSpaceBasis(const GridGeometry& gridGeometry)
54{ return {gridGeometry.gridView()}; }
55
60template<class GridGeometry, std::enable_if_t<GridGeometry::discMethod == DiscretizationMethods::fem, int> = 0>
61const typename FunctionSpaceBasisTraits<GridGeometry>::GlobalBasis&
62getFunctionSpaceBasis(const GridGeometry& gridGeometry)
63{ return gridGeometry.feBasis(); }
64
65
67// Specializations of the FunctionSpaceBasisTraits class //
69
71template< class GridGeometry >
72struct FunctionSpaceBasisTraits<GridGeometry, DiscretizationMethods::Box>
73{ using GlobalBasis = Dune::Functions::LagrangeBasis<typename GridGeometry::GridView, /*order*/1>; };
74
76template< class GridGeometry >
77struct FunctionSpaceBasisTraits<GridGeometry, DiscretizationMethods::CCTpfa>
78{ using GlobalBasis = Dune::Functions::LagrangeBasis<typename GridGeometry::GridView, /*order*/0>; };
79
81template< class GridGeometry >
82struct FunctionSpaceBasisTraits<GridGeometry, DiscretizationMethods::CCMpfa>
83{ using GlobalBasis = Dune::Functions::LagrangeBasis<typename GridGeometry::GridView, /*order*/0>; };
84
86template< class GridGeometry >
87struct FunctionSpaceBasisTraits<GridGeometry, DiscretizationMethods::FEM>
88{ using GlobalBasis = typename GridGeometry::FEBasis; };
89
90} // end namespace Dumux
91
92#endif // HAVE_DUNE_FUNCTIONS
93#endif
The available discretization methods in Dumux.
Definition: adapt.hh:29