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
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