BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
cl_Mesh_BfmFile.hpp
Go to the documentation of this file.
1/*
2 * BELFEM -- The Berkeley Lab Finite Element Framework
3 * Copyright (c) 2026, The Regents of the University of California, through
4 * Lawrence Berkeley National Laboratory (subject to receipt of any required
5 * approvals from the U.S. Dept. of Energy). All rights reserved.
6 *
7 * Developers: Christian Messe, Gregory Giard
8 *
9 * See the top-level LICENSE file for the complete license and disclaimer.
10 */
11
12#ifndef BELFEM_CL_MESH_BFMFILE_HPP
13#define BELFEM_CL_MESH_BFMFILE_HPP
14
15#include "cl_HDF5.hpp"
16
17#ifndef BELFEM_HDF5
18 typedef void hvl_t;
19#endif
20
21
22namespace belfem
23{
24 class Mesh ;
25
26 namespace mesh
27 {
28 class ProtoMesh ;
29
30
31 class BfmFile
32 {
33 const string mFilePath;
34
35 Mesh * mMesh = nullptr;
36 bool mOwnMesh = true ;
37
38 ProtoMesh * mProto = nullptr ;
39
40 HDF5 * mFile = nullptr;
41
42 Map< id_t, uint > mNumNodesPerElement ;
43
44
45
46//------------------------------------------------------------------------------
47 public:
48//------------------------------------------------------------------------------
49
50 BfmFile(
51 const string & aFilePath,
52 Mesh * aMesh = nullptr );
53
54//------------------------------------------------------------------------------
55
56 ~BfmFile() ;
57
58//------------------------------------------------------------------------------
59
60 size_t
61 checksum() const ;
62
67 uint64_t
68 config_tag() const ;
69
70 string
71 config_text() const ;
72
73 Mesh *
74 get() ;
75
76//------------------------------------------------------------------------------
77
78 void
79 save();
80
81 void
82 load();
83
84//------------------------------------------------------------------------------
85 private:
86//------------------------------------------------------------------------------
87
88
89 void
90 save_meta_data();
91
92 void
93 load_meta_data();
94
95 void
96 save_node_data();
97
98 void
99 load_node_data();
100
101 void
102 save_group_data( const GroupType aType );
103
104 void
105 load_group_data( const GroupType aType );
106
107 void
108 save_element_data();
109
110 void
111 load_element_data();
112
113 void
114 save_facet_data( const bool aSaveTopology = false );
115
116 void
117 load_facet_data();
118
119 void
120 save_edge_data();
121
122 void
123 load_edge_data();
124
125 void
126 save_face_data();
127
128 void
129 load_face_data();
130
131 void
132 save_control_point_data();
133
134 void
135 load_control_point_data();
136
137 void
138 save_node_duplicate_data();
139
140 void
141 load_node_duplicate_data();
142
143 void
144 save_hanging_entities();
145
146 void
147 load_hanging_entities();
148
149 void
150 save_hanging_nodes( const hsize_t aNumNodes );
151
152 void
153 load_hanging_nodes();
154
155 void
156 save_hanging_edges( const hsize_t aNumEdges );
157
158 void
159 load_hanging_edges();
160
161 void
162 save_hanging_faces( const hsize_t aNumFaces );
163
164 void
165 load_hanging_faces();
166
167 void
168 save_hanging_facets( const hsize_t aNumFacets );
169
170 void
171 load_hanging_facets();
172
173 void
174 save_hanging_control_points( const hsize_t aNumControlPoints );
175
176 void
177 load_hanging_control_points();
178
179 void
180 save_periodicity_data();
181
182 void
183 save_periodic_planes();
184
185 void
186 save_periodic_nodes();
187
188 void
189 save_periodic_edges();
190
191 void
192 save_periodic_faces();
193
194 void
195 save_periodic_facets();
196
197 void
198 load_periodicity_data();
199
200 void
201 load_periodic_planes();
202
203 void
204 load_periodic_nodes();
205
206 void
207 load_periodic_edges();
208
209 void
210 load_periodic_faces();
211
212 void
213 load_periodic_facets();
214
215 void
216 save_thinshell_data();
217
218 void
219 load_thinshell_data();
220
221 void
222 save_vertex_data();
223
224 void
225 load_vertex_data();
226
227 void
228 save_curve_data();
229
230 void
231 load_curve_data();
232 };
233
234 inline
235 Mesh *
237 {
238 mOwnMesh = false ;
239 return mMesh ;
240 }
241
242 }
243}
244#endif // BELFEM_CL_MESH_BFMFILE_HPP
void hvl_t
Definition cl_Mesh_BfmFile.hpp:18
Hierarchical data format I/O.
Definition cl_HDF5.hpp:39
Top-level container for all mesh entities.
Definition cl_Mesh.hpp:60
BfmFile(const string &aFilePath, Mesh *aMesh=nullptr)
Definition cl_Mesh_BfmFile.cpp:29
size_t checksum() const
Definition cl_Mesh_BfmFile.cpp:45
string config_text() const
Definition cl_Mesh_BfmFile.cpp:86
void save()
Definition cl_Mesh_BfmFile.cpp:110
void load()
Definition cl_Mesh_BfmFile.cpp:152
Mesh * get()
Definition cl_Mesh_BfmFile.hpp:236
uint64_t config_tag() const
Definition cl_Mesh_BfmFile.cpp:62
Definition cl_ProtoMesh.hpp:39
USER GUIDES:
Definition cl_Capacitor.cpp:16
int hsize_t
Definition hdf5_types.hpp:22
GroupType
Definition Mesh_Enums.hpp:130
Definition __init__.py:1