3.5-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Loading...
Searching...
No Matches
fegridgeometry.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 *****************************************************************************/
25#ifndef DUMUX_DISCRETIZATION_FE_GRID_GEOMETRY_HH
26#define DUMUX_DISCRETIZATION_FE_GRID_GEOMETRY_HH
27
28#include <unordered_map>
29
32
38
39namespace Dumux {
40
47template<class FEBasis, class MapperTraits = DefaultMapperTraits<typename FEBasis::GridView>>
48struct DefaultFEGridGeometryTraits : public MapperTraits
49{
50 template<class GridGeometry>
52};
53
61template<class FEB, class Traits = DefaultFEGridGeometryTraits<FEB>>
63: public BaseGridGeometry< typename FEB::GridView, Traits >
64{
65 using ThisType = FEGridGeometry<FEB, Traits>;
67
68 using GridIndexType = typename IndexTraits<typename FEB::GridView>::GridIndex;
69 using LocalIndexType = typename IndexTraits<typename FEB::GridView>::LocalIndex;
70
71public:
74 static constexpr DiscretizationMethod discMethod{};
75
77 using GridView = typename FEB::GridView;
81 using FEBasis = FEB;
83 using LocalView = typename Traits::template LocalView<ThisType>;
84
86 FEGridGeometry(std::shared_ptr<FEBasis> feBasis)
87 : ParentType(feBasis->gridView())
88 , feBasis_(feBasis)
89 {
90 // Check if the overlap size is what we expect
92 DUNE_THROW(Dune::InvalidStateException, "The finite element discretization method only works with zero overlap for parallel computations. "
93 << " Set the parameter \"Grid.Overlap\" in the input file.");
94 }
95
97 auto numDofs() const
98 { return feBasis_->size(); }
99
101 const FEBasis& feBasis() const
102 { return *feBasis_; }
103
105 bool dofOnPeriodicBoundary(GridIndexType dofIdx) const
106 { DUNE_THROW(Dune::NotImplemented, "Periodic BC support for FEM schemes"); }
107
109 GridIndexType periodicallyMappedDof(GridIndexType dofIdx) const
110 { DUNE_THROW(Dune::NotImplemented, "Periodic BC support for FEM schemes"); }
111
113 const std::unordered_map<GridIndexType, GridIndexType>& periodicVertexMap() const
114 { DUNE_THROW(Dune::NotImplemented, "Periodic BC support for FEM schemes"); }
115
116private:
117 std::shared_ptr<FEBasis> feBasis_;
118};
119
120} // end namespace Dumux
121
122#endif
Defines the default element and vertex mapper types.
Defines the index types used for grid and local indices.
The available discretization methods in Dumux.
Helper classes to compute the integration elements.
Check the overlap size for different discretization methods.
Grid geometry local view, which is a wrapper around a finite element basis local view.
Base class for grid geometries.
BaseGridGeometry(const GridView &gridView)
Constructor computes the bounding box of the entire domain, for e.g. setting boundary conditions.
Definition basegridgeometry.hh:79
Definition adapt.hh:29
typename Extrusion< T >::type Extrusion_t
Convenience alias for obtaining the extrusion type.
Definition extrusion.hh:177
typename GridView::IndexSet::IndexType GridIndex
Definition indextraits.hh:39
unsigned int LocalIndex
Definition indextraits.hh:40
const GridView & gridView() const
Definition basegridgeometry.hh:120
static bool isValid(const GridView &gridView) noexcept
Definition checkoverlapsize.hh:42
Grid geometry local view, which is a wrapper around a finite element basis local view.
Definition feelementgeometry.hh:41
Default Traits class for the fem grid geometry.
Definition fegridgeometry.hh:49
FEElementGeometry< GridGeometry > LocalView
Definition fegridgeometry.hh:51
GridIndexType periodicallyMappedDof(GridIndexType dofIdx) const
The index of the vertex / d.o.f. on the other side of the periodic boundary.
Definition fegridgeometry.hh:109
DiscretizationMethods::FEM DiscretizationMethod
Definition fegridgeometry.hh:73
const FEBasis & feBasis() const
Definition fegridgeometry.hh:101
auto numDofs() const
The total number of degrees of freedom.
Definition fegridgeometry.hh:97
typename Traits::template LocalView< ThisType > LocalView
Definition fegridgeometry.hh:83
FEB FEBasis
Definition fegridgeometry.hh:81
bool dofOnPeriodicBoundary(GridIndexType dofIdx) const
If a vertex / d.o.f. is on a periodic boundary.
Definition fegridgeometry.hh:105
Extrusion_t< Traits > Extrusion
Definition fegridgeometry.hh:79
typename FEB::GridView GridView
Definition fegridgeometry.hh:77
const std::unordered_map< GridIndexType, GridIndexType > & periodicVertexMap() const
Returns the map between dofs across periodic boundaries.
Definition fegridgeometry.hh:113
static constexpr DiscretizationMethod discMethod
Definition fegridgeometry.hh:74
FEGridGeometry(std::shared_ptr< FEBasis > feBasis)
Constructor.
Definition fegridgeometry.hh:86
Definition method.hh:99