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

hp3D/rotrot.hh
Go to the documentation of this file.
00001 /* discretization of rot * rot for Maxwell equations in frequency domain
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 } // namespace vectorial
00019 
00020 namespace hp3D {
00021   // forward declarations
00022   class Hexahedron;
00023 
00024   using concepts::Real;
00025 
00026   // **************************************************************** RotRot **
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 } // namespace hp3D
00089 
00090 #endif // rotrot3D_hh

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