Go to the documentation of this file.00001
00002
00003
00004 #ifndef rotrot3D_hh
00005 #define rotrot3D_hh
00006
00007 #include "basics/typedefs.hh"
00008 #include "basics/vectorsMatrices.hh"
00009 #include "basics/cloneable.hh"
00010 #include "toolbox/array.hh"
00011 #include "operator/bilinearForm.hh"
00012 #include "vectorial/vectorizable.hh"
00013 #include "maxwell.hh"
00014
00015 namespace vectorial {
00016 template<typename F, typename G>
00017 class BilinearForm;
00018 }
00019
00020 namespace hp3D {
00021
00022 class Hexahedron;
00023
00024 using concepts::Real;
00025
00026
00027
00038 class RotRot : public concepts::BilinearForm<Real>,
00039 public vectorial::Vectorizable {
00040 public:
00042 RotRot(const uint i = 0, const uint j = 0) :
00043 i_(i), j_(j), coeffMatrix_(0), jacobian_(0),
00044 jacobianInv_(0), oldElm_(0), sharedData_(0) {}
00046 RotRot(concepts::Array<Real>& jacobian,
00047 concepts::Array<concepts::MapReal3d>& jacobianInv,
00048 const Hexahedron** oldElm, const uint i = 0, const uint j = 0) :
00049 i_(i), j_(j), coeffMatrix_(0), jacobian_(&jacobian),
00050 jacobianInv_(&jacobianInv), oldElm_(oldElm), sharedData_(0) {}
00051
00052 virtual ~RotRot();
00053 virtual RotRot* clone() const;
00054
00055 virtual void operator()(const concepts::Element<Real>& elmX,
00056 const concepts::Element<Real>& elmY,
00057 concepts::ElementMatrix<Real>& em);
00058 void operator()(const Hexahedron& elmX, const Hexahedron& elmY,
00059 concepts::ElementMatrix<Real>& em);
00060
00061 virtual void data(concepts::Cloneable* d);
00062 virtual MaxwellSharedData* data() const;
00063
00069 static void setup(vectorial::BilinearForm<Real,Real>& bf);
00070 protected:
00071 virtual std::ostream& info(std::ostream& os) const;
00072 private:
00074 uint i_, j_;
00075
00077 concepts::Array<concepts::MapReal3d> coeffMatrix_;
00078
00080
00081 concepts::Array<Real>* jacobian_;
00082 concepts::Array<concepts::MapReal3d>* jacobianInv_;
00083 const Hexahedron** oldElm_;
00084 MaxwellSharedData* sharedData_;
00086 };
00087
00088 }
00089
00090 #endif // rotrot3D_hh