ViennaGrid for Python
 All Classes Files Functions Variables
types.hpp
Go to the documentation of this file.
1 
6 #ifndef DOMAINS_TYPES_HPP
7 #define DOMAINS_TYPES_HPP
8 
9 #include <viennagrid/forwards.hpp>
10 #include <viennagrid/domain/domain.hpp>
11 #include <viennagrid/domain/element_creation.hpp>
12 #include <viennagrid/point.hpp>
13 #include <viennagrid/topology/quadrilateral.hpp>
14 
15 #include "../points/types.hpp"
16 
17 /***************
18  * LINEAR MESH *
19  ***************/
20 
23  typedef viennagrid::config::result_of::full_domain_config<viennagrid::line_tag,
24  PointCartesian1D_t,
25  viennagrid::storage::id_handle_tag>::type type;
26 };
27 typedef viennagrid::domain_t<LinearCartesian1D_DomainConfig> LinearCartesian1D_Domain_t;
28 
31  typedef viennagrid::config::result_of::full_domain_config<viennagrid::line_tag,
32  PointCartesian2D_t,
33  viennagrid::storage::id_handle_tag>::type type;
34 };
35 typedef viennagrid::domain_t<LinearCartesian2D_DomainConfig> LinearCartesian2D_Domain_t;
36 
39  typedef viennagrid::config::result_of::full_domain_config<viennagrid::line_tag,
40  PointCartesian3D_t,
41  viennagrid::storage::id_handle_tag>::type type;
42 };
43 typedef viennagrid::domain_t<LinearCartesian3D_DomainConfig> LinearCartesian3D_Domain_t;
44 
45 // Line, cylindrical (3D)
48  typedef viennagrid::config::result_of::full_domain_config<viennagrid::line_tag,
49  PointCylindrical_t,
50  viennagrid::storage::id_handle_tag>::type type;
51 };
52 typedef viennagrid::domain_t<LinearCylindrical3D_DomainConfig> LinearCylindrical3D_Domain_t;
53 
54 // Line, polar (2D)
57  typedef viennagrid::config::result_of::full_domain_config<viennagrid::line_tag,
58  PointPolar_t,
59  viennagrid::storage::id_handle_tag>::type type;
60 };
61 typedef viennagrid::domain_t<LinearPolar2D_DomainConfig> LinearPolar2D_Domain_t;
62 
63 // Line, spherical (3D)
66  typedef viennagrid::config::result_of::full_domain_config<viennagrid::line_tag,
67  PointSpherical_t,
68  viennagrid::storage::id_handle_tag>::type type;
69 };
70 typedef viennagrid::domain_t<LinearSpherical3D_DomainConfig> LinearSpherical3D_Domain_t;
71 
72 /*******************
73  * TRIANGULAR MESH *
74  *******************/
75 
78  typedef viennagrid::config::result_of::full_domain_config<viennagrid::triangle_tag,
79  PointCartesian2D_t,
80  viennagrid::storage::id_handle_tag>::type type;
81 };
82 typedef viennagrid::domain_t<TriangularCartesian2D_DomainConfig> TriangularCartesian2D_Domain_t;
83 
86  typedef viennagrid::config::result_of::full_domain_config<viennagrid::triangle_tag,
87  PointCartesian3D_t,
88  viennagrid::storage::id_handle_tag>::type type;
89 };
90 typedef viennagrid::domain_t<TriangularCartesian3D_DomainConfig> TriangularCartesian3D_Domain_t;
91 
94  typedef viennagrid::config::result_of::full_domain_config<viennagrid::triangle_tag,
95  PointCylindrical_t,
96  viennagrid::storage::id_handle_tag>::type type;
97 };
98 typedef viennagrid::domain_t<TriangularCylindrical3D_DomainConfig> TriangularCylindrical3D_Domain_t;
99 
102  typedef viennagrid::config::result_of::full_domain_config<viennagrid::triangle_tag,
103  PointPolar_t,
104  viennagrid::storage::id_handle_tag>::type type;
105 };
106 typedef viennagrid::domain_t<TriangularPolar2D_DomainConfig> TriangularPolar2D_Domain_t;
107 
110  typedef viennagrid::config::result_of::full_domain_config<viennagrid::triangle_tag,
111  PointSpherical_t,
112  viennagrid::storage::id_handle_tag>::type type;
113 };
114 typedef viennagrid::domain_t<TriangularSpherical3D_DomainConfig> TriangularSpherical3D_Domain_t;
115 
116 /**********************
117  * QUADRILATERAL MESH *
118  **********************/
119 
122  typedef viennagrid::config::result_of::full_domain_config<viennagrid::quadrilateral_tag,
123  PointCartesian2D_t,
124  viennagrid::storage::id_handle_tag>::type type;
125 };
126 typedef viennagrid::domain_t<QuadrilateralCartesian2D_DomainConfig> QuadrilateralCartesian2D_Domain_t;
127 
130  typedef viennagrid::config::result_of::full_domain_config<viennagrid::quadrilateral_tag,
131  PointCartesian3D_t,
132  viennagrid::storage::id_handle_tag>::type type;
133 };
134 typedef viennagrid::domain_t<QuadrilateralCartesian3D_DomainConfig> QuadrilateralCartesian3D_Domain_t;
135 
138  typedef viennagrid::config::result_of::full_domain_config<viennagrid::quadrilateral_tag,
139  PointCylindrical_t,
140  viennagrid::storage::id_handle_tag>::type type;
141 };
142 typedef viennagrid::domain_t<QuadrilateralCylindrical3D_DomainConfig> QuadrilateralCylindrical3D_Domain_t;
143 
146  typedef viennagrid::config::result_of::full_domain_config<viennagrid::quadrilateral_tag,
147  PointPolar_t,
148  viennagrid::storage::id_handle_tag>::type type;
149 };
150 typedef viennagrid::domain_t<QuadrilateralPolar2D_DomainConfig> QuadrilateralPolar2D_Domain_t;
151 
154  typedef viennagrid::config::result_of::full_domain_config<viennagrid::quadrilateral_tag,
155  PointSpherical_t,
156  viennagrid::storage::id_handle_tag>::type type;
157 };
158 typedef viennagrid::domain_t<QuadrilateralSpherical3D_DomainConfig> QuadrilateralSpherical3D_Domain_t;
159 
160 /********************
161  * TETRAHEDRAL MESH *
162  ********************/
163 
166  typedef viennagrid::config::result_of::full_domain_config<viennagrid::tetrahedron_tag,
167  PointCartesian3D_t,
168  viennagrid::storage::id_handle_tag>::type type;
169 };
170 typedef viennagrid::domain_t<TetrahedralCartesian3D_DomainConfig> TetrahedralCartesian3D_Domain_t;
171 
174  typedef viennagrid::config::result_of::full_domain_config<viennagrid::tetrahedron_tag,
175  PointCylindrical_t,
176  viennagrid::storage::id_handle_tag>::type type;
177 };
178 typedef viennagrid::domain_t<TetrahedralCylindrical3D_DomainConfig> TetrahedralCylindrical3D_Domain_t;
179 
182  typedef viennagrid::config::result_of::full_domain_config<viennagrid::tetrahedron_tag,
183  PointSpherical_t,
184  viennagrid::storage::id_handle_tag>::type type;
185 };
186 typedef viennagrid::domain_t<TetrahedralSpherical3D_DomainConfig> TetrahedralSpherical3D_Domain_t;
187 
188 #endif /* end of include guard: DOMAINS_TYPES_HPP */