Go to the documentation of this file.00001
00002
00003
00004 #ifndef rotrot2D_hh
00005 #define rotrot2D_hh
00006
00007 #include "basics/typedefs.hh"
00008 #include "basics/vectorsMatrices.hh"
00009 #include "toolbox/array.hh"
00010 #include "operator/bilinearForm.hh"
00011 #include "toolbox/resourceMonitor.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 hp2D {
00021
00022 template<class F>
00023 class Quad;
00024
00025 using concepts::Real;
00026
00027
00028
00039 class RotRot : public concepts::BilinearForm<Real>,
00040 public vectorial::Vectorizable {
00041 public:
00043 RotRot(const uint i = 0, const uint j = 0) :
00044 i_(i), j_(j), coeffMatrix_(0), jacobian_(0),
00045 jacobianInv_(0), oldElm_(0), sharedData_(0) {}
00047 RotRot(concepts::Array<Real>& jacobian,
00048 concepts::Array<concepts::MapReal2d>& jacobianInv,
00049 const Quad<Real>** oldElm, const uint i = 0, const uint j = 0) :
00050 i_(i), j_(j), coeffMatrix_(0), jacobian_(&jacobian),
00051 jacobianInv_(&jacobianInv), oldElm_(oldElm), sharedData_(0) {}
00052
00053 virtual ~RotRot();
00054 virtual RotRot* clone() const;
00055
00056 virtual void operator()(const concepts::Element<Real>& elmX,
00057 const concepts::Element<Real>& elmY,
00058 concepts::ElementMatrix<Real>& em);
00059 void operator()(const Quad<Real>& elmX, const Quad<Real>& elmY,
00060 concepts::ElementMatrix<Real>& em);
00061
00062 virtual void data(concepts::Cloneable* d);
00063 virtual MaxwellSharedData* data() const;
00064
00070 static void setup(vectorial::BilinearForm<Real,Real>& bf);
00071 protected:
00072 virtual std::ostream& info(std::ostream& os) const;
00073 private:
00075 uint i_, j_;
00076
00078 concepts::Array<concepts::MapReal2d> coeffMatrix_;
00079
00081
00082 concepts::Array<Real>* jacobian_;
00083 concepts::Array<concepts::MapReal2d>* jacobianInv_;
00084 const Quad<Real>** oldElm_;
00085 MaxwellSharedData* sharedData_;
00087 };
00088
00089 }
00090
00091 #endif // rotrot2D_hh