FiberBundleHDF5  FiberHDF5 Documentation, Revision 2026
High-Performance Fiber Bundle Data Model for Scientific Visualization
Loading...
Searching...
No Matches
F5uniform.c
Go to the documentation of this file.
1/*
2 *
3 * $Id: F5uniform.c,v 1.31 2008/02/22 23:51:25 werner Exp $
4 *
5 */
6
7#include "F5L.h"
8#include "F5F.h"
9#include "F5R.h"
10#include "F5C.h"
11#include "F5uniform.h"
12#include "F5private.h"
13#include "F5defs.h"
14#include "F5X.h"
15#include "F5Fmeta.h"
16#include "F5A.h"
17
18#include <stdio.h>
19#include <stdarg.h>
20/* #if defined(__APPLE__) && defined(__MACH__) && defined(__POWERPC__) */
21#include <stdlib.h>
22/* #else */
23/* #include <malloc.h> */
24/* #endif */
25
26#include <string.h>
27#include <assert.h>
28
29F5Path*F5Rcreate_uniformf(hid_t File_id, double time,
30 const char*gridname,
31 const void*origin,
32 const void*spacing,
33 hsize_t*dims,
34 const char*coordinate_system)
35{
36F5Path*f = F5Rcreate_cartesian_3D(File_id, time, gridname, coordinate_system);
37hid_t Point_hid_t = f->myChart->SinglePrecision.Point_hid_t;
38int nDims = H5Tget_nmembers(Point_hid_t);
39
40 assert(f);
41 assert(f->myChart);
42
44 nDims, dims, Point_hid_t, origin, spacing);
45
46 F5Fclose(f);
47
48 return f;
49}
50
51F5Path*F5Rcreate_uniformd(hid_t File_id, double time,
52 const char*gridname,
53 const void*origin,
54 const void*spacing,
55 hsize_t*dims,
56 const char*coordinate_system)
57{
58F5Path*f = F5Rcreate_cartesian_3D(File_id, time, gridname, coordinate_system);
59hid_t Point_hid_t = f->myChart->DoublePrecision.Point_hid_t;
60int nDims = H5Tget_nmembers(Point_hid_t);
61
62 assert(f);
63 assert(f->myChart);
64
66 nDims, dims, Point_hid_t, origin, spacing);
67
68 F5Fclose(f);
69
70 return f;
71}
72
73F5Path*F5Rcreate_uniform_cartesian3D(hid_t File_id, double time,
74 const char*gridname,
75 const F5_vec3_point_t*origin,
76 const F5_vec3_float_t*spacing,
77 hsize_t dims[3],
78 const char*coordinate_system)
79{
80F5Path*f = F5Rcreate_cartesian_3D(File_id, time, gridname, coordinate_system);
81F5_vec3_point_t end, center;
82
83 F5Cset (f, FIBER_HDF5_POSITIONS_STRING, FIBER_REGULAR_GRID_URL "StandardCartesian/Uniform/");
85 3, dims, F5T_COORD3_FLOAT, origin, spacing);
86
87 end.x = origin->x + spacing->x*(dims[0]-1);
88 end.y = origin->y + spacing->y*(dims[1]-1);
89 end.z = origin->z + spacing->z*(dims[2]-1);
90
91 center.x = 0.5*(origin->x + end.x);
92 center.y = 0.5*(origin->y + end.y);
93 center.z = 0.5*(origin->z + end.z);
94
95
96 {F5_vec3_point_t minmax[2];
97 minmax[0].x = origin->x; minmax[0].y = origin->y; minmax[0].z = origin->z;
98 minmax[1].x = end.x; minmax[1].y = end.y; minmax[1].z = end.z;
99
100 F5Fset_range(f, NULL, minmax);
101 }
102
103 F5Fset_average(f, NULL, &center);
104
105 F5Fclose(f);
106
107 return f;
108}
109
110F5Path*F5Rcreate_uniform_cartesian3Dbbox(hid_t File_id, double time,
111 const char*gridname,
112 const F5_vec3_point_t*start,
113 const F5_vec3_point_t*end,
114 hsize_t dims[3],
115 const char*coordinate_system)
116{
117F5Path*f = F5Rcreate_cartesian_3D(File_id, time, gridname, coordinate_system);
118F5_vec3_float_t spacing;
119F5_vec3_point_t center;
120
121 F5Cset (f, FIBER_HDF5_POSITIONS_STRING, FIBER_REGULAR_GRID_URL "StandardCartesian/Uniform/");
122
123 spacing.x = (end->x - start->x) / (dims[0]-1);
124 spacing.y = (end->y - start->y) / (dims[1]-1);
125 spacing.z = (end->z - start->z) / (dims[2]-1);
126
127 center.x = 0.5*(start->x + end->x);
128 center.y = 0.5*(start->y + end->y);
129 center.z = 0.5*(start->z + end->z);
130
132 3, dims, F5T_COORD3_FLOAT, start, &spacing);
133
134 {
135 F5_vec3_point_t minmax[2];
136 minmax[0].x = start->x; minmax[0].y = start->y; minmax[0].z = start->z;
137 minmax[1].x = end->x; minmax[1].y = end->y; minmax[1].z = end->z;
138 F5Fset_range(f, NULL, minmax);
139 }
140 F5Fset_average(f, NULL, &center);
141
142 F5Fclose(f);
143
144 return f;
145}
146
147F5Path*F5Rcreate_curvilinear_cartesian3D(hid_t File_id, double time,
148 const char*gridname,
149 const F5_vec3_point_t*coords,
150 hsize_t dims[3],
151 const char*coordinate_system,
152 hid_t property_id)
153{
154F5Path*f = F5Rcreate_cartesian_3D(File_id, time, gridname, coordinate_system);
155
157 3, dims, F5T_COORD3_FLOAT, 0, coords, property_id);
158
159 F5Fclose(f);
160
161 return f;
162}
163
164/**
165 @note Memory to File type conversion is not supported yet!
166 @note Should better be named "save_rectilinear", since this
167 function writes data to disc, not only creates dataset entries.
168 */
169F5Path*F5Rcreate_rectilinear(hid_t File_id, double time,
170 const char*gridname,
171 const void*origin,
172 const void*spacing,
173 hsize_t*dims,
174 const char*coordinate_system,
175 hid_t property_id,
176 ...)
177{
178int i, component_count;
179F5Path*f = F5Rcreate_cartesian_3D(File_id, time, gridname, coordinate_system);
180
181hid_t Point_hid_t = f->myChart->SinglePrecision.Point_hid_t;
182int nDims = H5Tget_nmembers(Point_hid_t);
183va_list vl;
184
186 nDims, dims, Point_hid_t, origin, spacing))
187 {
188 F5close(f);
189 return NULL;
190 }
191
192 /* Init the step through the argument list */
193 va_start(vl, property_id);
194
195 component_count = 0;
196 for(i=0; i<nDims; i++)
197 {
198 hsize_t length = dims[i];
199 const void*dataPtr = va_arg(vl, const void*);
200 hid_t component_id;
201 char * name;
202 hid_t member_type;
203
204 if (!dataPtr) continue;
205 component_count++;
206
207 name = H5Tget_member_name(Point_hid_t, i);
208
209 member_type = H5Tget_member_type(Point_hid_t, i);
210
211 component_id = F5Lwrite1D(f->Field_hid, name, length, member_type, 0, dataPtr,
212 F5LTmake_enum_type(f), property_id);
213 H5Dclose(component_id);
214 H5Tclose(member_type);
215 free(name);
216 }
217
219
220/*
221 if (nDims==2)
222 F5I_add_grid(f, gridname, time, HAVE_REGULAR_CELLS2D);
223 else if (nDims==3)
224 F5I_add_grid(f, gridname, time, HAVE_REGULAR_CELLS3D);
225
226 if (component_count == nDims)
227 F5I_add_grid(f, gridname, time, HAVE_CARTESIAN_RECTILINEAR_POSITIONS);
228 else if (component_count == 0)
229 F5I_add_grid(f, gridname, time, HAVE_CARTESIAN_UNIFORM_POSITIONS);
230 else
231 F5I_add_grid(f, gridname, time, gridtype);
232*/
233
234 /* Close the Step through */
235 va_end(vl);
236
237 F5Fclose(f);
238
239 return f;
240}
241
242F5Path*F5Rcreate_rectilinear_cartesian3D(hid_t File_id, double time,
243 const char*gridname,
244 const F5_vec3_point_t*origin,
245 const F5_vec3_float_t*spacing,
246 hsize_t dims[3],
247 const char*coordinate_system,
248 hid_t property_id,
249 float*x,float*y,float*z)
250{
251 F5Path* path = F5Rcreate_rectilinear(File_id, time,
252 gridname,
253 origin,
254 spacing,
255 dims,
256 coordinate_system,
257 property_id,
258 x,y,z);
259 if (path) {
260 if (!x && !y && !z) {
261 F5Cset (path, FIBER_HDF5_POSITIONS_STRING, FIBER_REGULAR_GRID_URL "StandardCartesian/Uniform/");
262 } else if (z && !x && !y) {
263 F5Cset (path, FIBER_HDF5_POSITIONS_STRING, FIBER_REGULAR_GRID_URL "StandardCartesian/zStacked/");
264 } else {
265 F5Cset (path, FIBER_HDF5_POSITIONS_STRING, FIBER_REGULAR_GRID_URL "StandardCartesian/Rectilinear/");
266 }
267 }
268 return path;
269}
270
271F5Path*F5Fwrite_uniform_cartesian3D(hid_t file_id, double time,
272 const char*gridname,
273 const F5_vec3_point_t*origin,
274 const F5_vec3_float_t*spacing,
275 hsize_t dims[3],
276 const char*fieldname,
277 hid_t fieldtype,
278 const void * dataPtr,
279 const char*coordinate_system, hid_t prop_id)
280{
281F5Path*f = F5Rcreate_uniform_cartesian3D(file_id, time,
282 gridname,
283 origin,
284 spacing,
285 dims,
286 coordinate_system);
287 /* write the data into the dataset */
288
289 if ( F5Fwrite(f, fieldname, 3, dims, fieldtype, 0, dataPtr, prop_id) != F5_SUCCESS)
290 {
291 F5close(f);
292 return NULL;
293 }
294 F5Cset (f, fieldname, FIBER_REGULAR_GRID_URL "StandardCartesian/Uniform/VertexCentered");
295
296 return f;
297}
298
299
300
301F5Path*F5Fwrite_uniform_cartesian3Ds(hid_t file_id, double time,
302 const char*gridname,
303 const F5_vec3_point_t*origin,
304 const F5_vec3_float_t*spacing,
305 hsize_t dims[3],
306 const char*fieldname,
307 hid_t fieldtype,
308 const void ** dataPtr,
309 const char*coordinate_system,
310 hid_t property_id)
311{
312F5Path*f = F5Rcreate_uniform_cartesian3D(file_id, time,
313 gridname,
314 origin,
315 spacing,
316 dims,
317 coordinate_system);
318
319 /* write the data into the dataset */
320
321 if (! F5Fwrites(f, fieldname, 3, dims, fieldtype, 0, dataPtr, property_id) )
322 {
323 F5close(f);
324 return NULL;
325 }
326 return f;
327}
328
329
330/* Write a bunch of data field given on the same uniform cartesian grid. */
331/* Could change this function to return an F5Path object... */
332int F5write_uniform_cartesian3Dv(hid_t file_id, double time,
333 const char*gridname,
334 const F5_vec3_point_t*origin,
335 const F5_vec3_float_t*spacing,
336 hsize_t dims[3],
337 const char*coordinate_system,
338 hid_t property_id,
339 ...)
340{
341 const char* fieldname;
342 hid_t fieldtype;
343 const void* dataPtr;
344 va_list vl;
345 int NumOfWrittenFields = 0;
346
347 /* Create the Field */
348 F5Path* f = F5Rcreate_uniform_cartesian3D(file_id, time,
349 gridname,
350 origin,
351 spacing,
352 dims,
353 coordinate_system);
354
355 /* Init the step through the argument list */
356 va_start(vl, property_id);
357
358 /* Step through the argument list */
359 for(;;)
360 {
361 /* Get the Name of the field */
362 fieldname = va_arg(vl, const char*);
363 /* Get the type of the field */
364 fieldtype = va_arg(vl, hid_t);
365 /* Get the pointer to the field */
366 dataPtr = va_arg(vl, const void*);
367
368 /* Break? */
369 if ( (fieldname == NULL) || (dataPtr == NULL) )
370 break;
371
372 /* Write the stuff */
373 F5Fwrite(f, fieldname, 3, dims, fieldtype, 0, dataPtr, property_id);
374 NumOfWrittenFields++;
375 }
376
377 /* Close the Step through */
378 va_end(vl);
379
380 /* Close the field */
381 F5close(f);
382
383 return NumOfWrittenFields;
384}
385
386
387/* Write a bunch of data field given on the same uniform cartesian grid. */
388int F5write_uniform_cartesian3Dvs(hid_t file_id, double time,
389 const char*gridname,
390 const F5_vec3_point_t*origin,
391 const F5_vec3_float_t*spacing,
392 hsize_t dims[3],
393 const char*coordinate_system,
394 hid_t property_id,
395 ...)
396{
397 const char* fieldname;
398 hid_t fieldtype;
399 const void** dataPtr;
400 va_list vl;
401 int NumOfWrittenFields = 0;
402
403 /* Create the Field */
404 F5Path* f = F5Rcreate_uniform_cartesian3D(file_id, time,
405 gridname,
406 origin,
407 spacing,
408 dims,
409 coordinate_system);
410
411 /* Init the step through the argument list */
412 va_start(vl, property_id);
413
414 /* Step through the argument list */
415 for(;;)
416 {
417 /* Get the Name of the field */
418 fieldname = va_arg(vl, const char*);
419 /* Get the type of the field */
420 fieldtype = va_arg(vl, hid_t);
421 /* Get the pointer to the field */
422 dataPtr = va_arg(vl, const void**);
423
424 /* Break? */
425 if ( (fieldname == NULL) || (dataPtr == NULL) )
426 break;
427
428 /* Write the stuff */
429 F5Fwrites(f, fieldname, 3, dims, fieldtype, 0, dataPtr, property_id);
430 NumOfWrittenFields++;
431 }
432
433 /* Close the Step through */
434 va_end(vl);
435
436 /* Close the field */
437 F5close(f);
438
439 return NumOfWrittenFields;
440}
441
442struct Dims
443{
444 int rank;
445 hsize_t*dims;
447};
448
449int F5Lget_field_dimension_and_type(hid_t Representation_hid,
450 const char*fieldname,
451 hsize_t dims[FIBER_MAX_RANK], hid_t*type_id)
452{
453/*
454 should use F5LAget_dimensions() here...
455 */
456
457 hid_t Field_id, attr_id, space_id;
458int rank = -1, i, UADims[FIBER_MAX_RANK];
459
460 H5E_BEGIN_TRY
461 Field_id = H5Dopen2(Representation_hid, fieldname, H5P_DEFAULT);
462 H5E_END_TRY
463
464 if (Field_id>0)
465 {
466 space_id = H5Dget_space(Field_id);
467 rank = H5Sget_simple_extent_dims(space_id, dims, NULL);
468 H5Sclose(space_id);
469
470 if (type_id)
471 *type_id = F5Lget_type(Field_id, 0, 0);
472
473 H5Dclose(Field_id);
474 }
475 else
476 {
477 Field_id = H5Gopen2(Representation_hid, fieldname, H5P_DEFAULT);
478
480 space_id = H5Aget_space(attr_id);
481 rank = H5Sget_simple_extent_npoints(space_id);
482
483 H5Aread(attr_id, H5T_NATIVE_INT, UADims );
484 H5Aclose(attr_id);
485 H5Sclose(space_id);
486
487 for(i=0; i<rank; i++)
488 dims[i] = UADims[i];
489
490 if (type_id)
491 *type_id = F5Lget_type(Field_id, 1, 0);
492
493 H5Gclose(Field_id);
494 }
495
496 return rank;
497}
498
499
500static herr_t search_extension(hid_t group_id, const char *member_name, void *operator_data)
501{
502struct Dims*d = (struct Dims*)operator_data;
503hid_t Rep_hid = H5Gopen2(group_id, member_name, H5P_DEFAULT);
504
505 F5printf(50, "...search_extension()...");
506
508
509 if (d->rank>1)
510 {
513 d->grid->FileIDs->perm_vector, d->rank);
515 }
516
517 H5Gclose(Rep_hid);
518 return 0;
519}
520
521
523{
524hid_t Top_id;
525struct Dims data;
526 data.grid = grid;
527
528 if (!grid->Grid_hid)
529 return -1;
530
531 if (grid->Topology_hid)
532 Top_id = grid->Topology_hid;
533 else
534 Top_id = H5Gopen2(grid->Grid_hid, FIBER_HDF5_POINTS, H5P_DEFAULT);
535
536 data.dims = dims;
537 H5Giterate(Top_id, ".", NULL, search_extension, &data);
538
539 if (!grid->Topology_hid)
540 H5Gclose( Top_id );
541
542 return data.rank;
543}
544
545F5_API F5Path*F5Rcreate_uniform_sparse( hid_t file_id, double time,
546 const char*gridname,
547 const void*origin,
548 const void*spacing,
549 hsize_t*dims,
550 const char*coordinate_system,
551 const hsize_t*sparse_idx_Ptr,
552 hsize_t sparse_size,
553 hid_t property_id )
554{
555F5Path*f = F5Rcreate_uniform_cartesian3D(file_id, time,
556 gridname,
557 (const F5_point3_float_t*)origin,
558 (const F5_vec3_float_t*)spacing,
559 dims,
560 coordinate_system);
561
562 /* write the data into the dataset, todo: code-review, how to handle rank? 3 vs 1 */
564 1, &sparse_size,
565 F5file_type(f, H5T_NATIVE_HSIZE), H5T_NATIVE_HSIZE, sparse_idx_Ptr,
567 property_id);
568
569 /*
570 // if (! F5Fwrite(f, FIBER_HDF5_SPARSE, 1, &sparse_size, H5T_NATIVE_HSIZE, 0, sparse_idx_Ptr, property_id) )
571 //{
572 // F5close(f);
573 // return NULL;
574 //}
575 */
576 return f;
577}
578
579F5_API F5Path*F5Rcreate_uniform_sparse2( hid_t file_id, double time,
580 const char*gridname,
581 const F5_vec3_double_t*origin,
582 const F5_vec3_double_t*spacing,
583 hsize_t*dims,
584 const char*coordinate_system,
585 const hsize_t*sparse_idx_Ptr,
586 hsize_t sparse_size,
587 hid_t property_id )
588{
589F5Path*f = F5Rcreate_cartesian_nD(file_id, time,
590 gridname, 1, coordinate_system);
591
592 if (! F5Fwrite(f, FIBER_HDF5_SPARSE, 1, &sparse_size, H5T_NATIVE_HSIZE, 0, sparse_idx_Ptr, property_id) )
593 {
594 // F5close(f);
595 // return NULL;
596 }
597
598 assert( F5Fset_attribute( f, FIBER_UNIFORMARRAY_BASE_ATTRIBUTE, origin, 3, H5T_NATIVE_DOUBLE, 0 ) );
599 assert( F5Fset_attribute( f, FIBER_UNIFORMARRAY_DELTA_ATTRIBUTE, spacing, 3, H5T_NATIVE_DOUBLE, 0 ) );
600 assert( F5Fset_attribute( f, FIBER_UNIFORMARRAY_ELEMENTS_ATTRIBUTE, dims, 3, H5T_NATIVE_HSIZE, 0 ) );
601
602 return f;
603}
604
605
606#if 0
607F5_API hid_t F5BgetUniformCartesianGridVertexData3D(hid_t SliceID,
608 const char*gridname,
609 const char*fieldname,
610 F5_vec3_float_t*bbox_min, F5_vec3_float_t*bbox_max,
611 int dims[3])
612{
613hid_t G_id, T_id, R_id, D_id;
614
615 G_id = H5Gopen2(SliceID, gridname, H5P_DEFAULT);
616 if (G_id<0)
617 {
618 printf("F5B: No Grid `%s'!\n", gridname);
619 return -1;
620 }
621
622 T_id = H5Gopen2(G_id, FIBER_HDF5_POINTS, H5P_DEFAULT );
623 H5Gclose(G_id);
624 if (T_id<0)
625 {
626 printf("F5B: No Vertex information on Grid `%s'!\n", gridname);
627 return -1;
628 }
629
630 R_id = H5Gopen2(T_id, "Standard Cartesian Chart 3D", H5P_DEFAULT);
631 H5Gclose(T_id);
632 if (R_id<0)
633 {
634 printf("F5B: No representation in the standard cartesian chart of Grid Vertices from `%s'!\n", gridname);
635 return -1;
636 }
637
638 D_id = H5Dopen2(R_id, fieldname, H5P_DEFAULT);
639 H5Gclose(R_id);
640 if (D_id<0)
641 {
642 printf("F5B: No Vertex dataset `%s' on Grid `%s'!\n", fieldname, gridname);
643 return -1;
644 }
645
646{
647hid_t space_id = H5Dget_space(D_id);
648
649hsize_t hdims[11];
650int nD = H5Sget_simple_extent_dims(space_id, hdims, NULL);
651
652 H5Sclose(space_id);
653
654 if (nD!=3)
655 {
656 H5Dclose(D_id);
657 return -1;
658 }
659
660 dims[0] = hdims[0];
661 dims[1] = hdims[1];
662 dims[2] = hdims[2];
663}
664
665 bbox_min->x =-1;
666 bbox_min->y =-1;
667 bbox_min->z =-1;
668
669 bbox_max->x = 1;
670 bbox_max->y = 1;
671 bbox_max->z = 1;
672
673
674 return D_id;
675}
676#endif
677
hsize_t * F5B_permute_dimensions(hsize_t *target_dims, int rank, const hsize_t *source_dims, int perm_vector[FIBER_MAX_RANK], int perm_vector_size)
Definition F5Bchart.c:72
hid_t F5file_type(F5Path *fpath, hid_t fieldtype)
Definition F5Bchart.c:941
F5_API int F5Cset(F5Path *fpath, const char *fieldname, const char *content_type)
F5_API int F5Fset_range(F5Path *f, const char *fragment_name, const void *minmax)
Definition F5F.c:1737
F5_API int F5Fwrites(F5Path *fpath, const char *fieldname, int rank, hsize_t *dims, hid_t fieldtype, hid_t memtype, const void **dataPtr, hid_t property_id)
Definition F5F.c:690
@ F5_SUCCESS
Definition F5F.h:226
F5_API int F5Fset_average(F5Path *f, const char *fragment_name, const void *avg)
Definition F5Fmeta.c:808
F5_API int F5Fset_attribute(F5Path *f, const char *attribute_name, const void *data, hsize_t N, hid_t mem_type_id, int force)
Definition F5Fmeta.c:216
hid_t F5LTmake_enum_type(F5Path *fpath)
Definition F5LT.c:179
H5Tclose(type_id)
name
Definition F5P.c:82
free(name)
#define F5_API
Definition F5WinDLLApi.h:11
F5_point3f_t F5_vec3_point_t
#define F5T_COORD3_FLOAT
#define FIBER_UNIFORMARRAY_DELTA_ATTRIBUTE
Definition F5defs.h:159
#define FIBER_HDF5_SPARSE
Definition F5defs.h:65
#define FIBER_MAX_RANK
Definition F5defs.h:105
#define FIBER_UNIFORMARRAY_ELEMENTS_ATTRIBUTE
Definition F5defs.h:157
#define FIBER_UNIFORMARRAY_BASE_ATTRIBUTE
Definition F5defs.h:158
#define FIBER_HDF5_POINTS
Definition F5defs.h:55
#define FIBER_FIELD_DATASPACE_DIMENSIONS_ATTRIBUTE
Definition F5defs.h:153
#define FIBER_HDF5_POSITIONS_STRING
Definition F5defs.h:63
void F5I_add_field(F5Path *fpath, const char *fieldname)
Definition F5private.c:178
int F5printf_indent
Definition F5private.c:349
#define F5printf(verbosity,...)
Definition F5private.h:60
F5Path * F5Rcreate_uniformd(hid_t File_id, double time, const char *gridname, const void *origin, const void *spacing, hsize_t *dims, const char *coordinate_system)
Definition F5uniform.c:51
F5Path * F5Rcreate_uniformf(hid_t File_id, double time, const char *gridname, const void *origin, const void *spacing, hsize_t *dims, const char *coordinate_system)
Definition F5uniform.c:29
#define FIBER_REGULAR_GRID_URL
Definition F5uniform.h:133
F5_API int F5Fwrite_linear(F5Path *fpath, const char *fieldname, int rank, hsize_t *dims, hid_t fieldtype, const void *base, const void *delta)
Definition F5F.c:1464
void F5Fclose(F5Path *f)
Definition F5F.c:92
F5ErrorCode F5Fwrite(F5Path *fpath, const char *fieldname, int rank, hsize_t *dims, hid_t fieldtype, hid_t memtype, const void *dataPtr, hid_t property_id)
Definition F5F.c:467
hid_t F5Lwrite(hid_t R_id, const char *fieldname, int dimension, const hsize_t *dims, hid_t fieldtype, hid_t memtype, const void *dataPtr, hid_t enum_type, hid_t dcpl_id)
Definition F5L.c:357
void F5close(F5Path *f)
Definition F5B.c:186
int F5Lget_field_dimension_and_type(hid_t Representation_hid, const char *fieldname, hsize_t dims[FIBER_MAX_RANK], hid_t *type_id)
Definition F5uniform.c:449
hid_t F5Lget_type(hid_t Field_hid, int FieldIDisGroup, hid_t fapl_id)
Definition F5L.c:173
hid_t F5Lwrite1D(hid_t R_id, const char *fieldname, hsize_t nElements, hid_t fieldtype, hid_t memtype, const void *dataPtr, hid_t enum_type, hid_t property_id)
Definition F5L.c:408
F5Path * F5Rcreate_cartesian_nD(hid_t File_id, double time, const char *gridname, int Dims, const char *coordinate_system)
Definition F5R.c:116
F5Path * F5Rcreate_cartesian_3D(hid_t File_id, double time, const char *gridname, const char *coordinate_system)
Definition F5R.c:135
hid_t F5Aopen_name(hid_t location, const char *name)
Definition F5A.c:34
#define H5Gclose(x)
Definition F5X.h:144
F5Path * F5Rcreate_curvilinear_cartesian3D(hid_t File_id, double time, const char *gridname, const F5_vec3_point_t *coords, hsize_t dims[3], const char *coordinate_system, hid_t property_id)
Definition F5uniform.c:147
F5Path * F5Rcreate_rectilinear(hid_t File_id, double time, const char *gridname, const void *origin, const void *spacing, hsize_t *dims, const char *coordinate_system, hid_t property_id,...)
Definition F5uniform.c:169
int F5get_extension(F5Path *grid, hsize_t dims[FIBER_MAX_RANK])
Definition F5uniform.c:522
F5Path * F5Rcreate_rectilinear_cartesian3D(hid_t File_id, double time, const char *gridname, const F5_vec3_point_t *origin, const F5_vec3_float_t *spacing, hsize_t dims[3], const char *coordinate_system, hid_t property_id, float *x, float *y, float *z)
Definition F5uniform.c:242
F5Path * F5Rcreate_uniform_cartesian3Dbbox(hid_t File_id, double time, const char *gridname, const F5_vec3_point_t *start, const F5_vec3_point_t *end, hsize_t dims[3], const char *coordinate_system)
Definition F5uniform.c:110
int F5write_uniform_cartesian3Dvs(hid_t file_id, double time, const char *gridname, const F5_vec3_point_t *origin, const F5_vec3_float_t *spacing, hsize_t dims[3], const char *coordinate_system, hid_t property_id,...)
Definition F5uniform.c:388
F5_API F5Path * F5Rcreate_uniform_sparse2(hid_t file_id, double time, const char *gridname, const F5_vec3_double_t *origin, const F5_vec3_double_t *spacing, hsize_t *dims, const char *coordinate_system, const hsize_t *sparse_idx_Ptr, hsize_t sparse_size, hid_t property_id)
Definition F5uniform.c:579
F5Path * F5Fwrite_uniform_cartesian3Ds(hid_t file_id, double time, const char *gridname, const F5_vec3_point_t *origin, const F5_vec3_float_t *spacing, hsize_t dims[3], const char *fieldname, hid_t fieldtype, const void **dataPtr, const char *coordinate_system, hid_t property_id)
Definition F5uniform.c:301
F5Path * F5Fwrite_uniform_cartesian3D(hid_t file_id, double time, const char *gridname, const F5_vec3_point_t *origin, const F5_vec3_float_t *spacing, hsize_t dims[3], const char *fieldname, hid_t fieldtype, const void *dataPtr, const char *coordinate_system, hid_t prop_id)
Definition F5uniform.c:271
int F5write_uniform_cartesian3Dv(hid_t file_id, double time, const char *gridname, const F5_vec3_point_t *origin, const F5_vec3_float_t *spacing, hsize_t dims[3], const char *coordinate_system, hid_t property_id,...)
Definition F5uniform.c:332
F5_API F5Path * F5Rcreate_uniform_sparse(hid_t file_id, double time, const char *gridname, const void *origin, const void *spacing, hsize_t *dims, const char *coordinate_system, const hsize_t *sparse_idx_Ptr, hsize_t sparse_size, hid_t property_id)
Definition F5uniform.c:545
F5Path * F5Rcreate_uniform_cartesian3D(hid_t File_id, double time, const char *gridname, const F5_vec3_point_t *origin, const F5_vec3_float_t *spacing, hsize_t dims[3], const char *coordinate_system)
Definition F5uniform.c:73
F5_ChartPrecisionTypes DoublePrecision
Definition F5Bchart.h:148
int perm_vector[FIBER_MAX_RANK]
Definition F5Bchart.h:141
F5_ChartPrecisionTypes SinglePrecision
Definition F5Bchart.h:147
F5Path * grid
Definition F5uniform.c:446
int rank
Definition F5uniform.c:444
hsize_t * dims
Definition F5uniform.c:445
hid_t Grid_hid
Definition F5Path.h:53
ChartDomain_IDs * FileIDs
Definition F5Path.h:35
hid_t Representation_hid
Definition F5Path.h:58
hid_t Field_hid
Definition F5Path.h:59
hid_t Topology_hid
Definition F5Path.h:57
ChartDomain_IDs * myChart
Definition F5Path.h:33