Hermes2D  2.0
order_permutator.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_REFINEMENT_ORDER_PERMUTATOR_H
17 #define __H2D_REFINEMENT_ORDER_PERMUTATOR_H
18 
19 namespace Hermes
20 {
21  namespace Hermes2D
22  {
23  namespace RefinementSelectors {
25 
34  class HERMES_API OrderPermutator {
35  protected:
36  int order_h;
37  int order_v;
42  bool iso_p;
44 
45  public:
47 
51  OrderPermutator (int start_quad_order = 0, int end_quad_order = 0, bool iso_p = false, int* tgt_quad_order = NULL);
52 
54 
55  bool next();
56 
58  void reset();
59 
61 
62  int get_order_h() const;
63 
65 
66  int get_order_v() const;
67 
69 
70  int get_quad_order() const;
71 
73 
74  int get_start_quad_order() const;
75 
77 
78  int get_end_quad_order() const;
79  };
80  }
81  }
82 }
83 #endif