divdiv.hh

Go to the documentation of this file.
1 
6 #ifndef divdiv3D_hh
7 #define divdiv3D_hh
8 
9 #include "basics/typedefs.hh"
11 #include "basics/cloneable.hh"
12 #include "toolbox/array.hh"
13 #include "formula/formula.hh"
14 #include "operator/bilinearForm.hh"
15 #include "hp3D/singularSet.hh"
16 #include "hp3D/shortestDist.hh"
18 #include "maxwell.hh"
19 
20 namespace vectorial {
21  template<typename F, typename G>
22  class BilinearForm;
23 } // namespace vectorial
24 
25 namespace hp3D {
26  // forward declarations
27  class Hexahedron;
28 
29  using concepts::Real;
30 
31  // **************************************************************** DivDiv **
32 
45  template<class Weight = TrivialWeight>
46  class DivDiv : public concepts::BilinearForm<Real>,
48  public:
55  DivDiv(SingularSet& singularities, const uint i = 0, const uint j = 0,
56  const concepts::Formula<Real>* frm = 0);
72  const Hexahedron** oldElm, SingularSet& singularities,
73  const uint i = 0, const uint j = 0,
74  const concepts::Formula<Real>* frm = 0);
75  virtual ~DivDiv();
76  virtual DivDiv* clone() const;
77 
78  virtual void operator()(const concepts::Element<Real>& elmX,
79  const concepts::Element<Real>& elmY,
81  void operator()(const Hexahedron& elmX, const Hexahedron& elmY,
83 
84  virtual void data(concepts::Cloneable* d);
85  virtual MaxwellSharedData* data() const;
86 
96  hp3D::SingularSet& singularities,
97  const concepts::Formula<Real>* frm = 0);
98  protected:
99  virtual std::ostream& info(std::ostream& os) const;
100  private:
102  uint i_, j_;
103 
107  Weight weight_;
108 
110  std::unique_ptr<const concepts::Formula<Real> > frm_;
111 
114 
122  };
123 
124 } // namespace hp3D
125 
126 #endif // divdiv3D_hh
uint i_
row and column inside the vectorial Bilinearform
Definition: divdiv.hh:102
A 3D FEM element: a hexahedron.
Definition: hexahedron.hh:37
DivDiv(SingularSet &singularities, const uint i=0, const uint j=0, const concepts::Formula< Real > *frm=0)
Constructor.
Vector valued problems.
Definition: spaceTraits.hh:24
virtual void data(concepts::Cloneable *d)
Sets the data to be shared.
virtual DivDiv * clone() const
Virtual constructor.
void operator()(const Hexahedron &elmX, const Hexahedron &elmY, concepts::ElementMatrix< Real > &em) const
Vector valued bilinear form.
Definition: bf_advection.hh:38
A function class to calculate element matrices for the Div u*Div v Bilinearform.
Definition: divdiv.hh:47
concepts::Array< concepts::MapReal3d > * jacobianInv_
Definition: divdiv.hh:118
Abstract function class to evaluate a bilinear form.
Definition: bilinearForm.hh:33
virtual MaxwellSharedData * data() const
Returns the data to be shared.
std::unique_ptr< const concepts::Formula< Real > > frm_
Formula for dielectricity .
Definition: divdiv.hh:110
virtual void operator()(const concepts::Element< Real > &elmX, const concepts::Element< Real > &elmY, concepts::ElementMatrix< Real > &em) const
Shared data for RotRot and DivDiv.
Definition: maxwell.hh:37
Cloneable interface.
Definition: cloneable.hh:16
Interface to make bilinear forms vectorizable.
Definition: vectorizable.hh:39
DivDiv(concepts::Array< Real > &jacobian, concepts::Array< concepts::MapReal3d > &jacobianInv, const Hexahedron **oldElm, SingularSet &singularities, const uint i=0, const uint j=0, const concepts::Formula< Real > *frm=0)
Constructor.
static void setup(vectorial::BilinearForm< Real, Real > &bf, hp3D::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< Real > * jacobian_
Data shared between components of the div-div bilinear forms,.
Definition: divdiv.hh:117
MaxwellSharedData * sharedData_
Definition: divdiv.hh:120
Class for handling a set of singular edges and vertices.
Definition: singularSet.hh:136
Weight weight_
weight of regularization
Definition: divdiv.hh:107
const Hexahedron ** oldElm_
Definition: divdiv.hh:119
SingularSet & singularities_
two lists, one with edges, one with vertices (which are marked as singular)
Definition: divdiv.hh:105
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual ~DivDiv()
concepts::Array< concepts::MapReal3d > coeffMatrix_
Intermediate data for element matrix computation.
Definition: divdiv.hh:113
3D hp-FEM for H1-conforming elements.
Definition: meshDX.hh:23
double Real
Type normally used for a floating point number.
Definition: typedefs.hh:36
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich