8#ifndef productelementformula_hh
9#define productelementformula_hh
17#define ProdElemFormConstr_D 0
18#define ProdElemFormDestr_D 0
19#define ProdElemFormClone_D 0
37 typename J =
typename Datatype<F>::type,
38 typename G =
typename Realtype<F>::type>
52 DEBUGL(ProdElemFormConstr_D,
"frm1 = " <<
frm1);
57 : frm1_(frm.frm1_), frm2_(frm.frm2_), a_(frm.a_) {}
60 DEBUGL(ProdElemFormDestr_D,
"Delete " << *
this)
64 const Real p,
const Real t = 0.0)
const {
65 H v = frm1_(elm, p,t);
72 return v * frm2_(elm, p,t);
76 H v = frm1_(elm, p,t);
83 return v * frm2_(elm, p,t);
87 H v = frm1_(elm, p,t);
94 return v * frm2_(elm, p,t);
97 DEBUGL(ProdElemFormClone_D, *
this <<
" = *" <<
this);
101 virtual std::ostream&
info(std::ostream&
os)
const {
105 os <<
" * " << frm2_;
124 DEBUGL(ProdElemFormConstr_D,
125 "frm1 = " <<
frm1 <<
", frm2 = " <<
frm2 <<
", a = " << a);
134 ElementFormulaContainer<Real>
FrmE_Product(const FrmE_Product< F, H, J, G > &frm)
Copy constructor.
virtual F operator()(const ElementWithCell< G > &elm, const Real p, const Real t=0.0) const
virtual FrmE_Product< F, H, J, G > * clone() const
Virtual copy constructor.
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
#define conceptsAssert(cond, exc)
#define DEBUGL(doit, msg)
std::string typeOf(const T &t)
ElementFormulaContainer< Real > operator/(const ElementFormulaContainer< Real > frm1, const ElementFormulaContainer< Real > frm2)
Division of a element formulas by a scalar element formula via /-operator.
Set< F > makeSet(uint n, const F &first,...)
std::complex< Real > Cmplx
Type for a complex number. It also depends on the setting of Real.