Class documentation of Concepts

Loading...
Searching...
No Matches
aprioriRef2D.hh
Go to the documentation of this file.
1
6#ifndef APRIORIRef2D_hh
7#define APRIORIRef2D_hh
8
9#include "basics/typedefs.hh"
10#include "basics/exceptions.hh"
11#include "basics/level.hh"
13#include "geometry/connector.hh"
14#include "space/postProcess.hh"
15#include "space/hpMethod.hh"
16
17// forward declaration
18namespace concepts {
19 class Quad;
20}
21
22namespace hp2D {
23
24 using concepts::Real;
25
26 // ***************************************************** APrioriRefinement **
27
41 public:
42 enum subdivTypes { NONE = 0, X = 1, Y = 2};
43 static const short MAXSHORT = 32767;
58 concepts::Attribute attribVtx, concepts::Attribute attribEdge,
59 const int* const p, const uint subdiv = X | Y,
60 const concepts::Attribute attribCell = 0) :
61 spc_(&spc), attribVtx_(attribVtx), attribEdge_(attribEdge),
62 attribCell_(nullptr), p_(p),
63 subdiv_(subdiv), level_(MAXSHORT) {
64 if (attribCell) attribCell_.reset(new concepts::Attribute(attribCell));
65 }
68 const int* const p, const uint subdiv = X | Y,
69 const concepts::Level<2> level = MAXSHORT) :
70 spc_(&spc), adj_(0), attribVtx_(0), attribEdge_(0), attribCell_(nullptr),
71 p_(p), subdiv_(subdiv), level_(level) {}
88 concepts::Attribute attribVtx,
89 concepts::Attribute attribEdge,
90 const int* const p, const uint subdiv = X | Y) :
91 spc_(0), adj_(&adj), attribVtx_(attribVtx), attribEdge_(attribEdge),
92 attribCell_(nullptr), p_(p), subdiv_(subdiv), level_(MAXSHORT) {}
93
94 virtual void operator() (const concepts::Element<Real>& elm);
95 virtual void operator() (const concepts::Cell& cell);
96 protected:
97 virtual std::ostream& info(std::ostream& os) const;
98 private:
105 concepts::Attribute attribVtx_, attribEdge_;
107 std::unique_ptr<concepts::Attribute> attribCell_;
109 const int* const p_;
111 const uint subdiv_;
113 const concepts::Level<2> level_;
116 computeRef_(const concepts::Quad& q, concepts::Level<2> level) const;
117 };
118
119 // ************************************************* APrioriRefinementRule **
120
122 public:
123 enum subdivTypes { NONE = 0, X = 1, Y = 2};
124 static const short MAXSHORT = 32767;
125
126 virtual concepts::AdaptiveAdjustP<2> operator()
127 (const concepts::Connector2& q) const = 0;
128 protected:
129 virtual std::ostream& info(std::ostream& os) const;
130 };
131
132 // ******************************************** APrioriGeometricRefinement **
133
138 public:
151 const int* const p, const uint subdiv = X | Y);
154 attribVtx_(rule.attribVtx_), attribEdge_(rule.attribEdge_),
155 p_(rule.p_), subdiv_(rule.subdiv_) {}
160
161 virtual concepts::AdaptiveAdjustP<2> operator()
162 (const concepts::Connector2& q) const;
163 protected:
164 virtual std::ostream& info(std::ostream& os) const;
165 private:
167 concepts::Set<concepts::Attribute> attribVtx_, attribEdge_;
169 const int* const p_;
171 const uint subdiv_;
172 };
173
174 // ********************************************** APrioriRegularRefinement **
175
180 public:
186 APrioriRegularRefinement(const int* const p, const uint subdiv = X | Y) :
187 p_(p), subdiv_(subdiv) {}
190 p_(rule.p_), subdiv_(rule.subdiv_) {}
191 virtual concepts::AdaptiveAdjustP<2> operator()
192 (const concepts::Connector2& q) const;
193 protected:
194 virtual std::ostream& info(std::ostream& os) const;
195 private:
197 const int* const p_;
199 const uint subdiv_;
200 };
201
202 // ************************************************** APrioriRefinementNew **
203
205 public:
216 if (rule)
217 rules_[attrib] = rule;
218 else {
219 std::map<uint, APrioriRefinementRule*>::
220 iterator i = rules_.find(attrib);
221 if (i != rules_.end()) rules_.erase(i);
222 }
223 }
224 virtual void operator() (const concepts::Element<Real>& elm);
225 virtual void operator() (const concepts::Cell& cell);
226 private:
233 std::map<uint, APrioriRefinementRule*> rules_;
234 };
235
236} // namespace hp2D
237
238#endif // APRIORIRef2D_hh
concepts::Set< concepts::Attribute > & attribVtx()
Returns set of attributes to refine toward this vertices.
concepts::Set< concepts::Attribute > & attribEdge()
Returns set of attributes to refine toward this edge.
APrioriGeometricRefinement(const APrioriGeometricRefinement &rule)
Copy constructor.
APrioriGeometricRefinement(concepts::Attribute attribVtx, concepts::Attribute attribEdge, const int *const p, const uint subdiv=X|Y)
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
void add(concepts::Attribute attrib, APrioriRefinementRule *rule)
Adds rule for a particular cell attribute.
APrioriRefinementNew(concepts::Adaptivity< concepts::Connector, concepts::AdaptiveAdjustP< 2 > > &adj, APrioriRefinementRule *rule=0)
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
APrioriRefinement(concepts::Adaptivity< concepts::Connector, concepts::AdaptiveAdjustP< 2 > > &adj, concepts::Attribute attribVtx, concepts::Attribute attribEdge, const int *const p, const uint subdiv=X|Y)
APrioriRefinement(concepts::AdaptiveSpace< Real, concepts::AdaptiveAdjustP< 2 > > &spc, concepts::Attribute attribVtx, concepts::Attribute attribEdge, const int *const p, const uint subdiv=X|Y, const concepts::Attribute attribCell=0)
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
APrioriRegularRefinement(const int *const p, const uint subdiv=X|Y)
APrioriRegularRefinement(const APrioriRegularRefinement &rule)
Copy constructor.
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
double Real
Definition typedefs.hh:39