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

Method save_elem_tensor_field

src/IO/MshSaver.cpp:305–373  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

303}
304
305void MshSaver::save_elem_tensor_field(const std::string& fieldname, const VectorF& field) {
306 assert(field.size() == m_num_elements * m_dim * (m_dim + 1) / 2);
307 fout << "$ElementData" << std::endl;
308 fout << 1 << std::endl; // num string tags.
309 fout << "\"" << fieldname << "\"" << std::endl;
310 fout << "1" << std::endl; // num real tags.
311 fout << "0.0" << std::endl; // time value.
312 fout << "3" << std::endl; // num int tags.
313 fout << "0" << std::endl; // the time step
314 fout << "9" << std::endl; // 9-component tensor field.
315 fout << m_num_elements << std::endl; // number of elements
316
317 const Float zero = 0.0;
318 if (m_binary) {
319 for (size_t i=0; i<m_num_elements; i++) {
320 int elem_idx = i+1;
321 fout.write((char*)&elem_idx, sizeof(int));
322 if (m_dim == 3) {
323 const VectorF& val = field.segment(i*6, 6);
324 Float tensor[9] = {
325 val[0], val[5], val[4],
326 val[5], val[1], val[3],
327 val[4], val[3], val[2] };
328 fout.write((char*)tensor, sizeof(Float) * 9);
329 } else if (m_dim == 2) {
330 const VectorF& val = field.segment(i*3, 3);
331 Float tensor[9] = {
332 val[0], val[2], zero,
333 val[2], val[1], zero,
334 zero, zero, zero };
335 fout.write((char*)tensor, sizeof(Float)*9);
336 }
337 }
338 } else {
339 for (size_t i=0; i<m_num_elements; i++) {
340 int elem_idx = i+1;
341 if (m_dim == 3) {
342 const VectorF& val = field.segment(i*6, 6);
343 fout << elem_idx
344 << " " << val[0]
345 << " " << val[5]
346 << " " << val[4]
347 << " " << val[5]
348 << " " << val[1]
349 << " " << val[3]
350 << " " << val[4]
351 << " " << val[3]
352 << " " << val[2]
353 << std::endl;
354 } else if (m_dim == 2) {
355 const VectorF& val = field.segment(i*3, 3);
356 fout << elem_idx
357 << " " << val[0]
358 << " " << val[2]
359 << " " << zero
360 << " " << val[2]
361 << " " << val[1]
362 << " " << zero

Callers 1

write_attributeMethod · 0.80

Calls 2

sizeMethod · 0.45
writeMethod · 0.45

Tested by

no test coverage detected