Go to the documentation of this file.00001
00007 #ifndef Maxwell2D_E_hField_hh
00008 #define Maxwell2D_E_hField_hh
00009
00010 #include "geometry/formula.hh"
00011 #include "hp2Dedge/function.hh"
00012 #include "hp2Dedge/bilinearForm.hh"
00013 #include "basics.hh"
00014 #include "toolbox.hh"
00015
00016 namespace hp2D {
00017
00018 using concepts::Real;
00019 using concepts::Cmplx;
00020
00021 class Maxwell2D_hField :
00022 public hp2D::ElementFunction<1, Cmplx, hp2Dedge::Quad<> > {
00023 public:
00024 Maxwell2D_hField(const Real& omega, const Real& mu);
00025 virtual ~Maxwell2D_hField() {}
00026
00027 virtual Maxwell2D_hField* clone() const {
00028 return new Maxwell2D_hField(1.0 / std::imag(factor_), 1.0); }
00029 protected:
00030 virtual std::ostream& info(std::ostream& os) const;
00031 private:
00032 virtual void compute_(const hp2Dedge::Quad<>& elm,
00033 const concepts::Array<Cmplx>& coeff,
00034 Cmplx& val, const uint i[2]) const;
00035 virtual void compute_(const hp2Dedge::Quad<>& elm, const uint j[3],
00036 Cmplx& val, const uint i[2]) const;
00037 virtual void compute_(const hp2Dedge::Quad<>& elm,
00038 const concepts::Array<Cmplx>& coeff,
00039 Cmplx& val,
00040 const Real2d& p, const Real t = 0.0) const;
00042 hp2Dedge::Rot<Cmplx> scurl_;
00044 Cmplx factor_;
00045 };
00046
00047 }
00048
00049 #endif // Maxwell2D_E_hField_hh