1#ifndef MAPPINGQUAD3D_HH
2#define MAPPINGQUAD3D_HH
8#if __cplusplus >= 201103L
45 virtual Real3d operator()(
Real x,
Real y)
const = 0;
68 virtual Real faceElement(
const Real x,
const Real y)
const;
72 virtual Real3d jacobianColumn(
uint i,
const Real x,
const Real y)
const = 0;
83 virtual Real3d normal(
const Real &x,
const Real &y)
const;
86 virtual MappingEdge3d* edge(
uint edge)
const = 0;
105 virtual std::ostream& info(std::ostream&
os)
const;
123 const Real2d &
xi0,
const Real2d &
xi1);
140 virtual MappingEdge3d* edge(
uint edge)
const;
149 virtual std::ostream& info(std::ostream&
os)
const;
153 std::unique_ptr<const MappingQuad3d> map_;
167 return x0_ + Real2d(
xi * d_[0],
eta * d_[1]);
186 virtual Real3d operator()(
Real x,
Real y)
const;
193 virtual Real3d jacobianColumn(
uint i,
const Real x,
const Real y)
const;
197 virtual MappingEdge3d* edge(
uint edge)
const;
205 virtual bool straight()
const {
return true; }
207 virtual std::ostream& info(std::ostream&
os)
const;
213 const Real3d &
vtx2,
const Real3d &
vtx3)
const;
249 const Real3d&
vtx2,
const Real3d&
vtx3,
250 const Real radius,
const Real3d& center);
254 const CircleMappingEdge3d*
edge2,
const CircleMappingEdge3d*
edge3,
257 const Real radius,
const Real3d& center,
260 const MappingEdge3d*
edge2,
const MappingEdge3d*
edge3,
261 const Real radius,
const Real3d& center,
266 Real3d operator()(
Real x,
Real y)
const override;
267 Real3d jacobianColumn(
uint i,
const Real x,
const Real y)
const override;
279 BallQuad3d* part(
const Real2d& x0,
const Real2d&
y0)
const override;
281 MappingEdge3d* edge(
const uint edge)
const override;
308 Real getRadius()
const {
return radius_; }
309 Real3d getCenter()
const {
return center_; }
311 std::ostream& info(std::ostream&
os)
const override;
314 std::array<Real3d,4> vtx_;
328 void construct_(
const std::array< const MappingEdge3d*,4 >&
edgemap,
const Quad& quad);
364 typename std::tuple_element<
Dim-2u,
365 std::tuple<MappingQuad2d,MappingQuad3d>>::type>::type;
369 typename std::tuple_element<
Dim-1u,
370 std::tuple<MapEdge1d,MappingEdge2d,MappingEdge3d>>::type>::type;
419 std::ostream& info(std::ostream&
os)
const override;
422 std::array<std::unique_ptr<MappingEdge<Dim>>,4> edgemap_;
435 class MappingHexahedron3d;
470 Real3d operator()(
Real x,
Real y)
const override;
471 Real3d jacobianColumn(
uint i,
const Real x,
const Real y)
const override;
473 MappingEdge3d* edge(
const uint edge)
const override;
476 std::ostream& info(std::ostream&
os)
const override;
479 std::unique_ptr<MappingHexahedron3d> map_;
484 std::array<Real3d,2> diff_;
487 inline const Real3d lcoord_(
const Real x,
const Real y)
const {
488 return xi_ + diff_[0]*x + diff_[1]*y;
491 inline const Real3d lderiv_(
uint i,
const Real x,
const Real y)
const {
492 return i == 0 ? diff_[0] : diff_[1];
Set< F > makeSet(uint n, const F &first,...)