Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

hp3D/zerotangential.hh
Go to the documentation of this file.
00001 /* zero tangential component, ie. u x n = 0
00002  */
00003 
00004 #ifndef zerotangential3D_hh
00005 #define zerotangential3D_hh
00006 
00007 #include "constraints/analytical.hh"
00008 #include "geometry/connector.hh"
00009 #include "hp3D/hexahedron.hh"
00010 #include "toolbox/dynArray.hh"
00011 
00012 namespace hp3D {
00013 
00014   // *************************************************** ZeroTangentialValue **
00015 
00021   template<typename F>
00022   class ZeroTangentialValue : public constraints::AnalyticalConstraint<F> {
00023   public:
00027     ZeroTangentialValue(concepts::Attribute a) :
00028       attr_(a), scalElm_(0),
00029       ctrl0_(2, 10, (uint)-1), ctrl1_(2, 10, (uint)-1) {}
00030     ZeroTangentialValue(const ZeroTangentialValue& z) :
00031       attr_(z.attr_), scalElm_(z.scalElm_),
00032       ctrl0_(2, 10, (uint)-1), ctrl1_(2, 10, (uint)-1) {}
00033     virtual void lengthT(const concepts::Element<F>& e, uint& length);
00034     virtual void assembly(const concepts::Element<F>& e,
00035         concepts::TColumn<F>*& t, uint& n, uint& j,
00036         uint length);
00037     virtual constraints::AnalyticalConstraint<F>* clone() const;
00038     virtual void localMatrix(concepts::ElementMatrix<F>& em, uint& j,
00039            const constraints::Element<F>& elm) const;
00040     virtual void localVector(concepts::ElementMatrix<F>& em, uint& j,
00041            const constraints::Element<F>& elm) const;
00042   protected:
00043     virtual std::ostream& info(std::ostream& os) const;
00044   private:
00046     concepts::Attribute attr_;
00047     mutable const Hexahedron* scalElm_;
00048     const concepts::Connector3&
00049     assertions_(const concepts::Element<F>& e) const;
00051     concepts::DynArray<uint> ctrl0_;
00053     concepts::DynArray<uint> ctrl1_;
00054     void fillEM_(const uint ll[3], const ushort p[3], const uint offset,
00055      uint& j, const concepts::Real3d e,
00056      concepts::ElementMatrix<F>& em) const;
00057   };
00058 
00059 } // namespace hp3D
00060 
00061 #endif // zerotangential3D_hh

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)