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

Method write_attribute

src/IO/MSHWriter.cpp:149–173  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

147}
148
149void MSHWriter::write_attribute(MshSaver& saver, const std::string& name,
150 VectorF& value, size_t dim, size_t num_vertices, size_t num_elements) {
151 size_t attr_size = value.size();
152
153 if (attr_size == num_vertices) {
154 saver.save_scalar_field(name, value);
155 } else if (attr_size == num_vertices * dim) {
156 saver.save_vector_field(name, value);
157 } else if (attr_size == num_vertices * (dim * (dim+1)) / 2 &&
158 attr_size % num_elements != 0) {
159 throw NotImplementedError("Per-vertex tensor field is not supported.");
160 } else if (attr_size == num_elements) {
161 saver.save_elem_scalar_field(name, value);
162 } else if (attr_size == num_elements * dim) {
163 saver.save_elem_vector_field(name, value);
164 } else if (attr_size == num_elements * (dim * (dim + 1)) / 2) {
165 saver.save_elem_tensor_field(name, value);
166 } else {
167 std::stringstream err_msg;
168 err_msg << "Attribute " << name << " has length " << attr_size << std::endl;
169 err_msg << "Unable to interpret the attribute type.";
170 std::cerr << "Warning: ";
171 std::cerr << err_msg.str() << std::endl;
172 }
173}

Callers

nothing calls this directly

Calls 8

NotImplementedErrorClass · 0.85
save_scalar_fieldMethod · 0.80
save_vector_fieldMethod · 0.80
sizeMethod · 0.45
strMethod · 0.45

Tested by

no test coverage detected