divdiv.hh

Go to the documentation of this file.
1 
6 #ifndef divdiv2D_hh
7 #define divdiv2D_hh
8 
9 #include "basics/typedefs.hh"
11 #include "toolbox/array.hh"
13 #include "operator/bilinearForm.hh"
14 #include "hp2D/singularSet.hh"
15 #include "hp2D/shortestDist.hh"
17 #include "maxwell.hh"
18 
19 namespace vectorial {
20 
21  // forward declaration
22  template<typename F, typename G>
23  class BilinearForm;
24 
25 } // namespace vectorial
26 
27 namespace concepts {
28 
29  // forward declaration
30  template<typename F>
31  class Formula;
32 }
33 
34 namespace hp2D {
35  // forward declarations
36  template<class F>
37  class Quad;
38 
39  using concepts::Real;
40 
41  // **************************************************************** DivDiv **
42 
58  template<typename Weight = TrivialWeight>
59  class DivDiv : public concepts::BilinearForm<Real>,
61  public:
68  DivDiv(SingularSet& singularities, const uint i = 0, const uint j = 0,
69  const concepts::Formula<Real>* frm = 0);
85  const Quad<Real>** oldElm, SingularSet& singularities,
86  const uint i = 0, const uint j = 0,
87  const concepts::Formula<Real>* frm = 0);
88  virtual ~DivDiv();
89  virtual DivDiv* clone() const;
90 
91  virtual void operator()(const concepts::Element<Real>& elmX,
92  const concepts::Element<Real>& elmY,
94  void operator()(const Quad<Real>& elmX, const Quad<Real>& elmY,
96 
97  virtual void data(concepts::Cloneable* d);
98  virtual MaxwellSharedData* data() const;
99 
109  hp2D::SingularSet& singularities,
110  const concepts::Formula<Real>* frm = 0);
111  protected:
112  virtual std::ostream& info(std::ostream& os) const;
113  private:
115  uint i_, j_;
116 
120  Weight weight_;
121 
123  std::unique_ptr<const concepts::Formula<Real> > frm_;
124 
127 
135  };
136 
137 } // namespace hp2D
138 
139 #endif // divdiv2D_hh
SingularSet & singularities_
Set of singular points.
Definition: divdiv.hh:118
DivDiv(SingularSet &singularities, const uint i=0, const uint j=0, const concepts::Formula< Real > *frm=0)
Constructor.
std::unique_ptr< const concepts::Formula< Real > > frm_
Formula for dielectricity .
Definition: divdiv.hh:123
virtual DivDiv * clone() const
Virtual constructor.
Vector valued problems.
Definition: spaceTraits.hh:24
void operator()(const Quad< Real > &elmX, const Quad< Real > &elmY, concepts::ElementMatrix< Real > &em) const
Vector valued bilinear form.
Definition: bf_advection.hh:38
MaxwellSharedData * sharedData_
Definition: divdiv.hh:133
uint i_
Row and column inside the vectorial bilinear form.
Definition: divdiv.hh:115
2D hp-FEM for H1-conforming elements.
Abstract function class to evaluate a bilinear form.
Definition: bilinearForm.hh:33
Class for handling a set of singular vertices.
Definition: singularSet.hh:63
concepts::Array< Real > * jacobian_
Intermediate data for element matrix computation.
Definition: divdiv.hh:130
Cloneable interface.
Definition: cloneable.hh:16
Interface to make bilinear forms vectorizable.
Definition: vectorizable.hh:39
static void setup(vectorial::BilinearForm< Real, Real > &bf, hp2D::SingularSet &singularities, const concepts::Formula< Real > *frm=0)
Sets up the bilinear form for the div-div part for Maxwell's equation using weighted regularization.
concepts::Array< concepts::MapReal2d > * jacobianInv_
Definition: divdiv.hh:131
const Quad< Real > ** oldElm_
Definition: divdiv.hh:132
DivDiv(concepts::Array< Real > &jacobian, concepts::Array< concepts::MapReal2d > &jacobianInv, const Quad< Real > **oldElm, SingularSet &singularities, const uint i=0, const uint j=0, const concepts::Formula< Real > *frm=0)
Constructor.
Weight weight_
Weight of regularization.
Definition: divdiv.hh:120
virtual void data(concepts::Cloneable *d)
Sets the data to be shared.
virtual void operator()(const concepts::Element< Real > &elmX, const concepts::Element< Real > &elmY, concepts::ElementMatrix< Real > &em) const
virtual MaxwellSharedData * data() const
Returns the data to be shared.
A function class to calculate element matrices for the Div u*Div v Bilinearform.
Definition: divdiv.hh:60
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual ~DivDiv()
Shared data for RotRot and DivDiv.
Definition: maxwell.hh:38
double Real
Type normally used for a floating point number.
Definition: typedefs.hh:36
Basic namespace for Concepts-2.
Definition: pml_formula.h:16
concepts::Array< concepts::MapReal2d > coeffMatrix_
Intermediate data for element matrix computation.
Definition: divdiv.hh:126
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich