FiberBundleHDF5  FiberHDF5 Documentation, Revision 2026
High-Performance Fiber Bundle Data Model for Scientific Visualization
Loading...
Searching...
No Matches
F5R.c
Go to the documentation of this file.
1#include "F5R.h"
2#include "F5B.h"
3#include "F5X.h"
4#include "F5A.h"
5#include "F5private.h"
6
7#include <string.h>
8#include <assert.h>
9
10int F5Rset_timestep(F5Path*path, long timestep)
11{
12hid_t attr_id,
13 space_id;
14long have_timestep;
15
16 if (!path || path->Grid_hid<0)
17 {
18 F5printf(1,"F5Rset_timestep(,%ld): got invalid grid", timestep);
19 return 0;
20 }
21 if (F5Rget_timestep(path, &have_timestep) )
22 {
23 if (have_timestep==timestep)
24 return 1;
25
26 F5printf(1,"F5Rset_timestep(%ld): invalid timestep specified, "
27 "grid is already bound to %ld!", timestep, have_timestep);
28 return 0;
29 }
30
31 space_id= H5Screate(H5S_SCALAR);
32
33 attr_id = H5Acreate2(path->Grid_hid,
34 FIBER_HDF5_TIMESTEP_ATTRIB, H5T_NATIVE_LONG, space_id,
35 H5P_DEFAULT, H5P_DEFAULT);
36
37 H5Awrite(attr_id, H5T_NATIVE_LONG, &timestep);
38
39 H5Aclose(attr_id);
40 H5Sclose(space_id);
41 return 1;
42}
43
44long*F5Rget_timestep(F5Path*path, long*timestep)
45{
46hid_t attr_id,
47 space_id;
48
49 if (!path || path->Grid_hid<0 || !timestep)
50 {
51 F5printf(1,"F5Rget_timestep(): got invalid grid or parameter.");
52 return NULL;
53 }
54
55 H5E_BEGIN_TRY
57 H5E_END_TRY
58
59 if (attr_id<0)
60 return NULL;
61
62 space_id = H5Aget_space(attr_id);
63 assert( space_id >0);;
64 if (H5Sget_simple_extent_npoints(space_id) != 1)
65 return NULL;
66
67 F_H5Aread(attr_id, H5T_NATIVE_LONG, timestep, FIBER_HDF5_TIMESTEP_ATTRIB);
68
69 H5Aclose(attr_id);
70 H5Sclose(space_id);
71
72 return timestep;
73}
74
75
76/**
77 A convenience function to create a 3D cartesian chart topology.
78 To create topologies in different coordinate systems call F5LTcreate( ... ) directly.
79*/
80F5Path*F5Rcreate_coordinate_topology(hid_t File_id, const double*time,
81 const char*gridname,
82 const char*coordinate_system,
83 const char*TopologyName,
84 int IndexDepth, int SkeletonDimensionality,
85 int Dimensionality,
86 const hsize_t*refinement)
87{
88const char*cs = coordinate_system ? coordinate_system : FIBER_HDF5_DEFAULT_CHART;
89ChartDomain_IDs*ChartDomain = (strcmp(cs, FIBER_HDF5_DEFAULT_CHART)==0)
91F5Path*f;
92/*
93 if (ChartDomain == F5B_standard_cartesian_chart3D() )
94 {
95 F5printf(45, "F5Rcreate_coordinate_topology(): Using Std chart.");
96 //assert(ChartDomain->perm_vector == F5_FORTRAN_ORDER);
97 }
98 if (!ChartDomain) F5printf(45, "F5Rcreate_coordinate_topology(): No chart domain.");
99*/
100 f = F5LTcreate(File_id, time,
101 gridname,
102 ChartDomain,
104 cs,
106 IndexDepth,
107 SkeletonDimensionality, Dimensionality,
108 refinement);
109
110 if (f) F5LTmake_enum_type(f);
111
112 return f;
113}
114
115
116F5Path*F5Rcreate_cartesian_nD(hid_t File_id, double time,
117 const char*gridname,
118 int Dims,
119 const char*coordinate_system)
120{
121F5Path*myPath;
122 F5printf(3, " ---- F5Rcreate_cartesian(T=%g, grid=`%s', coordinates=`%s')",
123 time, gridname, (coordinate_system?coordinate_system:"Default coordinates"));
124
126 myPath = F5Rcreate_coordinate_topology(File_id, &time,
127 gridname,
128 coordinate_system,
130 0, Dims, Dims, 0);
132 return myPath;
133}
134
135F5Path*F5Rcreate_cartesian_3D(hid_t File_id, double time,
136 const char*gridname,
137 const char*coordinate_system)
138{
139 return F5Rcreate_cartesian_nD(File_id, time,
140 gridname, 3, coordinate_system);
141}
142
143
144
146 const char*gridname,
147 const char*coordinate_system)
148{
149 F5printf(30, "F5Rcreate_static_cartesian(grid=`%s')\n", gridname);
150 return F5Rcreate_coordinate_topology(File_id, NULL,
151 gridname,
152 coordinate_system,
154 0, 3, 3, 0);
155}
156
157/*******************************************************************/
158F5Path*F5Rcreate_triangles_as_vertices_topology(hid_t File_id, double time, const char*gridname)
159{
160F5Path*f = F5LTcreate(File_id, &time,
161 gridname,
162 F5B_standard_triangle_cells(), /* ChartDomain */
163 F5B_new_global_triangle_cells, /*F5B_new_global_cartesian_chart3D*/
166 1, /* IndexDepth */
167 2, /* Dimensionality */
168 2,
169 0 ); /* refinement */
170
171 if (f) F5LTmake_enum_type(f);
172
173 return f;
174}
175
176
177F5Path*F5Rcreate_edges_as_vertices_topology(hid_t File_id, double time, const char*gridname)
178{
179F5Path*f = F5LTcreate(File_id, &time,
180 gridname,
181 F5B_standard_edge_cells(), /* ChartDomain */
182 F5B_new_global_edge_cells, /* F5B_new_global_cartesian_chart3D*/
185 1, /* IndexDepth */
186 1, /* SkeletonDimensionality */
187 1, /* Dimensionality */
188 0); /* Refinement */
189
190 if (f) F5LTmake_enum_type(f);
191
192 return f;
193}
194
195#if 0
196F5Path*F5Rcreate_faces_as_vertices_topology(hid_t File_id, double time, const char*gridname)
197{
198F5Path*f = F5LTcreate(File_id, &time,
199 gridname,
200 F5B_standard_faces_cells(), /* ChartDomain */
201 F5B_new_global_faces_cells, /* F5B_new_global_cartesian_chart3D*/
204 1, /* IndexDepth */
205 2, /* Dimensionality */
206 0); /* Refinement */
207
208 if (f) F5LTmake_enum_type(f);
209
210 return f;
211}
212#endif
213
214F5Path*F5Rcreate_tetrahedrons_as_vertices_topology(hid_t File_id, double time, const char*gridname)
215{
216F5Path*f = F5LTcreate(File_id, &time,
217 gridname,
218 F5B_standard_tetrahedral_cells(), /* ChartDomain */
219 F5B_new_global_tetrahedral_cells, /*F5B_new_global_cartesian_chart3D*/
222 1, /* IndexDepth*/
223 3, /* int SkeletonDimensionality */
224 3, /* Dimensionality*/
225 0); /* refinement*/
226
227 if (f) F5LTmake_enum_type(f);
228
229 return f;
230}
231
232
233F5Path*F5Rcreate_hexaedrons_as_vertices_topology(hid_t File_id, double time, const char*gridname)
234{
235F5Path*f = F5LTcreate(File_id, &time,
236 gridname,
237 F5B_standard_hexahedral_cells(), /* ChartDomain */
238 F5B_new_global_hexahedral_cells, /*F5B_new_global_cartesian_chart3D*/
241 1, /* IndexDepth */
242 3, /* int SkeletonDimensionality */
243 3, /* Dimensionality */
244 0); /* refinement */
245
246 if (f) F5LTmake_enum_type(f);
247
248 return f;
249}
250
251
252
253
254
255#if 0
256F5Path*F5Rcreate_cell_topology3D(hid_t File_id, const double*time,
257 const char*gridname,
258 const char*coordinate_system,
259 const char*TopologyName,
260 int IndexDepth)
261{
262char timename[128];
263char FullTargetTname[2048];
264
265F5Path*retval = F5LTcreate(File_id, time,
266 gridname,
267 0, /* Create new refinement chart object... */
271 1,
272 3, 3,
273 0);
274 assert(0);
275
276 F5I_timegroup(time, timename, sizeof(timename) );
277
278#ifdef _MSC_VER
279 _snprintf
280#else
281 snprintf
282#endif
283 (FullTargetTname, sizeof(FullTargetTname),
284 "/%s/%s/%s",
285 timename, gridname, FIBER_HDF5_POINTS );
286
287/* TODO: Check for existing representer, and if another value exists, create unique one! */
288 F5Glink(retval->Representation_hid, H5G_LINK_SOFT, FullTargetTname, FIBER_HDF5_REPRESENTER);
289
290 return retval;
291}
292#endif
293
294
295/*******************************************************************/
296
297/*
298 Default topology name generated for topology groups.
299*/
300void TopologyName(char*name, int nlength,
301 const hsize_t*level, int Centering, int dims)
302{
303int i;
304char buf[1024];
305int L[FIBER_MAX_RANK];
306
307 assert(level);
308
309 if (!Centering)
310 {
311 strcpy(buf,"VertexLevel");
312 }
313 else
314 {
315 strcpy(buf,"CellCentering");
316 for(i=0; i<dims; i++)
317 {
318 if (Centering & (1<<i))
319 {
320 if (dims<4)
321 buf[13+i] = i["XYZ"];
322 else
323 buf[13+i] = '1';
324 }
325 else
326 buf[13+i] = '_';
327 }
328 buf[13+dims] = '\0';
329 }
330
331 assert(dims==3);
332
333
334 for(i=0; i<dims; i++)
335 L[i] = level[i];
336
337#ifdef _MSC_VER
338 _snprintf
339#else
340 snprintf
341#endif
342 (name,nlength,"%s_%dx%dx%d", buf, L[0], L[1], L[2]);
343}
344
345
346F5Path*F5Rcreate_vertex_refinement3D(hid_t File_id, double time,
347 const char*gridname,
348 const hsize_t refinement[3],
349 const char*coordinate_system)
350{
351char Tname[1024];
352 assert(refinement);
353 TopologyName(Tname, sizeof(Tname), refinement, 0,3);
354
355 return F5Rcreate_coordinate_topology(File_id, &time,
356 gridname,
357 coordinate_system,
358 Tname,
359 0, 3, 3, refinement);
360
361}
362
363/**@ingroup F5R
364 Define refinement by rational numbers.
365 Here, the vertices of the refined objects may cover fractions of the
366 coarser cells. Still, vertices have to line up exactly and no refined
367 cell may be split by the boundary of a coarser cell.
368*/
370 const char*gridname,
371 const hsize_t current_refinement[3],
372 double target_time,
373 const hsize_t target_refinement[3])
374{
375char CurrentTname[1024];
376char TargetTname[1024];
377F5Path* retval;
378char timename[128];
379char FullTargetTname[2048];
380 assert(current_refinement);
381 assert(target_refinement);
382 TopologyName(CurrentTname, sizeof(CurrentTname), current_refinement, 0,3);
383 TopologyName(TargetTname , sizeof(TargetTname) , target_refinement, 0,3);
384
385 F5printf(30, "F5Rcreate_relative_vertex_Qrefinement3D()\n");
386 retval = F5LTcreate(File_id, &time,
387 gridname,
388 0,
390 TargetTname, /* representation_name */
391 CurrentTname, /* TopologyName */
392 0, /* IndexDepth */
393 3, /* int SkeletonDimensionality, */
394 3, /* Dimensionality */
395 current_refinement); /* const hsize_t*refinement */
396
397
398 F5printf(30, "F5Rcreate_relative_vertex_Qrefinement3D() - timegroup\n");
399 F5I_timegroup(&target_time, timename, sizeof(timename) );
400#ifdef _MSC_VER
401 _snprintf
402#else
403 snprintf
404#endif
405 (FullTargetTname, sizeof(FullTargetTname),
406 "/%s/%s/%s",
407 timename, gridname, TargetTname );
408
409/* TODO: Check for existing representer, and if another value exists, create unique one! */
410 F5Glink(retval->Representation_hid, H5G_LINK_SOFT, FullTargetTname, FIBER_HDF5_REPRESENTER);
411
412 F5printf(30, "~F5Rcreate_relative_vertex_Qrefinement3D()\n");
413
414 return retval;
415}
416
417/**@ingroup F5R
418 Define refinement by integer numbers.
419 Here, the vertices of the refined objects have to match up exactly
420 with the vertices of the coarse levels. It is only possible to
421 refine entire cells on the coarse grid.
422 */
424 const char*gridname,
425 const hsize_t current_refinement[3],
426 double target_time,
427 const hsize_t target_refinement[3])
428{
429char CurrentTname[1024];
430char TargetTname[1024];
431F5Path* retval;
432char timename[128];
433char FullTargetTname[2048];
434 assert(current_refinement);
435 assert(target_refinement);
436 TopologyName(CurrentTname, sizeof(CurrentTname), current_refinement, 0,3);
437 TopologyName(TargetTname , sizeof(TargetTname) , target_refinement, 0,3);
438
439 retval = F5LTcreate(File_id, &time,
440 gridname,
441 0,
443 TargetTname, /* representation_name */
444 CurrentTname, /* TopologyName */
445 0, /* IndexDepth */
446 3, /* int SkeletonDimensionality */
447 3, /* Dimensionality */
448 current_refinement); /* const hsize_t*refinement */
449
450
451 F5I_timegroup(&target_time, timename, sizeof(timename) );
452#ifdef _MSC_VER
453 _snprintf
454#else
455 snprintf
456#endif
457 (FullTargetTname, sizeof(FullTargetTname),
458 "/%s/%s/%s",
459 timename, gridname, TargetTname );
460
461/* TODO: Check for existing representer, and if another value exists, create unique one! */
462 F5Glink(retval->Representation_hid, H5G_LINK_SOFT, FullTargetTname, FIBER_HDF5_REPRESENTER);
463
464 return retval;
465}
466
467/**\ingroup F5R
468 Treat some refinement level as the default level for refinement-unaware
469 readers.
470
471 Creates a symbolic link from some refinement level on vertices to appear
472 as the default points topology.
473 @param grid A valid F5Path object pointing to some grid.
474 @param target_refinement The refinement level that shall be visible as default.
475 @note Currently only 3D refinements are supported.
476 @note If a point topology already exists, it will not be touched.
477 */
479 const hsize_t target_refinement[3])
480{
481char TargetTname[1024];
482 if (!grid) return -1;
483 if (grid->Grid_hid<1) return -2;
484 if (!target_refinement) return -3;
485 TopologyName(TargetTname, sizeof(TargetTname), target_refinement, 0,3);
486 {
487 F5Glink(grid->Grid_hid, H5G_LINK_SOFT, TargetTname, FIBER_HDF5_POINTS);
488 }
489 return 0;
490}
491
492
493
494/*******************************************************************/
495
496/*
497 Image/Viewer/Positions {xyz}
498 /Intensity {I}
499
500 Image@2x2x2/Image/Positions {222}
501 /Intensity {I}
502
503 Image@4x4x4/Image@2x2x2/Positions {222}
504 /Image /Positions {444}
505
506 */
507static
508void F5Rcreate_sampling(F5Path*Topology, const hsize_t*downsampling,
509 int IndexDepthChange,
510 char NameSeparator)
511{
512char oldTopologyName[2048], newTopologyName[2048];
513char *sep;
514hid_t Top_id, space_id, Rep_id, F_id, pos_fieldtype;
515hsize_t refinement[FIBER_MAX_RANK], extent[FIBER_MAX_RANK],
516 total_refinement[FIBER_MAX_RANK];
517int polynom_order[FIBER_MAX_RANK];
518const void*(refinement_coeffs_ptr[FIBER_MAX_RANK]);
519hsize_t refinement_coeffs[FIBER_MAX_RANK][2];
520int rank, i;
521int component_map[FIBER_MAX_RANK];
522int IndexDepth = F5LTget_index_depth(Topology->Topology_hid);
523 IndexDepth += IndexDepthChange;
524
525 H5Iget_name(Topology->Topology_hid, oldTopologyName, sizeof(oldTopologyName) );
526 strcpy(newTopologyName, oldTopologyName);
527 sep = strrchr(newTopologyName, NameSeparator);
528 if (sep) *sep = 0;
529 sep = newTopologyName + strlen(newTopologyName);
530 *sep++ = '@';
531
532 space_id = F5Tget_space(Topology);
533 if (space_id < 0)
534 {
535 puts("void F5Rcreate_sampling(): not a regular topology");
536 return;
537 }
538
539 rank = H5Sget_simple_extent_dims(space_id, extent, NULL);
540 H5Sclose(space_id);
541
543
544 pos_fieldtype = H5Tcreate(H5T_COMPOUND, rank*sizeof(int) );
545
546 for(i=0; i<rank; i++)
547 {
548 char rank_name[2];
549
550 component_map[i] = i;
551 polynom_order[i] = 1;
552 total_refinement[i] = refinement[i]*downsampling[i];
553 extent[i] /= downsampling[i];
554
555 refinement_coeffs[i][0] = 0;
556 refinement_coeffs[i][1] = downsampling[i];
557 refinement_coeffs_ptr[i] = refinement_coeffs[i];
558
559 rank_name[0] = '0' + i;
560 rank_name[1] = 0;
561 H5Tinsert(pos_fieldtype, rank_name, i*sizeof(int), H5T_NATIVE_INT);
562
563 sprintf(sep, "%u", (unsigned)(total_refinement[i]) );
564 sep += strlen(sep);
565 if (i<rank-1) *sep++ = 'x';
566 }
567 *sep = 0;
568
569 Top_id = F5LTcreate_topology(Topology->Grid_hid, newTopologyName,
570 IndexDepth, rank, rank, total_refinement);
571
572 Rep_id = F5Gappend(Top_id, oldTopologyName);
573 F_id = F5LwriteX(Rep_id, FIBER_HDF5_POSITIONS_STRING, rank, extent,
574 pos_fieldtype, pos_fieldtype,
575 refinement_coeffs_ptr, polynom_order,
576 component_map,
578 Topology->GlobalChart_hid);
579
580 H5Tclose(pos_fieldtype);
581
582 F5Fclose(Topology);
583 H5Gclose(Topology->Representation_hid);
584 H5Gclose(Topology->Topology_hid);
585 Topology->Topology_hid = Top_id;
586 Topology->Representation_hid = Rep_id;
587 Topology->Field_hid = F_id;
588}
589
590void F5Rcreate_downsampling(F5Path*Topology, const hsize_t*downsampling)
591{
592 F5Rcreate_sampling(Topology, downsampling, +1, '@');
593}
594
595/*
596 Image/Viewer/Positions {xyz}
597 /Intensity {I}
598
599 Image:2x2x2/Image/Positions {222}
600 /Intensity {I}
601
602 Image:4x4x4/Image:2x2x2/Positions {222}
603 /Image /Positions {444}
604
605 */
606
607void F5Rcreate_subsampling(F5Path*Topology, const hsize_t*subsampling)
608{
609 F5Rcreate_sampling(Topology, subsampling, 0, ':');
610}
611
612
613
F5_API ChartDomain_IDs * F5B_new_global_cartesian_chart3D()
hid_t F5LTmake_enum_type(F5Path *fpath)
Definition F5LT.c:179
hid_t F5LwriteX(hid_t R_id, const char *fieldname, int rank, const hsize_t *dims, hid_t fieldtype, hid_t memtype, const void *const *dataPtr, const int *polynom_order, const int component_map[], hid_t property_id, hid_t ProcIDLocation)
Definition F5L.c:1202
#define F5P_DEFAULT
Definition F5L.h:20
H5Tclose(type_id)
name
Definition F5P.c:82
F5Path * F5Rcreate_static_cartesian_3D(hid_t File_id, const char *gridname, const char *coordinate_system)
Definition F5R.c:145
void TopologyName(char *name, int nlength, const hsize_t *level, int Centering, int dims)
Definition F5R.c:300
ChartDomain_IDs * F5B_new_global_triangle_cells()
ChartDomain_IDs * F5B_new_global_tetrahedral_cells()
ChartDomain_IDs * F5B_new_global_hexahedral_cells()
ChartDomain_IDs * F5B_new_global_edge_cells()
F5_API ChartDomain_IDs * F5B_standard_tetrahedral_cells()
F5_API ChartDomain_IDs * F5B_standard_hexahedral_cells()
F5_API ChartDomain_IDs * F5B_standard_triangle_cells()
F5_API ChartDomain_IDs * F5B_standard_edge_cells()
#define FIBER_HDF5_REPRESENTER
Definition F5defs.h:114
#define FIBER_MAX_RANK
Definition F5defs.h:105
#define FIBER_HDF5_DEFAULT_CHART
Definition F5defs.h:74
#define FIBER_HDF5_FACES
Definition F5defs.h:60
#define FIBER_HDF5_TIMESTEP_ATTRIB
Definition F5defs.h:53
#define FIBER_HDF5_POINTS
Definition F5defs.h:55
#define FIBER_HDF5_REFINEMENT_INFO
Definition F5defs.h:72
#define FIBER_HDF5_CELLS
Definition F5defs.h:57
#define FIBER_HDF5_EDGES
Definition F5defs.h:58
#define FIBER_HDF5_POSITIONS_STRING
Definition F5defs.h:63
herr_t F_H5Aread(hid_t attr_id, hid_t mem_type_id, void *buf, const char *name)
Definition F5private.c:332
herr_t F5Glink(hid_t loc_id, H5G_link_t link_type, const char *current_name, const char *new_name)
Definition F5private.c:162
int F5printf_indent
Definition F5private.c:349
#define F5printf(verbosity,...)
Definition F5private.h:60
hid_t F5Tget_space(F5Path *f)
Definition F5F.c:167
void F5Fclose(F5Path *f)
Definition F5F.c:92
int F5LAget_dimensions(hid_t Field_id, const char *aname, hsize_t dims[FIBER_MAX_RANK])
Definition F5A.c:233
F5_API hid_t F5LTcreate_topology(hid_t Grid_hid, const char *TopologyName, int IndexDepth, int SkeletonDimensionality, int DataspaceDimensionality, const hsize_t *refinement)
Definition F5LT.c:329
F5_API int F5LTget_index_depth(hid_t Top_hid)
Definition F5LT.c:21
F5Path * F5LTcreate(hid_t File_id, const double *time, const char *gridname, ChartDomain_IDs *ChartDomain, ChartDomain_IDs *coord_creator(), const char *coordinate_system, const char *TopologyName, int IndexDepth, int SkeletonDimensionality, int Dimensionality, const hsize_t *refinement)
Definition F5LT.c:712
F5Path * F5Rcreate_relative_vertex_Qrefinement3D(hid_t File_id, double time, const char *gridname, const hsize_t current_refinement[3], double target_time, const hsize_t target_refinement[3])
Definition F5R.c:369
F5Path * F5Rcreate_vertex_refinement3D(hid_t File_id, double time, const char *gridname, const hsize_t refinement[3], const char *coordinate_system)
Definition F5R.c:346
F5Path * F5Rcreate_coordinate_topology(hid_t File_id, const double *time, const char *gridname, const char *coordinate_system, const char *TopologyName, int IndexDepth, int SkeletonDimensionality, int Dimensionality, const hsize_t *refinement)
Definition F5R.c:80
F5_API F5Path * F5Rcreate_faces_as_vertices_topology(hid_t File_id, double time, const char *gridname)
F5Path * F5Rcreate_triangles_as_vertices_topology(hid_t File_id, double time, const char *gridname)
Definition F5R.c:158
F5Path * F5Rcreate_cartesian_nD(hid_t File_id, double time, const char *gridname, int Dims, const char *coordinate_system)
Definition F5R.c:116
void F5Rcreate_subsampling(F5Path *Topology, const hsize_t *subsampling)
Definition F5R.c:607
F5Path * F5Rcreate_hexaedrons_as_vertices_topology(hid_t File_id, double time, const char *gridname)
Definition F5R.c:233
void F5Rcreate_downsampling(F5Path *Topology, const hsize_t *downsampling)
Definition F5R.c:590
long * F5Rget_timestep(F5Path *path, long *timestep)
Definition F5R.c:44
F5Path * F5Rcreate_relative_vertex_Irefinement3D(hid_t File_id, double time, const char *gridname, const hsize_t current_refinement[3], double target_time, const hsize_t target_refinement[3])
Definition F5R.c:423
F5Path * F5Rcreate_tetrahedrons_as_vertices_topology(hid_t File_id, double time, const char *gridname)
Definition F5R.c:214
F5Path * F5Rcreate_edges_as_vertices_topology(hid_t File_id, double time, const char *gridname)
Definition F5R.c:177
int F5Rlink_default_vertex_topology(F5Path *grid, const hsize_t target_refinement[3])
Definition F5R.c:478
int F5Rset_timestep(F5Path *path, long timestep)
Definition F5R.c:10
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
F5_API char * F5I_timegroup(const double *time, char *destbuf, size_t len)
Definition F5Bslice.c:90
ChartDomain_IDs * F5B_new_rational_regular_domain3D()
ChartDomain_IDs * F5B_standard_cartesian_chart3D()
ChartDomain_IDs * F5B_new_integer_regular_domain3D()
#define H5Gclose(x)
Definition F5X.h:144
hid_t F5Gappend(hid_t loc_id, const char *name)
Definition F5X.c:59
hid_t GlobalChart_hid
Definition F5Path.h:54
hid_t Grid_hid
Definition F5Path.h:53
hid_t Representation_hid
Definition F5Path.h:58
hid_t Field_hid
Definition F5Path.h:59
hid_t Topology_hid
Definition F5Path.h:57