rotrot.hh

Go to the documentation of this file.
1 
6 #ifndef rotrot3D_hh
7 #define rotrot3D_hh
8 
9 #include "basics/typedefs.hh"
11 #include "basics/cloneable.hh"
12 #include "toolbox/array.hh"
13 #include "operator/bilinearForm.hh"
15 #include "maxwell.hh"
16 
17 namespace vectorial {
18  template<typename F, typename G>
19  class BilinearForm;
20 } // namespace vectorial
21 
22 namespace hp3D {
23  // forward declarations
24  class Hexahedron;
25 
26  using concepts::Real;
27 
28  // **************************************************************** RotRot **
29 
40  class RotRot : public concepts::BilinearForm<Real>,
42  public:
44  RotRot(const uint i = 0, const uint j = 0) :
45  i_(i), j_(j), coeffMatrix_(0), jacobian_(0),
46  jacobianInv_(0), oldElm_(0), sharedData_(0) {}
50  const Hexahedron** oldElm, const uint i = 0, const uint j = 0) :
51  i_(i), j_(j), coeffMatrix_(0), jacobian_(&jacobian),
52  jacobianInv_(&jacobianInv), oldElm_(oldElm), sharedData_(0) {}
53 
54  virtual ~RotRot();
55  virtual RotRot* clone() const;
56 
57  virtual void operator()(const concepts::Element<Real>& elmX,
58  const concepts::Element<Real>& elmY,
60  void operator()(const Hexahedron& elmX, const Hexahedron& elmY,
62 
63  virtual void data(concepts::Cloneable* d);
64  virtual MaxwellSharedData* data() const;
65 
72  protected:
73  virtual std::ostream& info(std::ostream& os) const;
74  private:
76  uint i_, j_;
77 
80 
88  };
89 
90 } // namespace hp3D
91 
92 #endif // rotrot3D_hh
uint j_
Definition: rotrot.hh:76
static void setup(vectorial::BilinearForm< Real, Real > &bf)
Sets up the bilinear form for the rot-rot part for Maxwell's equation using weighted regularization.
A 3D FEM element: a hexahedron.
Definition: hexahedron.hh:37
Vector valued problems.
Definition: spaceTraits.hh:24
virtual ~RotRot()
Vector valued bilinear form.
Definition: bf_advection.hh:38
concepts::Array< concepts::MapReal3d > coeffMatrix_
Intermediate data for element matrix computation.
Definition: rotrot.hh:79
virtual RotRot * clone() const
Virtual constructor.
void operator()(const Hexahedron &elmX, const Hexahedron &elmY, concepts::ElementMatrix< Real > &em) const
Abstract function class to evaluate a bilinear form.
Definition: bilinearForm.hh:33
RotRot(const uint i=0, const uint j=0)
Constructor of the i.th row and j.th column of vectorial Bilinearform.
Definition: rotrot.hh:44
concepts::Array< Real > * jacobian_
Data shared between components of the rot-rot bilinear forms,.
Definition: rotrot.hh:83
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
virtual void data(concepts::Cloneable *d)
Sets the data to be shared.
RotRot(concepts::Array< Real > &jacobian, concepts::Array< concepts::MapReal3d > &jacobianInv, const Hexahedron **oldElm, const uint i=0, const uint j=0)
Constructor of the i.th row and j.th column of vectorial Bilinearform.
Definition: rotrot.hh:48
const Hexahedron ** oldElm_
Definition: rotrot.hh:85
virtual void operator()(const concepts::Element< Real > &elmX, const concepts::Element< Real > &elmY, concepts::ElementMatrix< Real > &em) const
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
MaxwellSharedData * sharedData_
Definition: rotrot.hh:86
uint i_
row and column inside the vectorial Bilinearform
Definition: rotrot.hh:76
concepts::Array< concepts::MapReal3d > * jacobianInv_
Definition: rotrot.hh:84
virtual MaxwellSharedData * data() const
Returns the data to be shared.
3D hp-FEM for H1-conforming elements.
Definition: meshDX.hh:23
A function class to calculate element matrices for the Rot u*Rot v Bilinearform.
Definition: rotrot.hh:41
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