Go to the documentation of this file.00001
00002
00003
00004 #ifndef hook3D_hh
00005 #define hook3D_hh
00006
00007 #include "basics/typedefs.hh"
00008 #include "basics/vectorsMatrices.hh"
00009 #include "toolbox/array.hh"
00010 #include "operator/bilinearForm.hh"
00011
00012 namespace hp3D {
00013
00014 class Hexahedron;
00015
00016 using concepts::Real;
00017
00018
00019
00025 class Hook : public concepts::BilinearForm<Real> {
00026 public:
00028 Hook(concepts::Array<Real>& jacobian,
00029 concepts::Array<concepts::Array<concepts::MapReal3d> >& jacobianInv,
00030 const Hexahedron** oldElm, concepts::Mapping<Real, 6>& E,
00031 const uint i = 0, const uint j = 0) :
00032 i_(i), j_(j), jacobian_(jacobian), jacobianInv_(jacobianInv),
00033 coeffMatrix_(0), E_(E) , oldElm_(oldElm) {}
00034 virtual ~Hook();
00035
00036 virtual void operator()(const concepts::Element<Real>& elmX,
00037 const concepts::Element<Real>& elmY,
00038 concepts::ElementMatrix<Real>& em);
00039 void operator()(const Hexahedron& elmX, const Hexahedron& elmY,
00040 concepts::ElementMatrix<Real>& em);
00041 protected:
00042 virtual std::ostream& info(std::ostream& os) const;
00043 private:
00045 uint i_, j_;
00046
00049 concepts::Array<Real> &jacobian_;
00051
00052 concepts::Array<concepts::Array<concepts::MapReal3d> > &jacobianInv_;
00053 concepts::Array<concepts::MapReal3d> coeffMatrix_;
00054 concepts::Mapping<Real, 6> &E_;
00055
00056 const Hexahedron** oldElm_;
00057 };
00058
00059 }
00060
00061 #endif // hook3D_hh