Dune Core Modules (unstable)

adaptcallback.hh
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
4// vi: set et ts=4 sw=2 sts=2:
5#ifndef DUNE_GRID_COMMON_ADAPTCALLBACK_HH
6#define DUNE_GRID_COMMON_ADAPTCALLBACK_HH
7
14namespace Dune
15{
16
17 // Internal Forward Declarations
18 // -----------------------------
19
20 template< class Grid, class Impl >
21 class AdaptDataHandle;
22
23
24
25 // AdaptDataHandleInterface
26 // ------------------------
27
31 template< class Grid, class Impl >
33 {
35
36 friend class AdaptDataHandle< Grid, Impl >;
37
38 public:
39 typedef typename Grid::template Codim< 0 >::Entity Entity;
40
41 private:
43 {}
44
46 This &operator= ( const This & );
47
48 public:
54 void preCoarsening ( const Entity &father )
55 {
56 asImp().preCoarsening( father );
57 }
58
64 void postRefinement ( const Entity &father )
65 {
66 asImp().postRefinement( father );
67 }
68
69 void restrictLocal( const Entity &father, const Entity& son, bool initialize )
70 {
71 asImp().restrictLocal( father, son, initialize );
72 }
73
74 void prolongLocal( const Entity &father, const Entity& son, bool initialize )
75 {
76 asImp().prolongLocal( father, son, initialize );
77 }
78
79 protected:
80 const Impl &asImp () const { return static_cast< const Impl & >( *this ); }
81 Impl &asImp () { return static_cast< Impl & >( *this ); }
82 };
83
84
85
86 // AdaptDataHandle
87 // ---------------
88
89 template< class Grid, class Impl >
90 class AdaptDataHandle
91 : public AdaptDataHandleInterface< Grid, Impl >
92 {
93 typedef AdaptDataHandle< Grid, Impl > This;
94 typedef AdaptDataHandleInterface< Grid, Impl > Base;
95
96 public:
97 typedef typename Base::Entity Entity;
98
99 protected:
100 AdaptDataHandle ()
101 {}
102
103 private:
104 AdaptDataHandle ( const This & );
105 This &operator= ( const This & );
106
107 void preCoarsening ( const Entity &father );
108 void postRefinement ( const Entity &father );
109 };
110
111
112 // CombinedAdaptProlongRestrict
113 // ----------------------------
114
116 template <class A, class B >
118 {
120 A& _a;
121 B& _b;
122 public:
124 CombinedAdaptProlongRestrict ( A& a, B& b ) : _a ( a ) , _b ( b )
125 {}
126
128 template <class Entity>
129 void restrictLocal ( const Entity &father, const Entity &son, bool initialize )
130 {
131 _a.restrictLocal(father,son,initialize);
132 _b.restrictLocal(father,son,initialize);
133 }
134
136 template <class Entity>
137 void prolongLocal ( const Entity &father, const Entity &son, bool initialize )
138 {
139 _a.prolongLocal(father,son,initialize);
140 _b.prolongLocal(father,son,initialize);
141 }
142 };
143
144} // end namespace Dune
145
146#endif
Interface class for the Grid's adapt method where the parameter is a AdaptDataHandleInterface.
Definition: adaptcallback.hh:33
void postRefinement(const Entity &father)
call back for activity to take place on newly created elements below the father element.
Definition: adaptcallback.hh:64
void preCoarsening(const Entity &father)
call back for activity to take place on father and all descendants before the descendants are removed
Definition: adaptcallback.hh:54
class for combining 2 index sets together for adaptation process
Definition: adaptcallback.hh:118
CombinedAdaptProlongRestrict(A &a, B &b)
constructor storing the two references
Definition: adaptcallback.hh:124
void restrictLocal(const Entity &father, const Entity &son, bool initialize)
restrict data to father
Definition: adaptcallback.hh:129
void prolongLocal(const Entity &father, const Entity &son, bool initialize)
prolong data to children
Definition: adaptcallback.hh:137
Wrapper class for entities.
Definition: entity.hh:66
Grid abstract base class.
Definition: grid.hh:375
Dune namespace.
Definition: alignedallocator.hh:13
Static tag representing a codimension.
Definition: dimension.hh:24
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Nov 13, 23:29, 2024)