1#ifndef DUNE_COPASI_CONCEPTS_GRID_HH
2#define DUNE_COPASI_CONCEPTS_GRID_HH
4#include <dune-copasi-config.hh>
6#include <dune/grid/concepts/grid.hh>
13using namespace Dune::Concept;
15template<
class E,
class IS>
17 Dune::Concept::Entity<E> && Dune::Concept::IndexSet<IS> &&
requires(
const E entity,
const IS is) {
20 } -> std::same_as<typename IS::IndexType>;
32 Dune::Concept::Grid<G> && std::same_as<G, typename G::MultiDomainGrid::SubDomainGrid> &&
33 requires(
const G cg,
typename G::SubDomainIndex sub_domain) {
36 } -> std::convertible_to<const typename G::MultiDomainGrid&>;
39 } -> std::convertible_to<typename G::SubDomainIndex>;
53 Dune::Concept::Grid<typename G::HostGrid> &&
54 requires(
const G cg,
typename G::SubDomainIndex sub_domain) {
56 G::maxSubDomainIndexIsStatic()
57 } -> std::convertible_to<bool>;
58 typename G::LeafSubDomainInterfaceIterator;
59 typename G::LevelSubDomainInterfaceIterator;
60 typename G::LeafAllSubDomainInterfacesIterator;
61 typename G::LevelAllSubDomainInterfacesIterator;
63 cg.maxSubDomainIndex()
64 } -> std::convertible_to<typename G::SubDomainIndex>;
66 cg.subDomain(sub_domain)
67 } -> std::convertible_to<const typename G::SubDomainGrid&>;
69 cg.maxAssignedSubDomainIndex()
70 } -> std::convertible_to<typename G::SubDomainIndex>;
72 cg.supportLevelIndexSets()
73 } -> std::convertible_to<bool>;
74 requires requires(G g,
const typename G::template Codim<0>::Entity& entity) {
75 g.startSubDomainMarking();
76 g.preUpdateSubDomains();
78 g.postUpdateSubDomains();
79 g.addToSubDomain(sub_domain, entity);
80 g.removeFromSubDomain(sub_domain, entity);
81 g.assignToSubDomain(sub_domain, entity);
82 g.removeFromAllSubDomains(entity);
Concept for dune multidomain grids.
Definition: grid.hh:51
Concept for dune subdomain grids of multidomain grids.
Definition: grid.hh:31
Definition: compartment_tree.hh:12