Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

app-cwinkelm/linearForm.hh
Go to the documentation of this file.
00001 #ifndef dgElasticLinearForms_hh
00002 #define dgElasticLinearForms_hh
00003 
00004 #include "basics/typedefs.hh"
00005 #include "integration.hh"
00006 #include "timestepping/vectors.hh"
00007 #include "formula/boundary.hh"
00008 #include "geometry/boundaryConditions.hh"
00009 #include "function/linearForm.hh"
00010 #include "linDG2D.hh"
00011 
00012 #include "elasticityTensor.hh"
00013 
00014 #define DEBUG_FILLDATA 0
00015 
00016 namespace concepts {
00017 
00018   // forward declaration
00019   template <typename F>
00020   class Formula;
00021 }
00022 
00023 using concepts::Real;
00024 
00028 class DGElasticTimeLf2d : public timestepping::TimeLinearForm {
00029  public:
00042   DGElasticTimeLf2d(const concepts::Array<concepts::Formula<Real>* >& frm,
00043                     const ElasticityTensor<2>& et, uint vIdx, const
00044                     concepts::Array<concepts::BoundaryConditions*>& bc,
00045                     const linDG2D::MeshInfo& mi, Real omega,
00046                     Real omegaNormal, Real tau,
00047                     uint nQuadPts) :
00048     timestepping::TimeLinearForm(), frm_(frm), et_(et), vIdx_(vIdx), bc_(bc),
00049     mi_(mi), omega_(omega), omegaNormal_(omegaNormal), tau_(tau),
00050     nQuadPts_(nQuadPts) { }
00055   void operator() (const concepts::Element<Real> &elmBase,
00056                    concepts::ElementMatrix<Real> &em);
00057  private:
00058   const concepts::Array<concepts::Formula<Real>* >& frm_;
00059   const ElasticityTensor<2>& et_;
00060   const uint vIdx_;
00061   const concepts::Array<concepts::BoundaryConditions*>& bc_;
00062   const linDG2D::MeshInfo& mi_;
00063   const Real omega_;
00064   const Real omegaNormal_;
00065   const Real tau_;
00066   const uint nQuadPts_;
00067 };
00068 
00073 class DGElasticPressureTimeLf2d : public timestepping::TimeLinearForm {
00074  public:
00081   DGElasticPressureTimeLf2d(concepts::Array<concepts::BoundaryConditions*>& bc,
00082                             const linDG2D::MeshInfo& mi, uint nQuadPts) :
00083     timestepping::TimeLinearForm(), bc_(bc), mi_(mi), nQuadPts_(nQuadPts) { }
00088   void operator() (const concepts::Element<Real> &elmBase,
00089                    concepts::ElementMatrix<Real> &em);
00090  private:
00091   const concepts::Array<concepts::BoundaryConditions*>& bc_;
00092   const linDG2D::MeshInfo& mi_;
00093   const uint nQuadPts_;
00094 };
00095 
00100 class DGDivergenceLf2d : public concepts::LinearForm<Real> {
00101  public:
00107   DGDivergenceLf2d(concepts::Formula<Real>& frmX, concepts::Formula<Real>& frmY,
00108                    uint nQuadPts)
00109     : frmX_(frmX), frmY_(frmY), nQuadPts_(nQuadPts) { };
00114   void operator() (const concepts::Element<Real> &elmBase,
00115                    concepts::ElementMatrix<Real> &em);
00116  private:
00117   const concepts::Formula<Real>& frmX_;
00118   const concepts::Formula<Real>& frmY_;
00119   const uint nQuadPts_;
00120 };
00121 
00122 #endif //dgElasticLinearForms_hh

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)