linearForm.hh

Go to the documentation of this file.
1 
6 #ifndef hp2dEdgeLinearform_hh
7 #define hp2dEdgeLinearform_hh
8 
9 #include <memory>
10 #include "basics/typedefs.hh"
11 #include "formula/boundary.hh"
13 #include "function/linearForm.hh"
14 #include "hp2D/formula.hh"
15 #include "hp2Dedge/quad.hh"
16 
17 namespace concepts {
18  // forward declarations
19  template<class F>
20  class Formula;
21 
22  class BoundaryConditions;
23 
24  template<class F>
25  class Element;
26 
27  template<class F>
28  class ElementMatrix;
29 
30  template<class F>
31  class Array;
32 }
33 
34 namespace hp2Dedge {
35  // forward declarations
36  template<class F>
37  class Quad;
38 
39  using concepts::Real;
40 
41  // *************************************************************** Neumann **
42 
55  class Neumann : public concepts::Neumann<Real> {
56  public:
69  virtual void operator()(const concepts::Element<Real>& elm,
71 
72  virtual void operator()(const Quad<Real>& elm,
74  private:
77  virtual void part(const Edge<Real>& edge, const concepts::Boundary bd,
79  };
80 
81  // ***************************************************************** Riesz **
82 
94  class Riesz : public concepts::LinearForm<Real> {
95  public:
104  const concepts::BoundaryConditions* bc = 0);
106  const concepts::BoundaryConditions* bc = 0);
107  virtual ~Riesz();
108 
119  protected:
120  virtual std::ostream& info(std::ostream& os) const;
121  private:
128  };
129 
130  // ************************************************************* EdgeRiesz **
131 
147  class EdgeRiesz : public concepts::LinearForm<Real> {
148  public:
154  virtual ~EdgeRiesz();
155 
166  protected:
167  virtual std::ostream& info(std::ostream& os) const;
168  private:
171  };
172 
173 } // namespace hp2Dedge
174 
175 #endif // hp2dEdgeLinearform_hh
void operator()(const Edge< Real > &elm, concepts::ElementMatrix< Real > &em) const
void operator()(const Quad< Real > &elm, concepts::ElementMatrix< Real > &em) const
An edge of a 2D FEM edge element quad.
Definition: bf_graduv.hh:47
Riesz(const concepts::ElementFormulaContainer< Real > frm1, const concepts::ElementFormulaContainer< Real > frm2, const concepts::BoundaryConditions *bc=0)
Constructor.
GenericElement< KarniadakisMixin< F > > Element
template aliases for backwards compatibility
Definition: element.hh:270
virtual void operator()(const concepts::Element< Real > &elm, concepts::ElementMatrix< Real > &em) const
Computes the element load vector.
const concepts::Boundary bd_
Boundary condition on this edge.
Definition: linearForm.hh:170
void operator()(const concepts::Element< Real > &elm, concepts::ElementMatrix< Real > &em) const
Computes the element load vector.
Riesz(const concepts::ElementFormulaContainer< concepts::Real2d > frm, const concepts::BoundaryConditions *bc=0)
Abstract class for a linear form.
concepts::ElementFormulaContainer< concepts::Real2d > frm_
Formula.
Definition: linearForm.hh:123
virtual ~Riesz()
Linear form in 2D.
Definition: linearForm.hh:147
Abstract class for the Neumann boundary term.
Definition: linearForm.hh:89
Class to describe an element of the boundary.
Definition: boundary.hh:35
void operator()(const concepts::Element< Real > &elm, concepts::ElementMatrix< Real > &em) const
Computes the element load vector.
virtual void operator()(const Quad< Real > &elm, concepts::ElementMatrix< Real > &em) const
Neumann neumann_
Reference to the linear form of the Neumann condition.
Definition: linearForm.hh:127
Linear form in 2D for the term of Neumann boundary.
Definition: linearForm.hh:55
concepts::Array< Real > tmp_
Intermediate data for element matrix computation.
Definition: linearForm.hh:125
Linear form in 2D.
Definition: linearForm.hh:94
virtual std::ostream & info(std::ostream &os) const
virtual std::ostream & info(std::ostream &os) const
virtual void part(const Edge< Real > &edge, const concepts::Boundary bd, concepts::ElementMatrix< Real > &em) const
Computes the distribution to an edge.
double Real
Type normally used for a floating point number.
Definition: typedefs.hh:36
Basic namespace for Concepts-2.
Definition: pml_formula.h:16
Neumann(const concepts::BoundaryConditions *bc)
Constructor.
EdgeRiesz(const concepts::Boundary &bd)
Constructor.
hp 2D edge elements for electromagnetics.
Definition: bf_advection.hh:37
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich