27 F5printf(5,
" *Warning* F5LTget_index_depth() could not find index depth attribute!");
38 F5printf(5,
" *Warning* F5LTget_F5LTget_skeleton_dimensionality() could not find skeleton dimensionality,setting unknown -1");
46int current_rank, Mrank = -1;
53 F5printf(30,
"F5LTset_dataspace(,rank=%d,)", rank);
58 F5printf(30,
"F5LTset_dataspace(,%d,): INVALID FILE: RANK attribute is not integer - cannot set dataspace!", rank);
67 F5printf(0,
"F5LTset_dataspace(,%d,): Dimensions %dx%dx%dx%d incompatible with RANK attribute %d - inconsistent dataspace!",
68 rank, (
int)dims[0],(
int)dims[1],(
int)dims[2],(
int)dims[3],
71 F5printf(0,
"F5LTset_dataspace(,%d,): Dimensions incompatible with RANK attribute %d - inconsistent dataspace!", rank, Mrank);
84 if (rank != current_rank)
86 puts(
"F5LTset_dataspace(): Set DATAPACE: Inconsistent rank with DATASPACE_DIMENSIONS!");
92 if (current_dims[i] != dims[i])
94 F5printf(5,
"F5LTset_dataspace(,rank=%d,): new dimensions[%d] is %d, but already set to %d in the file as %dx%dx%dx%d - aborting.",
95 rank, i, (
int)(current_dims[i]), (
int)(dims[i]),
96 rank>0?(
int)dims[0]:1, rank>1?(
int)dims[1]:1, rank>2?(
int)dims[2]:1, rank>3?(
int)dims[3]:1);
100 F5printf(5,
"F5LTset_dataspace(,rank=%d,): dimensions are ok.", rank);
104 for(i=0; i<rank; i++)
108 F5printf(10,
"F5LTset_dataspace(,rank=%d,): do NOT set new topology dimensions, because dims[%d]=%d\n", rank, i, (
int)dims[i] );
115 F5printf(30,
"F5LTset_dataspace(,rank=%d,): set new dimensions to skeleton as %dx%dx%dx%d.", rank,
116 rank>0?(
int)dims[0]:1, rank>1?(
int)dims[1]:1, rank>2?(
int)dims[2]:1, rank>3?(
int)dims[3]:1);
123int current_rank, Mrank;
126 F5printf(30,
"F5LTexpand_dataspace(,%d,)", rank);
133 F5printf(30,
"F5LTexpand_dataspace(,%d,): INVALID FILE: RANK attribute is not integer - cannot set dataspace!", rank);
140 F5printf(30,
"F5LTexpand_dataspace(,%d,): Dimensions incompatible with RANK attribute %d - inconsistent dataspace!", rank, Mrank);
141 puts(
"Set DATAPACE: Inconsistent rank!");
152 if (rank != current_rank)
154 puts(
"Set DATAPACE: Inconsistent rank!");
158 for(i=0; i<rank; i++)
160 if (current_dims[i] < dims[i])
161 current_dims[i] = dims[i];
165 for(i=0; i<rank; i++)
166 current_dims[i] = dims[i];
169 F5printf(30,
"F5LTexpand_dataspace(,rank=%d,): expand dimensions of topology.", rank);
171 for(i=0; i<rank; i++)
172 dims[i] = current_dims[i];
181 if (!fpath)
return 0;
185 F5printf(30,
" F5LTmake_enum_type() - save type.");
187 F5printf(30,
" F5LTmake_enum_type() - DONE saving type.");
200 if (!gridname || !refinement)
return 0;
202 GridInfo =
F5Gappend(GridsTable, gridname);
222 if (!gridname || !refinement)
return 0;
224 GridInfo =
F5Gappend(GridsTable, gridname);
228 snprintf(RefinementAttributeName,
sizeof(RefinementAttributeName),
244 const hsize_t*refinement)
249int CurrentDimensionality, i;
253 F5printf(30,
"int F5LTset_maximal_grid_refinement(F5Path*fpath,%s, %d, %p)\n", gridname, Dimensionality, refinement);
257 F5printf(35,
"F5LTset_maximal_grid_refinement(f->ContentsGroup_hid, gridname, Dimensionality, refinement); - NO GRIDNAME");
262 F5printf(35,
"F5LTset_maximal_grid_refinement(f->ContentsGroup_hid, gridname, Dimensionality, refinement); - NO REFINEMENT");
267 GridInfo =
F5Gappend(GridsTable, gridname);
271 snprintf(RefinementAttributeName,
sizeof(RefinementAttributeName),
275 CurrentDimensionality =
F5LAget_dimensions(GridInfo, RefinementAttributeName, CurrentRefinement );
277 if (CurrentDimensionality<1)
279 F5printf(35,
"F5LTset_maximal_grid_refinement(f->ContentsGroup_hid, gridname, Dimensionality, refinement); - SAVE NEW %d",
280 (
int)refinement[0] );
287 if (CurrentDimensionality==Dimensionality)
289 int UpdateRefinement = 0;
291 for(i=0; i<CurrentDimensionality; i++)
293 if (CurrentRefinement[i] < refinement[i] )
295 UpdateRefinement = 1;
296 CurrentRefinement[i] = refinement[i];
300 if (UpdateRefinement)
302 F5printf(35,
"F5LTset_maximal_grid_refinement(f->ContentsGroup_hid, gridname, Dimensionality, refinement); - UPDATE to %d",
303 (
int)CurrentRefinement[0] );
308 F5printf(35,
"F5LTset_maximal_grid_refinement(f->ContentsGroup_hid, gridname, Dimensionality, refinement); - NO UPDATE REQUIRED for %d",
309 (
int)CurrentRefinement[0] );
315 F5printf(0,
"int F5LTset_maximal_grid_refinement(F5Path*fpath,%s, %dD, []): New refinement dimensions do not match stored ones (stored: %dD) - NOT UPDATED\n",
316 gridname, Dimensionality, CurrentDimensionality );
332 int SkeletonDimensionality,
333 int DataspaceDimensionality,
334 const hsize_t*refinement)
338 F5printf(0,
"F5LTcreate_topology() - invalid Grid HDF5 ID, file not open?");
350 assert(Topology_hid>0);
352 F5printf(30,
"F5LTcreate_topology(%s)<depth=%d>, rank=%d (using dataspace of rank %d)",
353 TopologyName, IndexDepth, SkeletonDimensionality, DataspaceDimensionality);
361 puts(
"CANNOT save index depth");
368 puts(
"CANNOT save dimensionality");
373 if (DataspaceDimensionality>0)
377 F5printf(3,
"F5LTcreate_topology(%s)<depth=%d>, rank=%dD: CANNOT SAVE RANK - aborted, more info with F5_VERBOSITY=10 to 50"
384 if( SkeletonDimensionality > 0 && refinement )
388 F5printf(3,
"F5LTcreate_topology(%s)<depth=%d>, rank=%dD: CANNOT SAVE REFINEMENT - aborted",
TopologyName, IndexDepth, DataspaceDimensionality);
394 F5printf(30,
"~F5LTcreate_topology(%s)<depth=%d>, %dD",
TopologyName, IndexDepth, DataspaceDimensionality);
415 const char*coordinate_system,
417 int IndexDepth,
int SkeletonDimensionality,
419 const hsize_t*refinement)
424 F5printf(1,
"F5LTcreateV(): Invalid File!");
428 F5printf(30,
"**F5LTcreateV(grid=`%s', topology=`%s')<%d>, Repr=%dD, [%s] %s %s",
429 gridname,
TopologyName, IndexDepth, Dimensionality, coordinate_system,
430 ChartDomain?
" Chart Domain given":
"No chart Domain",
431 coord_creator?
" Coordinate Creator available":
" No Coordinate Creator" );
433 if (!gridname || !gridname[0])
444 if (Dimensionality<0)
446 F5printf(0,
"**F5LTcreateV(grid=`%s', topology=`%s')<%d>, %dD, [%s] - CANNOT create skeleton entry because dimensionality is lesser than zero!",
447 gridname,
TopologyName, IndexDepth, Dimensionality, coordinate_system);
456 assert(coordinate_system);
474 F5printf(30,
"F5LTcreate(): append gridname `%s'\n", gridname);
525 IndexDepth, SkeletonDimensionality,
531 F5printf(0,
"**F5LTcreateV(grid=`%s', topology=`%s')<%d>, %dD, [%s] Could not create Skeleton, different dataspace properties found in file, use F5_VERBOSITY=3 for more details.",
532 gridname,
TopologyName, IndexDepth, Dimensionality, coordinate_system);
543 assert(coordinate_system);
576 F5printf(31,
" increment chart domain references");
580 else if (coord_creator)
583 F5printf(31,
" using new coordinate creator");
584 f->
myChart = coord_creator(udata);
589 F5printf(31,
" append %s\n", coordinate_system);
592 F5printf(0,
" no chart created, coordinate_system is %s", coordinate_system);
596 F5printf(1,
"F5 On Grid [%s] creating a Topological Skeleton [%s] without coordinates and no chart domain [%s], this might be a relative representation.",
604 hid_t GlobalChartAnchor_hid;
608 strcat(chart_anchor,
"/");
609 strcat(chart_anchor, coordinate_system);
623 if (coordinate_system &&
F5Gexist(Domain_hid, coordinate_system) )
625 F5printf(10,
"F5LTcreate(): Coordinate system %s already exists in domain %s, read global chart ID's...",
631 F5printf(10,
"~F5LTcreate() got data from file.");
638 F5printf(10,
"F5LTcreate(): Coordinate domain not found, creating file entry.");
642 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
647 F5printf(10,
"F5LTcreate(): Coordinate domain not found, creating file entry. Done!");
649 GlobalChartAnchor_hid = H5Gcreate2(Domain_hid, coordinate_system,
650 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
666 F5Glink(GlobalChartAnchor_hid, H5G_LINK_HARD,
675 F5printf(1,
"F5 Creating a Topological %d-dimensional Skeleton of Index Depth=%d, "
676 "Info - No chart used for %s, seems to be a relative representation in [%s]"
677 , Dimensionality, IndexDepth
683 F5printf(30,
"~F5LTcreate(%s)<%d>, %dD, [%s]",
TopologyName, IndexDepth, Dimensionality, coordinate_system);
695 assert( coord_creator );
696 return coord_creator();
716 const
char*coordinate_system,
718 int IndexDepth,
int SkeletonDimensionality,
720 const hsize_t*refinement)
728 TheCoordCreator = coord_domain_creator;
733 (
void*)coord_creator,
736 IndexDepth, SkeletonDimensionality,
long F5Aget_ints(hid_t loc_id, const char *name, int *data, hsize_t n)
int F5Astore_integer(hid_t loc_id, const char *name, int data)
int F5Asave_ints(hid_t loc_id, const char *name, const int data[], hsize_t n)
ChartDomain_IDs * F5B_save_global_chart(const ChartDomain_IDs *MemoryIDs, hid_t Domain_hid)
ChartDomain_IDs * F5FB_read_global_chart(F5Path *f)
hid_t F5LTmake_enum_type(F5Path *fpath)
int F5LTget_skeleton_dimensionality(hid_t Top_hid)
int F5LTexpand_dataspace(F5Path *f, int rank, hsize_t *dims)
int F5LTset_dataspace(F5Path *f, int rank, hsize_t *dims)
F5Path * newF5Path(hid_t File_id)
void deleteF5Path(F5Path *f)
void TopologyName(char *name, int nlength, const hsize_t *level, int Centering, int dims)
#define FIBER_HDF5_CHARTS_PER_GRID
#define FIBER_HDF5_INDEXDEPTH_ATTRIB
#define FIBER_HDF5_SKELETON_DIMENSIONALITY_ATTRIB
#define FIBER_HDF5_INVALID_SKELETON_DIMENSIONALITY
#define F5_INVALID_INDEX_DEPTH
#define FIBER_HDF5_GLOBAL_CHARTS
#define FIBER_HDF5_REFINEMENT_INFO
#define FIBER_HDF5_GLOBALCHART_COORDINATES
#define FIBER_FIELD_DATASPACE_DIMENSIONS_ATTRIBUTE
#define FIBER_CONTENT_GRIDS
#define FIBER_HDF5_RANK_ATTRIBUTE
#define FIBER_HDF5_CHART_TO_GLOBALCHART_REF
herr_t F5Glink(hid_t loc_id, H5G_link_t link_type, const char *current_name, const char *new_name)
void F5I_add_grid(F5Path *fpath, const char *gridname, const double *time)
hid_t F5I_create_contents(hid_t File_id)
#define F5printf(verbosity,...)
hid_t F5Tsave_F5field_enum(hid_t loc_id)
int F5LAsave_dimensions(hid_t Field_id, const char *aname, int rank, const hsize_t *dims)
int F5LTset_maximal_grid_refinement(hid_t ContentsGroup_id, const char *gridname, int IndexDepth, int Dimensionality, const hsize_t *refinement)
F5Path * F5LTcreateV(hid_t File_id, const double *time, const char *gridname, ChartDomain_IDs *ChartDomain, ChartDomain_IDs *coord_creator(void *udata), void *udata, const char *coordinate_system, const char *TopologyName, int IndexDepth, int SkeletonDimensionality, int Dimensionality, const hsize_t *refinement)
int F5LAget_dimensions(hid_t Field_id, const char *aname, hsize_t dims[FIBER_MAX_RANK])
int F5LTget_maximal_skeleton_refinement(hid_t ContentsGroup_id, const char *gridname, hsize_t *refinement, int IndexDepth, int Dimensionality)
hid_t F5LTcreate_topology(hid_t Grid_hid, const char *TopologyName, int IndexDepth, int SkeletonDimensionality, int DataspaceDimensionality, const hsize_t *refinement)
int F5LTget_index_depth(hid_t Top_hid)
int F5LTget_maximal_grid_refinement(hid_t ContentsGroup_id, const char *gridname, hsize_t *refinement)
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)
F5_API hid_t F5Bappend_slice(hid_t file_id, const double *time)
int F5Gexist(hid_t location, const char *name)
hid_t F5Gtry_to_open(hid_t location, const char *name)
hid_t F5Gappend(hid_t loc_id, const char *name)
ChartDomain_IDs * FileIDs
hid_t field_enum_type_hid
ChartDomain_IDs * myChart