00001
00002 #ifndef __F5Bcoordinates_H
00003 #define __F5Bcoordinates_H
00004
00005 #include <F5/F5types.h>
00006 #include <F5/F5Bchart.h>
00007
00008 #include "F5WinDLLApi.h"
00009
00010 #ifdef __cplusplus
00011 extern "C"
00012 {
00013 #endif
00014
00018
00019
00020 ChartDomain_IDs*F5B_new_global_cartesian_chart4D();
00021 ChartDomain_IDs*F5B_new_global_polar_chart4D();
00022
00023 typedef struct { F5_float_t t,x,y,z; } F5_vec4f_t;
00024 typedef struct { F5_double_t t,x,y,z; } F5_vec4d_t;
00025
00026 typedef struct { F5_float_t t,x,y,z; } F5_point4f_t;
00027 typedef struct { F5_double_t t,x,y,z; } F5_point4d_t;
00028
00029 typedef struct { F5_float_t t,r,phi,theta; } F5_point_polar4f_t;
00030 typedef struct { F5_double_t t,r,phi,theta; } F5_point_double4f_t;
00031
00032
00037 typedef struct { F5_float_t gtt, gtx, gxx, gty, gxy, gyy, gtz, gxz, gyz, gzz; } F5_metric4f_t;
00038 typedef struct { F5_double_t gtt, gtx, gxx, gty, gxy, gyy, gtz, gxz, gyz, gzz; } F5_metric4d_t;
00039
00040 #define F5T_COORD4_FLOAT F5B_standard_cartesian_chart4D()->SinglePrecision.Point_hid_t
00041 #define F5T_COORD4_DOUBLE F5B_standard_cartesian_chart4D()->DoublePrecision.Point_hid_t
00042 #define F5T_VEC4_FLOAT F5B_standard_cartesian_chart4D()->SinglePrecision.Vector_hid_t
00043 #define F5T_VEC4_DOUBLE F5B_standard_cartesian_chart4D()->DoublePrecision.Vector_hid_t
00044 #define F5T_BIVEC4_FLOAT F5B_standard_cartesian_chart4D()->SinglePrecision.Vector_hid_t
00045 #define F5T_BIVEC4_DOUBLE F5B_standard_cartesian_chart4D()->DoublePrecision.Vector_hid_t
00046 #define F5T_METRIC44_FLOAT F5B_standard_cartesian_chart4D()->SinglePrecision.Metric_hid_t
00047 #define F5T_METRIC44_DOUBLE F5B_standard_cartesian_chart4D()->DoublePrecision.Metric_hid_t
00048
00049 #define F5T_COORD4_POLAR_FLOAT F5B_standard_polar_chart4D()->SinglePrecision.Point_hid_t
00050 #define F5T_COORD4_POLAR_DOUBLE F5B_standard_polar_chart4D()->DoublePrecision.Point_hid_t
00051
00052
00053
00054
00055
00056
00057 typedef struct { F5_float_t x,y,z; } F5_vec3_float_t;
00058 typedef struct { F5_float_t x,y,z; } F5_vec3_point_t;
00059
00060 typedef struct { F5_double_t x,y,z; } F5_vec3_double_t;
00061
00062 typedef F5_vec3_float_t F5_vec3f_t;
00063 typedef F5_vec3_point_t F5_point3f_t;
00064
00065
00066
00071 typedef struct { F5_float_t gxx, gxy, gyy, gxz, gyz, gzz; } F5_metric3_float_t;
00072 typedef F5_metric3_float_t F5_metric3f_t;
00073
00077 F5_API ChartDomain_IDs*F5B_new_global_cartesian_chart3D();
00078
00084 F5_API ChartDomain_IDs*F5B_standard_cartesian_chart3D();
00085
00086 #define F5T_COORD3_FLOAT F5B_standard_cartesian_chart3D()->SinglePrecision.Point_hid_t
00087 #define F5T_VEC3_FLOAT F5B_standard_cartesian_chart3D()->SinglePrecision.Vector_hid_t
00088 #define F5T_BIVEC3_FLOAT F5B_standard_cartesian_chart3D()->SinglePrecision.Bivector_hid_t
00089
00090 #define F5T_COORD3_DOUBLE F5B_standard_cartesian_chart3D()->DoublePrecision.Point_hid_t
00091 #define F5T_VEC3_DOUBLE F5B_standard_cartesian_chart3D()->DoublePrecision.Vector_hid_t
00092 #define F5T_BIVEC3_DOUBLE F5B_standard_cartesian_chart3D()->DoublePrecision.Bivector_hid_t
00093
00098 #define F5T_METRIC33_FLOAT F5B_standard_cartesian_chart3D()->SinglePrecision.Metric_hid_t
00099
00100 #define F5T_METRIC33_DOUBLE F5B_standard_cartesian_chart3D()->DoublePrecision.Metric_hid_t
00101
00102
00106 typedef struct
00107 {
00108 F5_uint32_t num, denom;
00109
00110 } IntegerFraction32;
00111
00112 typedef struct
00113 {
00114 F5_uint64_t num, denom;
00115
00116 } IntegerFraction64;
00117
00118 F5_API hid_t F5T_IntegerFraction32();
00119 #define F5T_INT_FRACTION32 F5T_IntegerFraction32()
00120
00121 F5_API hid_t F5T_IntegerFraction64();
00122 #define F5T_INT_FRACTION64 F5T_IntegerFraction64()
00123
00124 typedef struct { int ix, iy, iz; } F5_integer_refinement_point_t;
00125
00133 F5_API ChartDomain_IDs*F5B_new_integer_regular_domain3D();
00134
00135 typedef struct
00136 {
00137 IntegerFraction32 x, y, z;
00138 }
00139 IntegerFraction3D;
00140
00141
00142 typedef union
00143 {
00144 IntegerFraction3D crd;
00145 IntegerFraction32 d[3];
00146 }
00155 F5_refinement3D_point_t;
00156
00162 F5_API ChartDomain_IDs*F5B_new_rational_regular_domain3D();
00163
00168 typedef struct { F5_float_t r,theta,phi; } F5_polar_point3_float_t;
00169
00170 F5_API ChartDomain_IDs*F5B_new_global_polar_chart3D();
00171 F5_API ChartDomain_IDs*F5B_standard_polar_chart3D();
00172
00173 F5_API ChartDomain_IDs*F5B_new_global_cylindrical_chart3D();
00174
00175 F5_API ChartDomain_IDs*F5B_new_global_texture_chart3D();
00176
00177
00178
00179 F5_API ChartDomain_IDs*F5B_new_global_t_polar2_chart3D();
00180
00181 typedef struct { F5_float_t t,r,phi; } F5_t_polar2_float_t;
00182 typedef struct { F5_double_t t,r,phi; } F5_t_polar2_double_t;
00183
00184 #define F5T_T_POLAR2_FLOAT F5B_new_global_t_polar2_chart3D()->SinglePrecision.Point_hid_t
00185 #define F5T_T_POLAR2_DOUBLE F5B_new_global_t_polar2_chart3D()->DoublePrecision.Point_hid_t
00186
00187
00188
00189
00190
00191 F5_API ChartDomain_IDs*F5B_new_global_cartesian_chart2D();
00192 F5_API ChartDomain_IDs*F5B_new_global_polar_chart2D();
00193 F5_API ChartDomain_IDs*F5B_new_global_spherical_chart2D();
00194 F5_API ChartDomain_IDs*F5B_new_global_axial_chart2D();
00195
00196 #define F5T_POLAR2 F5B_standard_edge_cells()->SinglePrecision.Point_hid_t
00197
00198 typedef struct { F5_float_t u,v; } F5_texture_point_t;
00199
00200 F5_API ChartDomain_IDs*F5B_new_global_texture_chart2D();
00201
00203 F5_API ChartDomain_IDs*F5B_standard_texture_chart2D();
00204
00205
00206
00207 F5_API ChartDomain_IDs*F5B_new_global_cartesian_chart1D();
00208 F5_API ChartDomain_IDs*F5B_new_global_spherical_chart1D();
00209
00210 F5_API ChartDomain_IDs*F5B_new_global_time_chart1D();
00211
00212
00213
00217 typedef struct { F5_uint16_t waveform[WAVEFORMSIZE]; } F5_waveform_t;
00218
00219 typedef struct { char name[8]; } F5_fragname8_t;
00220 F5_API ChartDomain_IDs*F5B_new_global_fragname();
00221
00222 #define F5_FRAGMENT_NEIGHBOUR_CELL_DOMAIN "fragment_neighbor"
00223 #define F5_FRAGMENT_NEIGHBOUR F5B_new_global_fragname()->SinglePrecision.Point_hid_t
00224
00225
00226
00230 typedef struct { F5_uint32_t i,j; } F5_edge32_t;
00231 typedef struct { F5_uint64_t i,j; } F5_edge64_t;
00232
00233 F5_API ChartDomain_IDs*F5B_new_global_edge_cells();
00234 F5_API ChartDomain_IDs*F5B_standard_edge_cells();
00235 #define F5T_EDGE32 F5B_standard_edge_cells()->SinglePrecision.Point_hid_t
00236 #define F5T_EDGE64 F5B_standard_edge_cells()->DoublePrecision.Point_hid_t
00237 #define F5_EDGE_CELL_DOMAIN "edge"
00238
00242 typedef struct { F5_uint32_t i,j,k; } F5_triangle32_t;
00243 typedef struct { F5_uint64_t i,j,k; } F5_triangle64_t;
00244
00248 typedef F5_triangle32_t F5_triangle_t;
00249
00250 F5_API ChartDomain_IDs*F5B_new_global_triangle_cells();
00251 F5_API ChartDomain_IDs*F5B_standard_triangle_cells();
00252 #define F5T_TRIANGLE32 F5B_standard_triangle_cells()->SinglePrecision.Point_hid_t
00253 #define F5T_TRIANGLE64 F5B_standard_triangle_cells()->DoublePrecision.Point_hid_t
00254
00255 #define F5_TRIANGLE_CELL_DOMAIN "triangular"
00256
00260 typedef struct { F5_uint32_t i[2][2]; } F5_quad_t;
00261 typedef struct { F5_uint32_t i[4]; } F5_quadL_t;
00262
00263 F5_API ChartDomain_IDs*F5B_new_global_quad_cells();
00264 F5_API ChartDomain_IDs*F5B_standard_quad_cells();
00265 #define F5T_QUAD32 F5B_standard_quad_cells()->SinglePrecision.Point_hid_t
00266 #define F5_QUAD_CELL_DOMAIN "quad"
00267
00268 #if 0
00269
00270
00271
00272 typedef struct { F5_int_t i,j,k; } F5_faces_t;
00273
00274 F5_API ChartDomain_IDs*F5B_new_global_faces_cells();
00275 F5_API ChartDomain_IDs*F5B_standard_faces_cells();
00276 #define F5T_FACES F5B_standard_faces_cells()->Point_hid_t
00277 #define F5_FACE_CELL_DOMAIN "faces"
00278 #endif
00279
00280
00284 typedef struct { F5_uint32_t i,j,k,l; } F5_tetra32_t;
00285 typedef struct { F5_uint64_t i,j,k,l; } F5_tetra64_t;
00286
00287 F5_API ChartDomain_IDs*F5B_new_global_tetrahedral_cells();
00288 F5_API ChartDomain_IDs*F5B_standard_tetrahedral_cells();
00289 #define F5T_TETRAHEDRON32 F5B_standard_tetrahedral_cells()->SinglePrecision.Point_hid_t
00290 #define F5T_TETRAHEDRON64 F5B_standard_tetrahedral_cells()->DoublePrecision.Point_hid_t
00291 #define F5_TETRAHEDRON_CELL_DOMAIN "tetrahedral"
00292
00296 typedef struct { F5_uint32_t i[2][2][2]; } F5_hexahedron32_t;
00297 typedef struct { F5_uint32_t i[8]; } F5_hexahedronL32_t;
00298
00299 F5_API ChartDomain_IDs*F5B_new_global_hexahedral_cells();
00300 F5_API ChartDomain_IDs*F5B_standard_hexahedral_cells();
00301 #define F5T_HEXAHEDRON32 F5B_standard_hexahedral_cells()->SinglePrecision.Point_hid_t
00302 #define F5_HEXAHEDRON_CELL_DOMAIN "hexahedral"
00303
00304
00305 F5_API void F5Bcoordinate_cleanup();
00306
00307
00308
00309 #ifdef __cplusplus
00310 }
00311 #endif
00312
00313 #endif
00314