Class documentation of Concepts

Loading...
Searching...
No Matches
circle.hh
Go to the documentation of this file.
1
6#ifndef circle_hh
7#define circle_hh
8
9#include "toolbox/array.hh"
10#include "toolbox/sequence.hh"
11#include "cell1D.hh"
12#include "cell2D.hh"
13#include "mesh.hh"
14
15namespace concepts {
16
17 // **************************************************************** Circle **
18
47 class Circle : public Mesh2withBoundary {
48 public:
60 Circle(const Real r = 1.0, const Real ratio = 0.5,
61 const Real innerRadius = 0.0);
71 Circle(const Array<Real> rings, const Real ratio = 0.5,
72 const Real innerRadius = 0.0);
86 const Real ratio = 0.5, const Real innerRadius = 0.0);
102 const Real ratio = 0.5, const Real innerRadius = 0.0);
120 const Array<uint> ringAttrib);
121
131 Circle(const Real2d center, const Real r, const uint n,
132 const Attribute attrib = 0, const Real phi0 = 0,
133 const Attribute edgAttr = 0);
134
148 Circle(const Real2d center, const Real innerRadius,
149 const Real outerRadius, const uint n,
150 const Attribute attrib = 0, const Real phi0 = 0);
151
152 virtual ~Circle();
153
154 inline uint ncell() const { return ncell_; }
155 inline Scan2* scan() { return new S(&cell_); }
156
157 virtual std::ostream& info(std::ostream& os) const;
158 private:
160 class S : public Scan<Cell2> {
161 uint idx_;
162 Array<Quad2d*>* cell_;
163 public:
164 inline S(Array<Quad2d*>* cell) : idx_(0),
165 cell_(cell) {}
166 inline S(const S &scan) : idx_(scan.idx_),
167 cell_(scan.cell_) {}
168
169 inline bool eos() const { return idx_ == cell_->size(); }
170 inline Cell2& operator++(int) { return *(*cell_)[idx_++]; }
171
172 inline Scan2* clone() const { return new S(*this); }
173 };
174 uint ncell_;
175
176 Array<Vertex*> vtx_;
177 Array<Edge*> edg_;
178 Array<Quad*> quad_;
179
182
184 Array<Quad2d*> cell_;
185
190 Real2d point_(const uint n, const Real r) const;
199 void construct_(const Array<Real> rings, const Real ratio,
200 const Real innerRadius,
201 const std::map<uint, uint>* const attrib = 0,
202 const std::map<uint, uint>* const edgeAttrib = 0,
203 const bool hole = false);
204 };
205
206
207} // namespace concepts
208
209#endif // circle_hh
uint size() const
Returns the requested size of the array.
Definition array.hh:259
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
uint ncell() const
Returns the number of cells in the mesh.
Definition circle.hh:154
Circle(const Real r=1.0, const Real ratio=0.5, const Real innerRadius=0.0)
Circle(const Real innerRadius, const Array< Real > rings)
Circle(const Real innerRadius, const Array< Real > rings, const Array< uint > ringAttrib)
Scan2 * scan()
Definition circle.hh:155
Circle(const Array< Real > rings, const Array< uint > ringAttrib, const Real ratio=0.5, const Real innerRadius=0.0)
Circle(const Real2d center, const Real innerRadius, const Real outerRadius, const uint n, const Attribute attrib=0, const Real phi0=0)
Circle(const Array< Real > rings, const Real ratio=0.5, const Real innerRadius=0.0)
Circle(const Real2d center, const Real r, const uint n, const Attribute attrib=0, const Real phi0=0, const Attribute edgAttr=0)
Circle(const Array< Real > rings, const Array< uint > ringAttrib, const Array< uint > ringEdgeAttrib, const Real ratio=0.5, const Real innerRadius=0.0)
A scanner for a 2D mesh.
Definition mesh.hh:44
Scan< Cell2 > Scan2
A scanner for a 2D mesh.
Definition mesh.hh:62
double Real
Definition typedefs.hh:39
Set< F > makeSet(uint n, const F &first,...)
Definition set.hh:320