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

app-pfrauenf/zeroTang.hh
Go to the documentation of this file.
00001 // zero tangential value boundary condition for the constraints framework
00002 
00003 #ifndef zeroTang_hh
00004 #define zeroTang_hh
00005 
00006 #include <iostream>
00007 #include "geometry/connector.hh"
00008 #include "toolbox/dynArray.hh"
00009 #include "constraints.hh"
00010 
00011 using concepts::Real;
00012 
00013 namespace linearFEM {
00014   class Element;
00015 }
00016 
00017 // ***************************************************** ZeroTangentialValue **
00018 
00023 template<typename F>
00024 class ZeroTangentialValue : public constraints::AnalyticalConstraint<F> {
00025 public:
00029   ZeroTangentialValue(concepts::Attribute a) : attr_(a), linElm_(0),
00030                  ctrl0_(2, 10, (uint)-1) {}
00031   ZeroTangentialValue(const ZeroTangentialValue& z) :
00032     attr_(z.attr_), linElm_(z.linElm_), ctrl0_(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 linearFEM::Element* linElm_;
00048   const concepts::Connector2& assertions_(const concepts::Element<F>& e) const;
00050   concepts::DynArray<uint> ctrl0_;
00051 };
00052 
00053 #endif // zeroTang_hh

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