Class documentation of Concepts

Loading...
Searching...
No Matches
mappingEdge3D.hh
Go to the documentation of this file.
1#ifndef MAPPINGEDGE3D_HH
2#define MAPPINGEDGE3D_HH
3
9// #include "basics/outputOperator.hh"
10// #include "basics/typedefs.hh"
11// #include "basics/vectorsMatrices.hh"
12// #include "basics/cloneable.hh"
13#include "basics.hh"
14#include "toolbox/sequence.hh"
15#include "toolbox/arrayOp.hh"
16
17#include <array>
18
19namespace concepts {
20
21
22 // ********************************************************* MappingEdge3d **
23
31 class MappingEdge3d : public Map1d {
32 public:
41 ~MappingEdge3d() override;
46 virtual MappingEdge3d* clone() const = 0;
51 virtual MappingEdge3d* inverse() const = 0;
55 virtual Real3d operator()(const Real t) const = 0;
60 virtual Real3d derivative(const Real t, const uint n = 1) const = 0;
64 inline const Real3d& vtx(uint i) const {return vtx_[i];}
65 protected:
66 std::ostream& info(std::ostream& os) const override;
68 std::array<Real3d,2> vtx_;
69 };
70
71
72 // ************************************************* MappingQuadEdge3d **
73 // Implementation of this class not yet done since not required to generate
74 // 3d geometry with curved hexahedra
75
76 // ************************************************* MappingStraightEdge3d **
77
84 public:
90 ~MappingStraightEdge3d() override;
91 MappingStraightEdge3d* clone() const override;
92 MappingStraightEdge3d* inverse() const override;
93 Real3d operator()(const Real t) const override;
94 Real3d derivative(const Real t, const uint n = 1) const override;
95 protected:
96 std::ostream& info(std::ostream& os) const override;
97 };
98
99
100 // ************************************************** CircleMappingEdge3d **
101
116 public:
124 const Real radius, const Real3d& center,
125 const Real tol=1e6*std::numeric_limits<double>::epsilon());
126
131 CircleMappingEdge3d* clone() const override;
132 CircleMappingEdge3d* inverse() const override;
133 Real3d operator()(const Real t) const override;
134 Real3d derivative(const Real t, const uint n = 1) const override;
135 Real getRadius() const {return radius_;}
136 Real3d getCenter() const {return center_;}
137 protected:
138 std::ostream& info(std::ostream& os) const override;
139 private:
141 Real radius_;
143 Real3d center_;
144 };
145
146 // ************************************************** MappingHexahedronEdge3d **
147
148 // forward declaration
150
162 public:
178 const Real3d xi, const Real3d diff);
182 ~MappingHexahedronEdge3d() override {};
183 Real3d operator()(const Real t) const override;
184 Real3d derivative(const Real t, const uint n = 1) const override;
186 protected:
187 std::ostream& info(std::ostream& os) const override;
188 private:
190 std::unique_ptr<MappingHexahedron3d> map_;
192 Real3d xi_, diff_;
193
195 inline const Real3d lcoord_(const Real t) const {
196 return xi_ + diff_*t;
197 }
199 inline const Real3d lderiv_(const Real t) const {
200 return diff_;
201 }
202 };
203
204
205} // namespace concepts
206
207#endif // MAPPINGEDGE3D_HH
~CircleMappingEdge3d() override
Destructor.
std::ostream & info(std::ostream &os) const override
Returns information in an output stream.
CircleMappingEdge3d(const CircleMappingEdge3d &other)
Copy Constructor.
CircleMappingEdge3d * inverse() const override
CircleMappingEdge3d(const Real3d &vtx0, const Real3d &vtx1, const Real radius, const Real3d &center, const Real tol=1e6 *std::numeric_limits< double >::epsilon())
CircleMappingEdge3d * clone() const override
Real3d operator()(const Real t) const override
Real3d derivative(const Real t, const uint n=1) const override
virtual Real3d derivative(const Real t, const uint n=1) const =0
std::array< Real3d, 2 > vtx_
Physical vertices .
MappingEdge3d(const Real3d &vtx0, const Real3d &vtx1)
MappingEdge3d(const MappingEdge3d &other)
Copy constructor.
std::ostream & info(std::ostream &os) const override
Returns information in an output stream.
const Real3d & vtx(uint i) const
virtual MappingEdge3d * inverse() const =0
~MappingEdge3d() override
Virtual destructor.
virtual MappingEdge3d * clone() const =0
virtual Real3d operator()(const Real t) const =0
MappingHexahedronEdge3d * inverse() const override
Real3d derivative(const Real t, const uint n=1) const override
std::ostream & info(std::ostream &os) const override
Returns information in an output stream.
MappingHexahedronEdge3d(const MappingHexahedron3d &map, const uint edge)
MappingHexahedronEdge3d(const MappingHexahedron3d &map, const Real3d xi, const Real3d diff)
MappingHexahedronEdge3d(const MappingHexahedronEdge3d &other)
Copy Constructor.
MappingHexahedronEdge3d * clone() const override
Real3d operator()(const Real t) const override
MappingStraightEdge3d(const MappingStraightEdge3d &other)
Copy Constructor.
Real3d operator()(const Real t) const override
MappingStraightEdge3d(const Real3d &vtx0, const Real3d &vtx1)
Real3d derivative(const Real t, const uint n=1) const override
MappingStraightEdge3d * inverse() const override
MappingStraightEdge3d * clone() const override
std::ostream & info(std::ostream &os) const override
Returns information in an output stream.
double Real
Definition typedefs.hh:39
Set< F > makeSet(uint n, const F &first,...)
Definition set.hh:320