00001 #pragma once 00002 00003 #include "formula/elementFormulaRCP.hh" 00004 #include "gfemQuadFast.h" 00005 #include "riesz.h" 00006 00007 namespace concepts { 00008 namespace gfem { 00009 00010 class GfemRiesz : public Riesz<Cmplx> 00011 { 00012 public: 00013 00018 GfemRiesz(const RCP<const ElementFormula<Cmplx> >& formula) 00019 : Riesz<Cmplx>(*formula) 00020 , formula(formula) 00021 { } 00022 00023 GfemRiesz(const GfemRiesz& other) 00024 : Riesz<Cmplx>(*other.formula) 00025 , formula(other.formula) 00026 { } 00027 00028 00029 virtual GfemRiesz* clone() const { 00030 return new GfemRiesz(*this); 00031 } 00032 00033 virtual void operator()( 00034 const concepts::Element<Real>& elm, 00035 concepts::ElementMatrix<Cmplx>& em); 00036 00037 void operator()( 00038 const GfemQuad& elm, 00039 concepts::ElementMatrix<Cmplx>& em); 00040 00041 void operator()( 00042 const GfemQuadFast& elm, 00043 concepts::ElementMatrix<Cmplx>& em); 00044 00045 virtual ~GfemRiesz() {} 00046 00047 protected: 00048 virtual std::ostream& info(std::ostream& os) const; 00049 00050 private: 00051 RCP< const ElementFormula<Cmplx> > formula; 00052 }; 00053 00054 } // namespace 00055 } // namespace