MCPcopy Create free account
hub / github.com/PyMesh/PyMesh / parse_elements

Method parse_elements

src/IO/MshLoader.cpp:139–272  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

137}
138
139void MshLoader::parse_elements(std::ifstream& fin) {
140 size_t num_elements;
141 fin >> num_elements;
142
143 // Tmp storage of elements;
144 std::vector<int> triangle_element_idx;
145 std::vector<int> triangle_elements;
146 std::vector<int> quad_element_idx;
147 std::vector<int> quad_elements;
148 std::vector<int> tet_element_idx;
149 std::vector<int> tet_elements;
150 std::vector<int> hex_element_idx;
151 std::vector<int> hex_elements;
152
153 auto get_element_storage = [&](int elem_type) -> std::vector<int>* {
154 switch (elem_type) {
155 case 2:
156 return &triangle_elements;
157 case 3:
158 return &quad_elements;
159 case 4:
160 return &tet_elements;
161 case 5:
162 return &hex_elements;
163 default:
164 throw IOError("Unsupported element type encountered");
165 };
166 };
167
168 auto get_element_idx_storage = [&](int elem_type) -> std::vector<int>* {
169 switch (elem_type) {
170 case 2:
171 return &triangle_element_idx;
172 case 3:
173 return &quad_element_idx;
174 case 4:
175 return &tet_element_idx;
176 case 5:
177 return &hex_element_idx;
178 default:
179 throw IOError("Unsupported element type encountered");
180 };
181 };
182
183 size_t nodes_per_element;
184
185 if (m_binary) {
186 IOUtils::eat_white_space(fin);
187 int elem_read = 0;
188 while (elem_read < num_elements) {
189 // Parse element header.
190 int elem_type, num_elems, num_tags;
191 fin.read((char*)&elem_type, sizeof(int));
192 fin.read((char*)&num_elems, sizeof(int));
193 fin.read((char*)&num_tags, sizeof(int));
194 nodes_per_element = num_nodes_per_elem_type(elem_type);
195 std::vector<int>& elements = *get_element_storage(elem_type);
196 std::vector<int>& element_idx = *get_element_idx_storage(elem_type);

Callers

nothing calls this directly

Calls 5

IOErrorClass · 0.85
sizeMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected