FiberBundleHDF5  FiberHDF5 Documentation, Revision 2026
High-Performance Fiber Bundle Data Model for Scientific Visualization
Loading...
Searching...
No Matches
F5LT.c File Reference
#include "F5L.h"
#include "F5B.h"
#include "F5X.h"
#include "F5T.h"
#include "F5A.h"
#include "F5defs.h"
#include "F5private.h"
#include "F5coordinates.h"
#include <stdlib.h>
#include <assert.h>
#include <string.h>

Go to the source code of this file.

Functions

ChartDomain_IDsF5FB_read_global_chart (F5Path *f)
int F5LTget_index_depth (hid_t Top_hid)
int F5LTget_skeleton_dimensionality (hid_t Top_hid)
int F5LTset_dataspace (F5Path *f, int rank, hsize_t *dims)
int F5LTexpand_dataspace (F5Path *f, int rank, hsize_t *dims)
hid_t F5LTmake_enum_type (F5Path *fpath)
int F5LTget_maximal_grid_refinement (hid_t ContentsGroup_id, const char *gridname, hsize_t *refinement)
int F5LTget_maximal_skeleton_refinement (hid_t ContentsGroup_id, const char *gridname, hsize_t *refinement, int IndexDepth, int Dimensionality)
int F5LTset_maximal_grid_refinement (hid_t ContentsGroup_id, const char *gridname, int IndexDepth, int Dimensionality, const hsize_t *refinement)
hid_t F5LTcreate_topology (hid_t Grid_hid, const char *TopologyName, int IndexDepth, int SkeletonDimensionality, int DataspaceDimensionality, const hsize_t *refinement)
F5PathF5LTcreateV (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)
 if (return f)
F5PathF5LTcreate (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)

Variables

 else

Function Documentation

◆ F5FB_read_global_chart()

ChartDomain_IDs * F5FB_read_global_chart ( F5Path * f)
extern

Definition at line 14 of file F5B.c.

15{
17}
ChartDomain_IDs * F5B_read_global_chart(hid_t ChartsID, const char *name)
Definition F5Bchart.c:696
const char * domain_name
Definition F5Bchart.h:112
hid_t GlobalChart_hid
Definition F5Path.h:54
ChartDomain_IDs * myChart
Definition F5Path.h:33

References ChartDomain_IDs::domain_name, F5B_read_global_chart(), F5Path::GlobalChart_hid, and F5Path::myChart.

Referenced by F5Bopen_coordinate_domain(), and F5LTcreateV().

◆ F5LTexpand_dataspace()

int F5LTexpand_dataspace ( F5Path * f,
int rank,
hsize_t * dims )

Definition at line 120 of file F5LT.c.

121{
122hsize_t current_dims[FIBER_MAX_RANK];
123int current_rank, Mrank;
124int i;
125
126 F5printf(30, "F5LTexpand_dataspace(,%d,)", rank);
127 if (!f)
128 return 1;
129
131 if (Mrank<0)
132 {
133 F5printf(30, "F5LTexpand_dataspace(,%d,): INVALID FILE: RANK attribute is not integer - cannot set dataspace!", rank);
134 return 0;
135 }
136 if (Mrank>=0)
137 {
138 if (Mrank != rank)
139 {
140 F5printf(30, "F5LTexpand_dataspace(,%d,): Dimensions incompatible with RANK attribute %d - inconsistent dataspace!", rank, Mrank);
141 puts("Set DATAPACE: Inconsistent rank!");
142 return 0;
143 }
144 }
145
146 current_rank = F5LAget_dimensions(f->Topology_hid,
148 current_dims);
149
150 if (current_rank>0)
151 {
152 if (rank != current_rank)
153 {
154 puts("Set DATAPACE: Inconsistent rank!");
155 return 0;
156 }
157
158 for(i=0; i<rank; i++)
159 {
160 if (current_dims[i] < dims[i])
161 current_dims[i] = dims[i];
162 }
163 }
164 else
165 for(i=0; i<rank; i++)
166 current_dims[i] = dims[i];
167
169 F5printf(30, "F5LTexpand_dataspace(,rank=%d,): expand dimensions of topology.", rank);
170
171 for(i=0; i<rank; i++)
172 dims[i] = current_dims[i];
173
174 return 1;
175}
long F5Aget_ints(hid_t loc_id, const char *name, int *data, hsize_t n)
Definition F5A.c:406
#define FIBER_MAX_RANK
Definition F5defs.h:105
#define FIBER_FIELD_DATASPACE_DIMENSIONS_ATTRIBUTE
Definition F5defs.h:153
#define FIBER_HDF5_RANK_ATTRIBUTE
Definition F5defs.h:147
#define F5printf(verbosity,...)
Definition F5private.h:60
int F5LAsave_dimensions(hid_t Field_id, const char *aname, int rank, const hsize_t *dims)
Definition F5A.c:192
int F5LAget_dimensions(hid_t Field_id, const char *aname, hsize_t dims[FIBER_MAX_RANK])
Definition F5A.c:233
hid_t Topology_hid
Definition F5Path.h:57

References F5Aget_ints(), F5LAget_dimensions(), F5LAsave_dimensions(), F5printf, FIBER_FIELD_DATASPACE_DIMENSIONS_ATTRIBUTE, FIBER_HDF5_RANK_ATTRIBUTE, FIBER_MAX_RANK, and F5Path::Topology_hid.

Referenced by F5Fexpand_dataspace().

◆ F5LTget_skeleton_dimensionality()

int F5LTget_skeleton_dimensionality ( hid_t Top_hid)

Definition at line 34 of file F5LT.c.

35{
37 if (F5Aget_ints(Top_hid, FIBER_HDF5_SKELETON_DIMENSIONALITY_ATTRIB, &result, 1) <= 0)
38 F5printf(5," *Warning* F5LTget_F5LTget_skeleton_dimensionality() could not find skeleton dimensionality,setting unknown -1");
39
40 return result;
41}
#define FIBER_HDF5_SKELETON_DIMENSIONALITY_ATTRIB
Definition F5defs.h:256
#define FIBER_HDF5_INVALID_SKELETON_DIMENSIONALITY
Definition F5defs.h:261

References F5Aget_ints(), F5printf, FIBER_HDF5_INVALID_SKELETON_DIMENSIONALITY, and FIBER_HDF5_SKELETON_DIMENSIONALITY_ATTRIB.

Referenced by F5iterate_topologies().

◆ F5LTmake_enum_type()

hid_t F5LTmake_enum_type ( F5Path * fpath)

Get the field enum type associated with this F5Path. May be used to check versioning information of field descriptions. \TODO Retrieve versioning from existing file, current implementation just writes.

Definition at line 179 of file F5LT.c.

180{
181 if (!fpath) return 0;
182 if (fpath->field_enum_type_hid<=0)
183 {
184 assert(fpath->ContentsGroup_hid);
185 F5printf(30, " F5LTmake_enum_type() - save type.");
187 F5printf(30, " F5LTmake_enum_type() - DONE saving type.");
188 }
189 return fpath->field_enum_type_hid;
190}
hid_t F5Tsave_F5field_enum(hid_t loc_id)
Definition F5types.c:222
hid_t field_enum_type_hid
Definition F5Path.h:48
hid_t ContentsGroup_hid
Definition F5Path.h:51

References F5Path::ContentsGroup_hid, F5printf, F5Tsave_F5field_enum(), and F5Path::field_enum_type_hid.

Referenced by F5Fcreate(), F5FSwrite_fraction(), F5Fwrite_1D(), F5Fwrite_flexible(), F5Fwrite_fraction(), F5Fwrite_fraction_external(), F5Fwrite_fractionS(), F5Fwrite_linear(), F5Fwrite_linear_fraction(), F5FwriteIMAGE(), F5Fwrites(), F5FwriteX(), F5Rcreate_coordinate_topology(), F5Rcreate_edges_as_vertices_topology(), F5Rcreate_hexaedrons_as_vertices_topology(), F5Rcreate_rectilinear(), F5Rcreate_tetrahedrons_as_vertices_topology(), F5Rcreate_triangles_as_vertices_topology(), F5Rcreate_uniform_sparse(), F5write_particle_cartesian3Dv(), F5write_particle_cartesian3DvU(), and F5write_particle_double_cartesian3Dv().

◆ F5LTset_dataspace()

int F5LTset_dataspace ( F5Path * f,
int rank,
hsize_t * dims )

Definition at line 43 of file F5LT.c.

44{
45hsize_t current_dims[FIBER_MAX_RANK];
46int current_rank, Mrank = -1;
47
48 if (!f)
49 {
50 return 0;
51 }
52
53 F5printf(30, "F5LTset_dataspace(,rank=%d,)", rank);
54
56 if (Mrank<0)
57 {
58 F5printf(30, "F5LTset_dataspace(,%d,): INVALID FILE: RANK attribute is not integer - cannot set dataspace!", rank);
59 return 0;
60 }
61
62 if (Mrank>=1)
63 {
64 if (Mrank != rank)
65 {
66 if (rank==4)
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],
69 Mrank);
70 else
71 F5printf(0, "F5LTset_dataspace(,%d,): Dimensions incompatible with RANK attribute %d - inconsistent dataspace!", rank, Mrank);
72
73 return 0;
74 }
75 }
76
77 current_rank = F5LAget_dimensions(f->Topology_hid,
79 current_dims);
80
81 if (current_rank>0)
82 {
83 int i;
84 if (rank != current_rank)
85 {
86 puts("F5LTset_dataspace(): Set DATAPACE: Inconsistent rank with DATASPACE_DIMENSIONS!");
87 return 0;
88 }
89
90 for(i=0; i<rank; i++)
91 {
92 if (current_dims[i] != dims[i])
93 {
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);
97 return 0;
98 }
99 }
100 F5printf(5, "F5LTset_dataspace(,rank=%d,): dimensions are ok.", rank);
101 return 1;
102 }
103 {int i;
104 for(i=0; i<rank; i++)
105 {
106 if (dims[i] < 1)
107 {
108 F5printf(10, "F5LTset_dataspace(,rank=%d,): do NOT set new topology dimensions, because dims[%d]=%d\n", rank, i, (int)dims[i] );
109 return 0;
110 }
111 }
112 }
113
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);
117 return 1;
118}

References F5Aget_ints(), F5LAget_dimensions(), F5LAsave_dimensions(), F5printf, FIBER_FIELD_DATASPACE_DIMENSIONS_ATTRIBUTE, FIBER_HDF5_RANK_ATTRIBUTE, FIBER_MAX_RANK, and F5Path::Topology_hid.

Referenced by F5Fcreate(), F5FSwrite_fraction(), F5Fwrite_flexible(), F5Fwrite_fraction(), F5Fwrite_fraction_external(), F5Fwrite_fractionS(), F5Fwrite_linear(), F5FwriteIMAGE(), F5Fwrites(), and F5FwriteX().

◆ if()

if ( return f)

Definition at line 681 of file F5LT.c.

693{
694ChartDomain_IDs* (*coord_creator)() = (ChartDomain_IDs*(*)() )udata;
695 assert( coord_creator );
696 return coord_creator();
697}

References F5printf_indent, and TopologyName().

Variable Documentation

◆ else

else
Initial value:
{
F5printf(1, "F5 Creating a Topological %d-dimensional Skeleton of Index Depth=%d, "
"Info - No chart used for %s, seems to be a relative representation in [%s]"
, Dimensionality, IndexDepth
, TopologyName, coordinate_system)
void TopologyName(char *name, int nlength, const hsize_t *level, int Centering, int dims)
Definition F5R.c:300

Definition at line 673 of file F5LT.c.