FiberBundleHDF5  FiberHDF5 Documentation, Revision 2026
High-Performance Fiber Bundle Data Model for Scientific Visualization
Loading...
Searching...
No Matches
F5surface.c
Go to the documentation of this file.
1#include "F5surface.h"
2#include "F5B.h"
3#include "F5R.h"
4#include "F5X.h"
5#include "F5defs.h"
6#include "F5Bchart.h"
7#include "F5private.h"
8
10{
11 if (VC)
12 {
13 F5Fclose( VC->Vertices );
14 VC->Vertices = NULL;
15
16 F5Fclose( VC->Cells );
17 VC->Cells = NULL;
18 }
19}
20
21
22
23F5Path*F5write_triangular_surface(hid_t file_id, double time,
24 const char*name,
25 const F5_vec3_point_t*Coords, int nCoords,
26 const F5_triangle_t*Triangles, int nTriangles)
27{
28 return F5Cwrite_triangular_surface(file_id, time,
29 name,
30 Coords, nCoords,
31 Triangles, nTriangles,
33}
34
36 F5write_triangular_surface_vc(hid_t file_id, double time,
37 const char*name,
38 const F5_vec3_point_t*Coords, int nCoords,
39 const F5_triangle_t*Triangles, int nTriangles)
40{
41 return F5Cwrite_triangular_surface_vc(file_id, time,
42 name,
43 Coords, nCoords,
44 Triangles, nTriangles,
46}
47
48
49F5Path*F5Cwrite_triangular_surface(hid_t File_id, double time,
50 const char*gridname,
51 const F5_vec3_point_t*Coords, int nCoords,
52 const F5_triangle_t*Triangles, int nTriangles,
53 const char*coordinate_system)
54
55{
57 VC = F5Cwrite_triangular_surface_vc(File_id, time,
58 gridname,
59 Coords, nCoords,
60 Triangles, nTriangles,
61 coordinate_system);
62
63 F5Fclose( VC.Cells );
64
65 return VC.Vertices;
66}
67
69 F5Cwrite_triangular_surface_vc(hid_t File_id, double time,
70 const char*gridname,
71 const F5_vec3_point_t*Coords, int nCoords,
72 const F5_triangle_t*Triangles, int nTriangles,
73 const char*coordinate_system)
74
75{
77
78 VC.Cells = 0;
79 VC.Vertices = F5Rcreate_cartesian_nD(File_id, time, gridname, 2, coordinate_system);
80 if (!VC.Vertices)
81 return VC;
82
83 /* write points for the Triangles */
86 Coords, F5P_DEFAULT);
87
88 VC.Cells = F5Rcreate_triangles_as_vertices_topology(File_id, time, gridname);
89
92 Triangles, F5P_DEFAULT);
93
94 return VC;
95}
96
97
98
99
101 const char*gridname,
102 const F5_vec3_point_t*Coords, int nCoords,
103 const F5_triangle_t*Triangles, int nTriangles,
104 const char*coordinate_system)
105
106{
107F5Path*Cells=0;
108F5Path*Vertices = F5Rcreate_cartesian_nD(target->File_hid, time, gridname, 2, coordinate_system);
109 if (!Vertices)
110 return Vertices;
111
112 if (!Coords)
113 {
115 H5G_LINK_HARD,
117 }
118 else
119 {
120 /* write points for the Triangles */
121 F5Fwrite_1D(Vertices, FIBER_HDF5_POSITIONS_STRING, nCoords,
123 Coords, F5P_DEFAULT);
124 }
125
126 Cells = F5Rcreate_triangles_as_vertices_topology(target->File_hid, time, gridname);
127
128 if (!Triangles)
129 {
130 /* TODO: check for errors here! The target ID might not
131 exist at all, and this might indicate that the target
132 is not a triangular surface at all, and that we must not
133 do what we're doing here anyway!! */
134
135 hid_t Connectivity = H5Gopen2( target->Grid_hid, FIBER_HDF5_FACES, H5P_DEFAULT );
136 hid_t AsVertices = H5Gopen2( Connectivity, FIBER_HDF5_POINTS, H5P_DEFAULT );
137 H5Glink2( AsVertices, FIBER_HDF5_POSITIONS_STRING,
138 H5G_LINK_HARD,
140 }
141 else
142 {
143 F5Fwrite_1D(Cells, FIBER_HDF5_POSITIONS_STRING, nTriangles,
145 Triangles, F5P_DEFAULT);
146 }
147
148 F5Fclose( Cells );
149
150 return Vertices;
151}
152
153
154void F5write_regular_surface(hid_t file_id, double time,
155 const char*name,
156 const F5_vec3_point_t*Coords, int Xdims, int Ydims
157 )
158{
159 F5Cwrite_regular_surface(file_id, time,
160 name,
161 Coords, Xdims, Ydims,
163
164}
165
166
167void F5Cwrite_regular_surface(hid_t File_id, double time,
168 const char*gridname,
169 const F5_vec3_point_t*Coords, int Xdims, int Ydims,
170 const char*coordinate_system)
171{
172F5Path*f = F5Rcreate_cartesian_nD(File_id, time, gridname, 2, coordinate_system);
173
174 /* write the data into the dataset */
175 {
176 /* write points for the regular
177 TODO: --- Use F5Fwrite() here ---!!
178 */
179
180 hsize_t dims[2];
181 dims[0] = Ydims; /* (or vice versa, check!) */
182 dims[1] = Xdims;
183 {
184 hid_t coord_ds = H5Screate_simple(2, dims, NULL);
185 hid_t creator_hid = H5Pcreate(H5P_DATASET_CREATE);
187 f->FileIDs->SinglePrecision.Point_hid_t, coord_ds, creator_hid);
188 H5Dwrite(id, f->FileIDs->SinglePrecision.Point_hid_t, H5S_ALL, H5S_ALL, H5P_DEFAULT, Coords);
189 H5Dclose(id);
190 H5Sclose(coord_ds);
191 H5Pclose(creator_hid);
192 }}
193
195
196 F5close(f);
197}
F5_API F5ErrorCode F5Fwrite_1D(F5Path *fpath, const char *fieldname, hsize_t nElements, hid_t fieldtype, hid_t memtype, const void *dataPtr, hid_t property_id)
Definition F5F.c:631
#define F5P_DEFAULT
Definition F5L.h:20
name
Definition F5P.c:82
F5_triangle32_t F5_triangle_t
F5_point3f_t F5_vec3_point_t
#define F5T_COORD3_FLOAT
#define F5T_TRIANGLE32
#define FIBER_HDF5_DEFAULT_CHART
Definition F5defs.h:74
#define FIBER_HDF5_FACES
Definition F5defs.h:60
#define FIBER_HDF5_POINTS
Definition F5defs.h:55
#define FIBER_HDF5_POSITIONS_STRING
Definition F5defs.h:63
void F5I_add_field(F5Path *fpath, const char *fieldname)
Definition F5private.c:178
F5Vertices_and_Connectivity_t F5write_triangular_surface_vc(hid_t file_id, double time, const char *name, const F5_vec3_point_t *Coords, int nCoords, const F5_triangle_t *Triangles, int nTriangles)
Definition F5surface.c:36
F5Vertices_and_Connectivity_t F5Cwrite_triangular_surface_vc(hid_t File_id, double time, const char *gridname, const F5_vec3_point_t *Coords, int nCoords, const F5_triangle_t *Triangles, int nTriangles, const char *coordinate_system)
Definition F5surface.c:69
void F5Fclose(F5Path *f)
Definition F5F.c:92
void F5close(F5Path *f)
Definition F5B.c:186
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
hid_t F5Dappend(hid_t loc_id, const char *name, hid_t type_id, hid_t space_id, hid_t create_plist_id)
Definition F5X.c:239
F5Path * F5write_triangular_surface(hid_t file_id, double time, const char *name, const F5_vec3_point_t *Coords, int nCoords, const F5_triangle_t *Triangles, int nTriangles)
Definition F5surface.c:23
F5Path * F5Cwrite_triangular_surface(hid_t File_id, double time, const char *gridname, const F5_vec3_point_t *Coords, int nCoords, const F5_triangle_t *Triangles, int nTriangles, const char *coordinate_system)
Definition F5surface.c:49
struct F5Vertices_and_Connectivity F5Vertices_and_Connectivity_t
Definition F5surface.h:35
void F5closeVC(F5Vertices_and_Connectivity_t *VC)
Definition F5surface.c:9
F5Path * F5Flink_triangular_surface(F5Path *target, double time, const char *gridname, const F5_vec3_point_t *Coords, int nCoords, const F5_triangle_t *Triangles, int nTriangles, const char *coordinate_system)
Definition F5surface.c:100
void F5Cwrite_regular_surface(hid_t File_id, double time, const char *gridname, const F5_vec3_point_t *Coords, int Xdims, int Ydims, const char *coordinate_system)
Definition F5surface.c:167
void F5write_regular_surface(hid_t file_id, double time, const char *name, const F5_vec3_point_t *Coords, int Xdims, int Ydims)
Definition F5surface.c:154
F5_ChartPrecisionTypes SinglePrecision
Definition F5Bchart.h:147
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 File_hid
Definition F5Path.h:50