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

hp2D/bf_identity.hh
Go to the documentation of this file.
00001 /* @bf_identity.hh Bilinear forms for Identity operator for hp 2D FEM
00002  */
00003 
00004 #ifndef hp2dbf_identity_hh
00005 #define hp2dbf_identity_hh
00006 
00007 #include "basics/typedefs.hh"
00008 #include "operator/bilinearForm.hh"
00009 #include "geometry/sharedJacobian.hh"
00010 #include "hp2D/bilinearFormHelper.hh"
00011 
00012 
00013 namespace concepts {
00014   // forward declarations
00015   template<class F>
00016   class Array;
00017 
00018   template<class F, int dim>
00019   class Point;
00020 
00021   template<class F>
00022   class Element;
00023 
00024   template<class F>
00025   class ElementMatrix;
00026 
00027   template<typename F, typename G>
00028   class ElementFormula;
00029 }
00030 
00031 namespace vectorial {
00032   // forward declarations
00033   template<class F, class G>
00034   class BilinearForm;
00035 }
00036 
00037 namespace hp2D {
00038   // forward declarations
00039   template<class F>
00040   class Quad;
00041 
00042   class InfiniteLaguerreQuad;
00043 
00044   using concepts::Real;
00045 
00046 
00047   // ************************************************************** Identity **
00048 
00054   template<class F = Real>
00055   class Identity : public concepts::BilinearForm<F,Real>,
00056                    public BilinearFormHelper_0_0<F> {
00057   public:
00059     Identity(const concepts::ElementFormulaContainer<F> 
00060              frm = concepts::ElementFormulaContainer<F>(), 
00061              bool all = false);
00062     virtual ~Identity();
00063     virtual Identity<F>* clone() const;
00064 
00065     void operator()(const concepts::Element<Real>& elmX,
00066                     const concepts::Element<Real>& elmY, 
00067                     concepts::ElementMatrix<F>& em); 
00068   protected:
00069     virtual std::ostream& info(std::ostream& os) const;
00070   private:
00072     concepts::ElementMatrix<Real> mass1D_;
00074     bool all_;
00075 
00077     bool operator()(const Quad<Real>* elmX,
00078                     const Quad<Real>* elmY, 
00079                     concepts::ElementMatrix<F>& em);
00081     bool operator()(const InfiniteLaguerreQuad* elmX,
00082                     const InfiniteLaguerreQuad* elmY, 
00083                     concepts::ElementMatrix<F>& em);
00084   };
00085 
00086 
00087   // ********************************************************** setupIdentity **
00088 
00093   template<class F>
00094   void setupIdentity
00095   (vectorial::BilinearForm<F,typename concepts::Realtype<F>::type>& bf,
00096    const concepts::ElementFormulaContainer<F> 
00097    frm = concepts::ElementFormulaContainer<F>());
00098 
00099 } // namespace hp2D
00100 
00101 #endif // hp2dbf_identity_hh

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