Go to the documentation of this file.00001
00002
00003 #ifndef bilinearLinFEM_hh
00004 #define bilinearLinFEM_hh
00005
00006 #include "basics/typedefs.hh"
00007 #include "basics/vectorsMatrices.hh"
00008 #include "operator/bilinearForm.hh"
00009 #include "toolbox/array.hh"
00010
00011 namespace linearFEM {
00012
00013 using concepts::Real;
00014
00015 class Quad;
00016 class Triangle;
00017
00018
00019
00027 class Laplace2d : public concepts::BilinearForm<Real> {
00028 public:
00029 virtual void operator()(const concepts::Element<Real>& elmX,
00030 const concepts::Element<Real>& elmY,
00031 concepts::ElementMatrix<Real>& em);
00036 void operator()(const linearFEM::Quad& elmX,
00037 const linearFEM::Quad& elmY,
00038 concepts::ElementMatrix<Real>& em);
00042 void operator()(const linearFEM::Triangle& elmX,
00043 const linearFEM::Triangle& elmY,
00044 concepts::ElementMatrix<Real>& em);
00045 virtual Laplace2d* clone() const { return new Laplace2d(); }
00046 private:
00048 concepts::Array<concepts::Real2d> shpfct_;
00049 };
00050
00051
00052
00060 class Identity2d : public concepts::BilinearForm<Real> {
00061 public:
00062 virtual void operator()(const concepts::Element<Real>& elmX,
00063 const concepts::Element<Real>& elmY,
00064 concepts::ElementMatrix<Real>& em);
00069 void operator()(const linearFEM::Quad& elmX,
00070 const linearFEM::Quad& elmY,
00071 concepts::ElementMatrix<Real>& em);
00075 void operator()(const linearFEM::Triangle& elmX,
00076 const linearFEM::Triangle& elmY,
00077 concepts::ElementMatrix<Real>& em);
00078 virtual Identity2d* clone() const { return new Identity2d(); }
00079 private:
00081 concepts::Array<Real> shpfct_;
00082 };
00083
00084 }
00085
00086 #endif // bilinearLinFEM_hh