dune-assembler 2.12
Loading...
Searching...
No Matches
assemblerconcepts.hh
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file AUTHORS.md
2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception OR LGPL-3.0-or-later
3
4#ifndef DUNE_ASSEMBLER_ASSEMBLER_CONCEPTS_HH
5#define DUNE_ASSEMBLER_ASSEMBLER_CONCEPTS_HH
6
8
10
11// bind to a grid element
12template <class LA, class Element>
13concept BindableToElement = requires(LA la, const Element& e)
14{
15 la.bindElement(e);
16};
17
18// bind to a single local view
19template <class LA, class LocalView>
22 requires(LA la, const LocalView& localView)
23{
24 la.bindLocalView(localView);
25};
26
27// bind to multiple local views
28template <class LA, class ... LocalViews>
31 requires(LA la, const LocalViews&... localViews)
32{
33 la.bindLocalViews(localViews ...);
34};
35
36template <class LA, class RowLocalView, class ColLocalView>
40 requires(LA la, typename RowLocalView::Element e, Archetypes::Matrix& localMatrix, Archetypes::LocalMatrixPattern& localPattern)
41{
42 la.assembleElementMatrix(e,localMatrix);
43 la.assembleElementMatrixPattern(e,localPattern);
44};
45
46
47template <class LA, class LocalView>
51 requires(LA la, typename LocalView::Element e, Archetypes::Vector& localVector)
52{
53 la.assembleElementVector(e,localVector);
54};
55
56template <class LA, class RowLocalView, class ColLocalView>
60 requires(LA la, typename RowLocalView::Element e, Archetypes::Matrix& localMatrix, Archetypes::Vector& localVector)
61{
62 la.assembleElement(e,localMatrix,localVector);
63};
64
65
66// assemblers on the boundary intersections
67
68template <class LA, class RowLocalView, class ColLocalView>
72 requires(LA la, typename RowLocalView::GridView::Intersection is, Archetypes::Matrix& localMatrix, Archetypes::LocalMatrixPattern& localPattern)
73{
74 la.assembleBoundaryIntersectionMatrix(is,localMatrix);
75 la.assembleBoundaryIntersectionMatrixPattern(is,localPattern);
76};
77
78template <class LA, class LocalView>
82 requires(LA la, typename LocalView::GridView::Intersection is, Archetypes::Vector& localVector)
83{
84 la.assembleBoundaryIntersectionVector(is,localVector);
85};
86
87template <class LA, class RowLocalView, class ColLocalView>
91 requires(LA la, typename RowLocalView::GridView::Intersection is, Archetypes::Matrix& localMatrix, Archetypes::Vector& localVector)
92{
93 la.assembleBoundaryIntersection(is,localMatrix,localVector);
94};
95
96
97// assemblers on the inner intersections
98
99// bind to single local view
100template <class LA, class LocalView>
103 requires(LA la, const LocalView& localView)
104{
105 la.bindOutsideLocalView(localView);
106};
107
108// bind to multiple local views
109template <class LA, class ... LocalViews>
112 requires(LA la, const LocalViews&... localViews)
113{
114 la.bindOutsideLocalViews(localViews ...);
115};
116
117template <class LA, class RowLocalView, class ColLocalView>
122 requires(LA la, typename RowLocalView::GridView::Intersection is, std::array<std::array<Archetypes::Matrix, 2>, 2> localMatrix, std::array<std::array<Archetypes::LocalMatrixPattern, 2>, 2> localPattern)
123{
124 la.assembleInteriorIntersectionMatrix(is,localMatrix);
125 la.assembleInteriorIntersectionMatrixPattern(is,localPattern);
126};
127
128template <class LA, class LocalView>
133 requires(LA la, typename LocalView::GridView::Intersection is, std::array<Archetypes::Vector, 2> localVector)
134{
135 la.assembleInteriorIntersectionVector(is,localVector);
136};
137
138template <class LA, class RowLocalView, class ColLocalView>
143 requires(LA la, typename RowLocalView::GridView::Intersection is, std::array<std::array<Archetypes::Matrix, 2>, 2> localMatrix, std::array<Archetypes::Vector, 2> localVector)
144{
145 la.assembleInteriorIntersection(is,localMatrix,localVector);
146};
147
148
149
150template <class LA, class RowLocalView, class ColLocalView>
155
156template <class LA, class LocalView>
161
162template <class LA, class RowLocalView, class ColLocalView>
167
168
169} // end namespace Dune::Assembler::Concept
170
171#endif // DUNE_ASSEMBLER_ASSEMBLER_CONCEPTS_HH
Definition localboundaryintersectionmatrixassembler.hh:9
Definition assemblerconcepts.hh:13
Definition assemblerconcepts.hh:20
Definition assemblerconcepts.hh:29
Definition assemblerconcepts.hh:151
Definition assemblerconcepts.hh:157
Definition assemblerconcepts.hh:163
Definition concepts.hh:14