Go to the documentation of this file.00001
00002
00003
00004 #ifndef bilinearform1D_hh
00005 #define bilinearform1D_hh
00006
00007 #include "basics/typedefs.hh"
00008 #include "basics/vectorsMatricesForward.hh"
00009 #include "operator/bilinearForm.hh"
00010 #include "formula.hh"
00011
00012 namespace concepts {
00013
00014 template<class F>
00015 class Element;
00016
00017 template<class F>
00018 class ElementMatrix;
00019
00020 template<class F>
00021 class Array;
00022 }
00023
00024 namespace hp1D {
00025
00026 using concepts::Real;
00027
00028
00029
00034 template<class F = Real>
00035 class Laplace : public concepts::BilinearForm<F,Real>,
00036 public BilinearFormHelper<1,1,F> {
00037 public:
00041 Laplace(const concepts::ElementFormulaContainer<F>
00042 frm = concepts::ElementFormulaContainer<F>())
00043 : BilinearFormHelper<1,1,F>(frm)
00044 { }
00045 virtual ~Laplace();
00046
00047 void operator()(const concepts::Element<Real>& elmX,
00048 const concepts::Element<Real>& elmY,
00049 concepts::ElementMatrix<F>& em);
00050 virtual Laplace<F>* clone() const { return new Laplace<F>(this->frm_); }
00051 protected:
00052 virtual std::ostream& info(std::ostream& os) const;
00053 };
00054
00055
00056
00060 template<class F = Real>
00061 class Identity : public concepts::BilinearForm<F,Real>,
00062 public BilinearFormHelper<0,0,F> {
00063 public:
00065 Identity(const concepts::ElementFormulaContainer<F>
00066 frm = concepts::ElementFormulaContainer<F>());
00067 virtual ~Identity();
00068
00069 void operator()(const concepts::Element<Real>& elmX,
00070 const concepts::Element<Real>& elmY,
00071 concepts::ElementMatrix<F>& em);
00072 virtual Identity<F>* clone() const;
00073 protected:
00074 virtual std::ostream& info(std::ostream& os) const;
00075 private:
00076 };
00077
00078
00079
00090 template<class F = Real>
00091 class IdentityParallel : public concepts::BilinearForm<F,Real>,
00092 public BilinearFormHelper<0,0,F> {
00093 public:
00101 IdentityParallel(const concepts::ElementFormulaContainer<F>
00102 frm = concepts::ElementFormulaContainer<F>(),
00103 const concepts::Real3d
00104 shiftX = concepts::Real3d(),
00105 const concepts::Real3d
00106 shiftY = concepts::Real3d(),
00107 const bool negShift = false
00108 );
00109 virtual ~IdentityParallel();
00110
00111 void operator()(const concepts::Element<Real>& elmX,
00112 const concepts::Element<Real>& elmY,
00113 concepts::ElementMatrix<F>& em);
00114 virtual IdentityParallel<F>* clone() const;
00115 protected:
00116 virtual std::ostream& info(std::ostream& os) const;
00117 private:
00118 const concepts::Point<Real,3> shiftX_;
00119 const concepts::Point<Real,3> shiftY_;
00120 const bool negShift_;
00121 };
00122
00123 }
00124
00125 #endif // bilinearform1D_hh