version 3.11-dev
Loading...
Searching...
No Matches
gridcapabilities.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// SPDX-FileCopyrightText: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
12#ifndef DUMUX_COMMON_GRID_CAPABILITIES_HH
13#define DUMUX_COMMON_GRID_CAPABILITIES_HH
14
15#include <tuple>
16
17#include <dune/grid/common/capabilities.hh>
18
20
21// Default implementation
22// The grid capability gives an absolute guarantee
23// however this does not mean that multithreading is not
24// supported at all. It might still work for some special cases.
25// This knowledge is encoded in specializations for the different
26// grid managers, see dumux/grid/io/gridmanager_*.hh
27template<class Grid>
29{
30 template<class GV>
31 static bool eval(const GV&) // default is independent of the grid view
32 { return Dune::Capabilities::viewThreadSafe<Grid>::v; }
33};
34
35template<class GridView>
36inline bool supportsMultithreading(const GridView& gridView)
38
43template<class... GridDiscretizations>
44inline bool allGridsSupportsMultithreading(const std::tuple<GridDiscretizations...>& gridDiscretizations)
45{
46 return std::apply([](const auto&... gridDiscretization)
47 { return (... && supportsMultithreading(gridDiscretization->gridView())); }, gridDiscretizations);
48}
49
50} // namespace Dumux::Grid::Capabilities
51
52#endif
decltype(auto) gridDiscretization(const T &t, Args &&... args)
The grid discretization.
Definition griddiscretization.hh:65
Definition gridcapabilities.hh:19
bool supportsMultithreading(const GridView &gridView)
Definition gridcapabilities.hh:36
bool allGridsSupportsMultithreading(const std::tuple< GridDiscretizations... > &gridDiscretizations)
Whether the grid views of all grid discretizations support multithreading.
Definition gridcapabilities.hh:44
static bool eval(const GV &)
Definition gridcapabilities.hh:31