Go to the documentation of this file.00001
00002
00003
00004 #pragma once
00005
00006 #include <memory>
00007 #include "basics/typedefs.hh"
00008 #include "function/linearForm.hh"
00009 #include "formula.hh"
00010
00011 namespace concepts {
00012
00013 template<class F>
00014 class Formula;
00015
00016 class BoundaryConditions;
00017 }
00018
00019 namespace hp1D {
00020
00021 using concepts::Real;
00022
00023
00024
00036 class Neumann : public concepts::Neumann<Real> {
00037 public:
00042 Neumann(const concepts::BoundaryConditions* bc);
00043 virtual ~Neumann();
00044
00052 void operator()(const concepts::Element<Real>& elm,
00053 concepts::ElementMatrix<Real>& em);
00054 };
00055
00056
00057
00064 template<class F = Real>
00065 class Riesz : public concepts::LinearForm<F>, public LinearFormHelper<0,F> {
00066 public:
00070 Riesz(const concepts::ElementFormulaContainer<F> frm,
00071 const concepts::BoundaryConditions* bc = 0);
00072 virtual ~Riesz();
00073
00080 void operator()(const concepts::Element<Real>& elm,
00081 concepts::ElementMatrix<F>& em);
00082 protected:
00083 virtual std::ostream& info(std::ostream& os) const;
00084 private:
00086 Neumann neumann_;
00087 };
00088
00089
00090
00091
00100 template<typename F = Real>
00101 class LinearFormGradInterp_Grad : public concepts::LinearForm<F>,
00102 public LinearFormHelper<1,F> {
00103 public:
00108 LinearFormGradInterp_Grad(const concepts::ElementFormulaContainer<F> frm);
00109 virtual ~LinearFormGradInterp_Grad();
00110
00118 void operator()(const concepts::Element<Real>& elm,
00119 concepts::ElementMatrix<F>& em);
00120 protected:
00121 virtual std::ostream& info(std::ostream& os) const;
00122 };
00123
00124
00125
00134 template<typename F = Real>
00135 class GradLinearForm : public concepts::LinearForm<F>,
00136 public LinearFormHelper<1,F> {
00137 public:
00142 GradLinearForm (const concepts::ElementFormulaContainer<F> frm);
00143 virtual ~GradLinearForm();
00144
00152 void operator()(const concepts::Element<Real>& elm,
00153 concepts::ElementMatrix<F>& em);
00154 protected:
00155 virtual std::ostream& info(std::ostream& os) const;
00156 };
00157
00158 }