FiberBundleHDF5  FiberHDF5 Documentation, Revision 2026
High-Performance Fiber Bundle Data Model for Scientific Visualization
Loading...
Searching...
No Matches
F5coordinates.c
Go to the documentation of this file.
1#include "F5Bchart.h"
2#include "F5defs.h"
3#include "F5coordinates.h"
4
6{
7static hid_t IF_id = -1;
8
9 if (IF_id<0)
10 {
11 IF_id = H5Tcreate(H5T_COMPOUND, sizeof(IntegerFraction32) );
12 H5Tinsert(IF_id, "num" , 0, H5T_NATIVE_INT32);
13 H5Tinsert(IF_id, "denom", sizeof(F5_uint32_t), H5T_NATIVE_INT32);
14 }
15 return IF_id;
16}
17
19{
20static hid_t IF_id = -1;
21
22 if (IF_id<0)
23 {
24 IF_id = H5Tcreate(H5T_COMPOUND, sizeof(IntegerFraction64) );
25 H5Tinsert(IF_id, "num" , 0, H5T_NATIVE_INT64);
26 H5Tinsert(IF_id, "denom", sizeof(F5_uint64_t), H5T_NATIVE_INT64);
27 }
28 return IF_id;
29}
30
31#define STANDARD_CHART(what) \
32ChartDomain_IDs*F5B_standard_##what() \
33{ \
34static ChartDomain_IDs*myChart = 0; \
35 \
36 if (!myChart) \
37 myChart = F5B_new_global_##what(); \
38 \
39 return myChart; \
40}
41
42
43/*
44Note: two main functions co-exist for the creation of coordinate systems for Representations:
45
46 F5B_new_global_domain: Only positional type
47 F5B_new_global_chart: Also tangential/tensor types
48*/
49
50
51
52/*
53TODO: Add standard chart and cleanup function for each coordinate system
54 */
55
56/************* 4D charts ************************/
57
59{
60const char*coordnames[] = { "t", "x", "y", "z" };
61 return F5B_new_global_float_chart(coordnames, 4, "Cartesian 4D", F5_FORTRAN_ORDER);
62}
63
65{
66const char*coordnames[] = { "t", "r", "theta", "phi" };
67 return F5B_new_global_float_chart(coordnames, 4, "Polar 4D", F5_FORTRAN_ORDER);
68}
69
70/************* 3D charts ************************/
71
73{
74const char*coordnames[] = {"x", "y", "z" };
75 return F5B_new_global_int_domain(coordnames, 3, "Integer3D", F5_FORTRAN_ORDER, 3);
76}
77
79{
80const char*coordnames[] = {"x", "y", "z" };
81 return F5B_new_global_fractional_domain(coordnames, 3, "Rational3D", F5_FORTRAN_ORDER, 3);
82}
83
85{
86const char*coordnames[] = {"x", "y", "z" };
88}
89
90/********************************************************/
91
93{
94const char*coordnames[] = {"i", "j", "k" };
96}
97STANDARD_CHART(triangle_cells_ijk)
98
100{
101const char*coordnames[] = {"ii","ij","jj"};
103}
104
105STANDARD_CHART(triangle_cells)
106
108{
109const char*coordnames[] = {"i", "j" };
111}
112
113STANDARD_CHART(edge_cells)
114
115
117{
118/*const char*coordnames[4] = {"i00", "i01", "i11", "i10" };*/
119const char*coordnames[4] = { "ii","ij","ji","jj"};
121}
122STANDARD_CHART(quad_cells)
123
125{
126const char*coordnames[4] = {"i0", "i01", "i10", "i11" };
128}
129
130
132{
133const char*coordnames[4] = { "iii", "iij", "ijj", "jjj" };
135}
136STANDARD_CHART(tetrahedral_cells)
137
138
140{
141static const char*coordnames[8] = { "iii","iij","iji","ijj","jii","jij","jji","jjj" };
143}
144STANDARD_CHART(hexahedral_cells)
145
146extern
148 int dimension,
149 const char*name,
150 const int perm_vector[],
151 int cell_dimensionality);
153{
154static const char*coordnames[] = { "a", "b", "c", "d", "e", "f", "g", "h" };
156}
157
158/********************************************************/
159
160static ChartDomain_IDs*standard_cartesian_chart3D = 0;
161
163{
164 if (!standard_cartesian_chart3D)
165 standard_cartesian_chart3D = F5B_new_global_cartesian_chart3D();
166
167 return standard_cartesian_chart3D;
168}
169
170
172{
173const char*coordnames[] = {"r", "theta", "phi" };
174 return F5B_new_global_float_chart(coordnames, 3, "Polar 3D", F5_FORTRAN_ORDER);
175}
176
178{
179const char*coordnames[] = {"r", "phi", "z"};
180 return F5B_new_global_float_chart(coordnames, 3, "Cylindrical 3D", F5_FORTRAN_ORDER);
181}
182
183
185{
186const char*coordnames[] = {"u", "v", "w" };
187 return F5B_new_global_float_chart(coordnames, 3, "Texture 3D", F5_FORTRAN_ORDER);
188}
189
191{
192const char*coordnames[] = {"t", "r", "phi" };
193 return F5B_new_global_float_chart(coordnames, 3, "Time Polar 2D", F5_FORTRAN_ORDER);
194}
195
196/************* 2D charts ************************/
197
199{
200const char*coordnames[] = {"x", "y" };
201 return F5B_new_global_float_chart(coordnames, 2, "Cartesian 2D", F5_FORTRAN_ORDER);
202}
203
205{
206const char*coordnames[] = {"r", "phi" };
207 return F5B_new_global_float_chart(coordnames, 2, "Polar 2D", F5_FORTRAN_ORDER);
208}
209
211{
212const char*coordnames[] = {"phi", "theta" };
213 return F5B_new_global_float_chart(coordnames, 2, "Spherical 2D", F5_FORTRAN_ORDER);
214}
215
217{
218const char*coordnames[] = {"r", "theta" };
219 return F5B_new_global_float_chart(coordnames, 2, "Axial 2D", F5_FORTRAN_ORDER);
220}
221
222/************* 1D charts ************************/
224{
225const char*coordnames[] = {"x"};
226 return F5B_new_global_float_chart(coordnames, 1, "Cartesian 1D", F5_FORTRAN_ORDER);
227}
228
230{
231const char*coordnames[] = {"phi"};
232 return F5B_new_global_float_chart(coordnames, 1, "Spherical 1D", F5_FORTRAN_ORDER);
233}
234
236{
237const char*coordnames[] = {"t"};
238 return F5B_new_global_float_chart(coordnames, 1, "Time 1D", F5_FORTRAN_ORDER);
239}
240
241
243{
244const char*coordnames[] = {"u", "v" };
245 return F5B_new_global_float_chart(coordnames, 2, "Texture 2D", F5_FORTRAN_ORDER);
246}
247
248static ChartDomain_IDs*standard_texture_chart2D = 0;
249
251{
252 if (!standard_texture_chart2D)
253 standard_texture_chart2D = F5B_new_global_texture_chart2D();
254
255 return standard_texture_chart2D;
256}
257
258/******************** Color Charts **************/
260{
261const char*coordnames[] = {"r", "g", "b", "a" };
262 return F5B_new_global_float_chart(coordnames, 4, "RGBA", F5_FORTRAN_ORDER);
263}
264
266{
267const char*coordnames[] = {"r", "g", "b", "a" };
268 return F5B_new_global_int_chart(coordnames, 4, "RGBA", F5_FORTRAN_ORDER);
269}
270
271
272/******************** CLEANUP ******************/
273
275{
276 F5B_delete_global_chart(standard_cartesian_chart3D);
277 F5B_delete_global_chart(standard_texture_chart2D);
278}
void F5B_delete_global_chart(ChartDomain_IDs *ID)
Definition F5Bchart.c:632
ChartDomain_IDs * F5B_new_global_float_chart(const char *coordnames[], int dimension, const char *name, const int perm_vector[FIBER_MAX_RANK])
Definition F5Bchart.c:496
ChartDomain_IDs * F5B_new_global_fractional_domain(const char *coordnames[], int dimension, const char *name, const int perm_vector[], int cell_dimensionality)
Definition F5Bchart.c:571
ChartDomain_IDs * F5B_new_global_int_chart(const char *coordnames[], int dimension, const char *name, const int perm_vector[FIBER_MAX_RANK])
Definition F5Bchart.c:514
ChartDomain_IDs * F5B_new_global_int_domain(const char *coordnames[], int dimension, const char *name, const int perm_vector[FIBER_MAX_RANK], int cell_dimensionality)
Definition F5Bchart.c:529
#define F5_FORTRAN_ORDER
Definition F5Bchart.h:267
name
Definition F5P.c:82
ChartDomain_IDs * F5B_new_global_triangle_cells()
ChartDomain_IDs * F5B_new_global_cartesian_chart1D()
ChartDomain_IDs * F5B_new_global_polar_chart2D()
ChartDomain_IDs * F5B_new_global_polar_chart3D()
ChartDomain_IDs * F5B_new_global_color_chart_rgba_real()
ChartDomain_IDs * F5B_new_global_color_chart_rgba_int()
ChartDomain_IDs * F5B_new_global_cartesian_chart2D()
ChartDomain_IDs * F5B_new_global_time_chart1D()
ChartDomain_IDs * F5B_new_global_tetrahedral_cells()
ChartDomain_IDs * F5B_new_global_texture_chart3D()
hid_t F5T_IntegerFraction32()
ChartDomain_IDs * F5B_new_global_spherical_chart2D()
ChartDomain_IDs * F5B_new_global_polar_chart4D()
ChartDomain_IDs * F5B_new_global_triangle_cells_ijk()
ChartDomain_IDs * F5B_standard_texture_chart2D()
ChartDomain_IDs * F5B_new_global_fragname()
ChartDomain_IDs * F5B_new_global_spherical_chart1D()
ChartDomain_IDs * F5B_new_global_quad_cells()
ChartDomain_IDs * F5B_new_global_texture_chart2D()
ChartDomain_IDs * F5B_new_global_hexahedral_cells()
ChartDomain_IDs * F5B_new_global_t_polar2_chart3D()
#define STANDARD_CHART(what)
ChartDomain_IDs * F5B_new_global_axial_chart2D()
hid_t F5T_IntegerFraction64()
ChartDomain_IDs * F5B_new_global_cartesian_chart4D()
ChartDomain_IDs * F5B_new_global_edge_cells()
ChartDomain_IDs * old_F5B_new_global_tetrahedral_cells()
ChartDomain_IDs * F5B_new_global_fragment_neighbour_domain(const char *coordnames[], int dimension, const char *name, const int perm_vector[], int cell_dimensionality)
Definition F5Bchart.c:551
ChartDomain_IDs * F5B_new_global_cylindrical_chart3D()
void F5Bcoordinate_cleanup()
#define F5_TETRAHEDRON_CELL_DOMAIN
#define F5_FRAGMENT_NEIGHBOUR_CELL_DOMAIN
#define F5_QUAD_CELL_DOMAIN
#define F5_TRIANGLE_CELL_DOMAIN
#define F5_HEXAHEDRON_CELL_DOMAIN
#define F5_EDGE_CELL_DOMAIN
#define FIBER_HDF5_CARTESIAN_CHART_DOMAIN
Definition F5defs.h:77
uint64_t F5_uint64_t
Definition F5types.h:22
uint32_t F5_uint32_t
Definition F5types.h:21
ChartDomain_IDs * F5B_new_rational_regular_domain3D()
ChartDomain_IDs * F5B_new_global_cartesian_chart3D()
ChartDomain_IDs * F5B_standard_cartesian_chart3D()
ChartDomain_IDs * F5B_new_integer_regular_domain3D()