Class documentation of Concepts

Loading...
Searching...
No Matches
bf_graduv.hh
Go to the documentation of this file.
1
7#ifndef HP2DEDGE_BF_GRADUV_HH_
8#define HP2DEDGE_BF_GRADUV_HH_
9
10#include <memory>
12#include "basics/typedefs.hh"
16#include "formula/boundary.hh"
18#include "hp2D/quad.hh"
19#include "hp2D/formula.hh"
23
24namespace concepts
25{
26// forward declarations
27 template<class F>
28 class Element;
29
30 template<class F>
31 class ElementMatrix;
32
33 template<class F>
34 class Array;
35
36 template<class F>
37 class RCP;
38}
39
40namespace hp2Dedge
41{
42 // forward declarations
43 template<class F>
44 class Quad;
45
46 template<class F>
47 class Edge;
48
49 using concepts::Real;
50 using concepts::Cmplx;
51
52// ************************************************************** GraduvBase **
53
62 template<class F = Real, class G = typename concepts::Realtype<F>::type>
64 {
65 public:
66 typedef typename concepts::Combtype<F, G>::type value_type;
67
72 bool all = false);
73
76 bool all = false);
77 protected:
79 bool all_;
80
81 bool
82 assemble_(const hp2D::Quad<Real>* elmX, const Quad<Real>* elmY,
84
85 private:
87 mutable concepts::Array<F> factor_;
88 mutable concepts::Array<concepts::Mapping<F, 2> > jacobianInv_;
89 };
90
91// *************************************************************** Graduv **
92
99 template<class F = Real>
101 public hp2Dedge::GraduvBase<F>
102 {
103 public:
106 virtual ~Graduv()
107 {
108 }
109 void
110 operator()(const concepts::Element<Real>& elmX,
111 const concepts::Element<Real>& elmY,
113 void
114 operator()(const hp2D::Quad<Real>& elmX, const Quad<Real>& elmY,
116 virtual Graduv<F>*
117 clone() const
118 {
119 return new Graduv(this->frm_);
120 }
121 protected:
122 virtual std::ostream&
123 info(std::ostream& os) const;
124 };
125
126// *************************************************************** GraduvMatrix **
127
133 template<class F = Real>
135 public hp2Dedge::GraduvBase<Real, F>
136 {
137 public:
138
140
141 GraduvMatrix(const FrmE_Matrix frm = FrmE_Matrix());
142 virtual ~GraduvMatrix()
143 {
144 }
145 void
146 operator()(const concepts::Element<Real>& elmX,
147 const concepts::Element<Real>& elmY,
149 void
150 operator()(const hp2D::Quad<Real>& elmX, const Quad<Real>& elmY,
152 virtual GraduvMatrix<F>*
153 clone() const
154 {
155 return new GraduvMatrix(this->frmM_);
156 }
157 protected:
158 virtual std::ostream&
159 info(std::ostream& os) const;
160 };
161
162} // namespace hp2Dedge
163
164#endif /* HP2DEDGE_BF_GRADUV_HH_ */
concepts::ElementFormulaContainer< concepts::Mapping< G, 2 > > frmM_
Matrix element formula.
concepts::ElementFormulaContainer< F > frm_
Element formula.
bool all_
Parameter for the sum factorisation.
Definition bf_graduv.hh:79
GraduvBase(const concepts::ElementFormulaContainer< F > frm, bool all=false)
virtual GraduvMatrix< F > * clone() const
Definition bf_graduv.hh:153
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual Graduv< F > * clone() const
Definition bf_graduv.hh:117
double Real
Definition typedefs.hh:39
std::complex< Real > Cmplx
Type for a complex number. It also depends on the setting of Real.
Definition typedefs.hh:42
GenericElement< KarniadakisMixin< F > > Element
template aliases for backwards compatibility
Definition element.hh:267