3.5-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
checkoverlapsize.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 *****************************************************************************/
24#ifndef DUMUX_DISCRETIZATION_CHECK_OVERLAP_SIZE_HH
25#define DUMUX_DISCRETIZATION_CHECK_OVERLAP_SIZE_HH
26
28
29namespace Dumux {
30
38template<class DiscretizationMethod>
40{
41 template<class GridView>
42 static bool isValid(const GridView& gridView) noexcept
43 { return gridView.comm().size() <= 1 || gridView.overlapSize(0) + gridView.ghostSize(0) > 0; }
44};
45
47template<>
48struct CheckOverlapSize<DiscretizationMethods::Box>
49{
50 template<class GridView>
51 static bool isValid(const GridView& gridView) noexcept
52 { return gridView.comm().size() <= 1 || gridView.overlapSize(0) == 0; }
53};
54
57template<>
58struct CheckOverlapSize<DiscretizationMethods::FEM>
59{
60 template<class FEBasis>
61 static bool isValid(const FEBasis& feBasis) noexcept
62 { return feBasis.gridView().comm().size() <= 1 || feBasis.gridView().overlapSize(0) == 0; }
63};
64
65// fc staggered requires an overlap of exactly 1
66template<>
67struct CheckOverlapSize<DiscretizationMethods::FCStaggered>
68{
69 template<class GridView>
70 static bool isValid(const GridView& gridView) noexcept
71 { return gridView.comm().size() <= 1 || gridView.overlapSize(0) == 1; }
72};
73
74} // end namespace Dumux
75
76#endif
The available discretization methods in Dumux.
Definition: adapt.hh:29
Check if the overlap size is valid for a given discretization method.
Definition: checkoverlapsize.hh:40
static bool isValid(const GridView &gridView) noexcept
Definition: checkoverlapsize.hh:42
static bool isValid(const GridView &gridView) noexcept
Definition: checkoverlapsize.hh:51
static bool isValid(const FEBasis &feBasis) noexcept
Definition: checkoverlapsize.hh:61
static bool isValid(const GridView &gridView) noexcept
Definition: checkoverlapsize.hh:70