Go to the documentation of this file.00001
00002
00003 #ifndef spaceTransition_hh
00004 #define spaceTransition_hh
00005
00006 #include "operator/compositions.hh"
00007 #include "space/elementPairs.hh"
00008 #include "space.hh"
00009
00010 namespace hp3D {
00011
00012
00013
00017 class TransitionPair : public concepts::ElementPair<Real> {
00018 public:
00019 TransitionPair(const Element<Real>& elm1, const Element<Real>& elm2,
00020 const int relation) :
00021 elm1_(elm1), elm2_(elm2), relation_(relation) {}
00022 virtual const Element<Real>& elm1() const { return elm1_; }
00023 virtual const Element<Real>& elm2() const { return elm2_; }
00025 int relation() const { return relation_; }
00026 private:
00027 const Element<Real>& elm1_, & elm2_;
00028 const int relation_;
00029 };
00030
00031
00032
00039 class SpaceTransition : public concepts::Operator<Real> {
00040 public:
00045 SpaceTransition(const Space& spaceX, const Space& spaceY);
00046 virtual void operator()(const concepts::Function<Real>& fncY,
00047 concepts::Function<Real>& fncX);
00048 void operator()(const concepts::Vector<Real>& fncY,
00049 concepts::Vector<Real>& fncX);
00050 virtual const Space& spaceX() const { return spcX_; }
00051 virtual const Space& spaceY() const { return spcY_; }
00052 protected:
00053 virtual std::ostream& info(std::ostream& os) const;
00054 private:
00056 const Space& spcX_, & spcY_;
00058 concepts::ElementPairList<Real> elmPairs_;
00067 bool findChildPath_(const int level, const concepts::Hexahedron3d& large,
00068 const concepts::Hexahedron3d& small,
00069 concepts::Array<uint>& children);
00070 };
00071
00072 }
00073
00074 #endif // spaceTransition_hh