Hermes2D  2.0
orderizer.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_ORDERIZER_H
17 #define __H2D_ORDERIZER_H
18 
19 #include "linearizer.h"
20 
21 namespace Hermes
22 {
23  namespace Hermes2D
24  {
25  namespace Views
26  {
30  class HERMES_API Orderizer : public LinearizerBase
31  {
32  public:
33 
34  Orderizer();
35  ~Orderizer();
36 
37  template<typename Scalar>
38  void process_space(const Space<Scalar>* space);
39 
41  template<typename Scalar>
42  void save_orders_vtk(const Space<Scalar>* space, const char* file_name);
43 
44  template<typename Scalar>
45  void save_mesh_vtk(const Space<Scalar>* space, const char* file_name);
46 
47  int get_labels(int*& lvert, char**& ltext, double2*& lbox) const;
48 
49  void calc_vertices_aabb(double* min_x, double* max_x,
50  double* min_y, double* max_y) const;
51 
52  int get_num_vertices();
53  double3* get_vertices();
54 
55  void free();
56  protected:
57  char buffer[1000];
58  char* labels[11][11];
59 
60  int* tris_orders;
61  double3* verts;
62  int label_size, label_count, cl1, cl2, cl3;
63  int* lvert;
64  char** ltext;
65  double2* lbox;
66 
67  void add_triangle(int iv0, int iv1, int iv2, int order, int marker);
68 
69  void add_edge(int iv1, int iv2, int marker);
70 
71  int add_vertex();
72 
73  void make_vert(int & index, double x, double y, double val);
74  };
75  }
76  }
77 }
78 #endif