Go to the documentation of this file.00001
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
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
00033 template<class F, class G>
00034 class BilinearForm;
00035 }
00036
00037 namespace hp2D {
00038
00039 template<class F>
00040 class Quad;
00041
00042 class InfiniteLaguerreQuad;
00043
00044 using concepts::Real;
00045
00046
00047
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
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 }
00100
00101 #endif // hp2dbf_identity_hh