rotrot.hh

Go to the documentation of this file.
1 
6 #ifndef rotrot2D_hh
7 #define rotrot2D_hh
8 
9 #include "basics/typedefs.hh"
11 #include "toolbox/array.hh"
12 #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 hp2D {
23  // forward declarations
24  template<class F>
25  class Quad;
26 
27  using concepts::Real;
28 
29  // **************************************************************** RotRot **
30 
41  class RotRot : public concepts::BilinearForm<Real>,
43  public:
45  RotRot(const uint i = 0, const uint j = 0) :
46  i_(i), j_(j), coeffMatrix_(0), jacobian_(0),
47  jacobianInv_(0), oldElm_(0), sharedData_(0) {}
51  const Quad<Real>** oldElm, const uint i = 0, const uint j = 0) :
52  i_(i), j_(j), coeffMatrix_(0), jacobian_(&jacobian),
53  jacobianInv_(&jacobianInv), oldElm_(oldElm), sharedData_(0) {}
54 
55  virtual ~RotRot();
56  virtual RotRot* clone() const;
57 
58  virtual void operator()(const concepts::Element<Real>& elmX,
59  const concepts::Element<Real>& elmY,
61  void operator()(const Quad<Real>& elmX, const Quad<Real>& elmY,
63 
64  virtual void data(concepts::Cloneable* d);
65  virtual MaxwellSharedData* data() const;
66 
73  protected:
74  virtual std::ostream& info(std::ostream& os) const;
75  private:
77  uint i_, j_;
78 
81 
89  };
90 
91 } // namespace hp2D
92 
93 #endif // rotrot2D_hh
RotRot(concepts::Array< Real > &jacobian, concepts::Array< concepts::MapReal2d > &jacobianInv, const Quad< Real > **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:49
concepts::Array< concepts::MapReal2d > * jacobianInv_
Definition: rotrot.hh:85
virtual RotRot * clone() const
Virtual constructor.
const Quad< Real > ** oldElm_
Definition: rotrot.hh:86
MaxwellSharedData * sharedData_
Definition: rotrot.hh:87
Vector valued problems.
Definition: spaceTraits.hh:24
virtual void operator()(const concepts::Element< Real > &elmX, const concepts::Element< Real > &elmY, concepts::ElementMatrix< Real > &em) const
Vector valued bilinear form.
Definition: bf_advection.hh:38
A function class to calculate element matrices for the Rot u*Rot v Bilinearform.
Definition: rotrot.hh:42
void operator()(const Quad< Real > &elmX, const Quad< Real > &elmY, concepts::ElementMatrix< Real > &em) const
2D hp-FEM for H1-conforming elements.
Abstract function class to evaluate a bilinear form.
Definition: bilinearForm.hh:33
virtual MaxwellSharedData * data() const
Returns the data to be shared.
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:45
virtual void data(concepts::Cloneable *d)
Sets the data to be shared.
concepts::Array< Real > * jacobian_
Data shared between components of the rot-rot bilinear forms,.
Definition: rotrot.hh:84
uint j_
Definition: rotrot.hh:77
Cloneable interface.
Definition: cloneable.hh:16
Interface to make bilinear forms vectorizable.
Definition: vectorizable.hh:39
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual ~RotRot()
concepts::Array< concepts::MapReal2d > coeffMatrix_
Intermediate data for element matrix computation.
Definition: rotrot.hh:80
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.
Shared data for RotRot and DivDiv.
Definition: maxwell.hh:38
double Real
Type normally used for a floating point number.
Definition: typedefs.hh:36
uint i_
row and column inside the vectorial Bilinearform
Definition: rotrot.hh:77
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich