Hermes2D  2.0
shapeset_hc_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_HC_ALL_H
17 #define __H2D_SHAPESET_HC_ALL_H
18 
19 #include "shapeset.h"
20 
21 namespace Hermes
22 {
23  namespace Hermes2D
24  {
27  class HERMES_API HcurlShapesetLegendre : public Shapeset
28  {
29  public:
31  virtual Shapeset* clone() { return new HcurlShapesetLegendre(*this); };
32  virtual SpaceType get_space_type() const { return HERMES_HCURL_SPACE; }
33  virtual int get_max_index(ElementMode2D mode);
34  protected:
35  template<typename Scalar> friend class VectorForm;
36  template<typename Scalar> friend class MatrixForm;
37  virtual int get_id() const { return 10; }
38  template<typename Scalar> friend class DiscreteProblem; template<typename Scalar> friend class Solution; friend class CurvMap; friend class RefMap; template<typename Scalar> friend class RefinementSelectors::H1ProjBasedSelector; template<typename Scalar> friend class RefinementSelectors::L2ProjBasedSelector; template<typename Scalar> friend class RefinementSelectors::HcurlProjBasedSelector; template<typename Scalar> friend class RefinementSelectors::OptimumSelector; friend class PrecalcShapeset;
39  static const int max_index[H2D_NUM_MODES];
40  };
41 
42  /*
43  // Experimental.
45  class HERMES_API HcurlShapesetEigen2 : public Shapeset
46  {
47  public:
48  HcurlShapesetEigen2();
49  virtual Shapeset* clone() { return new HcurlShapesetEigen2(*this); };
50  virtual int get_max_index(ElementMode2D mode);
51  protected:
52  template<typename Scalar> friend class VectorForm;
53  template<typename Scalar> friend class MatrixForm;
54  virtual int get_id() const { return 11; }
55  virtual SpaceType get_space_type() const { return HERMES_HCURL_SPACE; }
56  template<typename Scalar> friend class DiscreteProblem; template<typename Scalar> friend class Solution; friend class CurvMap; friend class RefMap; template<typename Scalar> friend class RefinementSelectors::H1ProjBasedSelector; template<typename Scalar> friend class RefinementSelectors::L2ProjBasedSelector; template<typename Scalar> friend class RefinementSelectors::HcurlProjBasedSelector; template<typename Scalar> friend class RefinementSelectors::OptimumSelector; friend class PrecalcShapeset;
57  static const int max_index[2];
58  };
59  */
60 
61  /*
64  class HERMES_API HcurlShapesetGradEigen : public Shapeset
65  {
66  public:
67  HcurlShapesetGradEigen();
68  virtual Shapeset* clone() { return new HcurlShapesetGradEigen(*this); };
69  virtual int get_max_index(ElementMode2D mode);
70  protected:
71  template<typename Scalar> friend class VectorForm;
72  template<typename Scalar> friend class MatrixForm;
73  virtual int get_id() const { return 12; }
74  virtual SpaceType get_space_type() const { return HERMES_HCURL_SPACE; }
75  template<typename Scalar> friend class DiscreteProblem; template<typename Scalar> friend class Solution; friend class CurvMap; friend class RefMap; template<typename Scalar> friend class RefinementSelectors::H1ProjBasedSelector; template<typename Scalar> friend class RefinementSelectors::L2ProjBasedSelector; template<typename Scalar> friend class RefinementSelectors::HcurlProjBasedSelector; template<typename Scalar> friend class RefinementSelectors::OptimumSelector; friend class PrecalcShapeset;
76  static const int max_index[2];
77  };
78  */
79 
82  class HERMES_API HcurlShapesetGradLeg : public Shapeset
83  {
84  public:
86  virtual Shapeset* clone() { return new HcurlShapesetGradLeg(*this); };
87  virtual int get_max_index(ElementMode2D mode);
88  protected:
89  template<typename Scalar> friend class VectorForm;
90  template<typename Scalar> friend class MatrixForm;
91  virtual int get_id() const { return 13; }
92  virtual SpaceType get_space_type() const { return HERMES_HCURL_SPACE; }
93  template<typename Scalar> friend class DiscreteProblem; template<typename Scalar> friend class Solution; friend class CurvMap; friend class RefMap; template<typename Scalar> friend class RefinementSelectors::H1ProjBasedSelector; template<typename Scalar> friend class RefinementSelectors::L2ProjBasedSelector; template<typename Scalar> friend class RefinementSelectors::HcurlProjBasedSelector; template<typename Scalar> friend class RefinementSelectors::OptimumSelector; friend class PrecalcShapeset;
94  static const int max_index[H2D_NUM_MODES];
95  };
96 
99  }
100 }
101 #endif