Hermes2D  2.0
shapeset_l2_all.h
1 // This file is part of Hermes2D.
2 //
3 // Hermes2D is free software: you can redistribute it and/or modify
4 // it under the terms of the GNU General Public License as published by
5 // the Free Software Foundation, either version 2 of the License, or
6 // (at your option) any later version.
7 //
8 // Hermes2D is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License
14 // along with Hermes2D. If not, see <http://www.gnu.org/licenses/>.
15 
16 #ifndef __H2D_SHAPESET_L2_ALL
17 #define __H2D_SHAPESET_L2_ALL
18 
19 // This file is a common header for all L2 shapesets.
20 
21 #include "shapeset.h"
22 
23 namespace Hermes
24 {
25  namespace Hermes2D
26  {
29  class HERMES_API L2ShapesetLegendre : public Shapeset
30  {
31  public:
33  virtual Shapeset* clone() { return new L2ShapesetLegendre(*this); };
34  virtual SpaceType get_space_type() const { return HERMES_L2_SPACE; }
35  virtual int get_max_index(ElementMode2D mode);
36  protected:
37  virtual int get_id() const { return 30; }
38  template<typename Scalar> friend class DiscreteProblem;
39  template<typename Scalar> friend class VectorForm;
40  template<typename Scalar> friend class MatrixForm;
41  template<typename Scalar> friend class Solution;
42  friend class CurvMap; friend class RefMap;
43  template<typename Scalar> friend class RefinementSelectors::H1ProjBasedSelector;
44  template<typename Scalar> friend class RefinementSelectors::L2ProjBasedSelector;
45  template<typename Scalar> friend class RefinementSelectors::HcurlProjBasedSelector;
46  template<typename Scalar> friend class RefinementSelectors::OptimumSelector; friend class PrecalcShapeset;
47  static const int max_index[H2D_NUM_MODES];
48  };
49 
52  }
53 }
54 #endif