Go to the documentation of this file.00001 #ifndef dgLinearForms_hh
00002 #define dgLinearForms_hh
00003
00004 #include "basics/typedefs.hh"
00005 #include "formula/formula.hh"
00006 #include "formula/boundary.hh"
00007 #include "geometry/boundaryConditions.hh"
00008 #include "function/linearForm.hh"
00009 #include "integration.hh"
00010 #include "timestepping/vectors.hh"
00011
00012 #include "triangle.hh"
00013 #include "meshInfo.hh"
00014
00015 #define DEBUG_FILLDATA 0
00016
00017 using concepts::Real;
00018
00019 namespace linDG2D {
00020
00024 class LaplaceTimeLf : public timestepping::TimeLinearForm {
00025 public:
00035 LaplaceTimeLf(concepts::Formula<Real>& frm,
00036 concepts::BoundaryConditions* bc,
00037 MeshInfo& mi,
00038 Real omega, Real tau,
00039 uint nQuadPts) :
00040 timestepping::TimeLinearForm(), frm_(frm), bc_(bc) , mi_(mi),
00041 omega_(omega), tau_(tau), nQuadPts_(nQuadPts) { }
00046 void operator() (const concepts::Element<Real> &elmBase,
00047 concepts::ElementMatrix<Real> &em);
00048 private:
00049 const concepts::Formula<Real>& frm_;
00050 const concepts::BoundaryConditions* bc_;
00051 const MeshInfo& mi_;
00052 const Real omega_;
00053 const Real tau_;
00054 const uint nQuadPts_;
00055 };
00056
00061 class ScalarProductLf : public concepts::LinearForm<Real> {
00062 public:
00067 ScalarProductLf(concepts::Formula<Real>& frm, uint nQuadPts)
00068 : frm_(frm), nQuadPts_(nQuadPts) { };
00073 void operator() (const concepts::Element<Real> &elmBase,
00074 concepts::ElementMatrix<Real> &em);
00075 private:
00076 const concepts::Formula<Real>& frm_;
00077 const uint nQuadPts_;
00078 };
00079
00080 }
00081
00082 #endif //dgLinearForms_hh