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

Method save_vector_field

src/IO/MshSaver.cpp:183–227  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

181}
182
183void MshSaver::save_vector_field(const std::string& fieldname, const VectorF& field) {
184 assert(field.size() == m_dim * m_num_nodes);
185 fout << "$NodeData" << std::endl;
186 fout << "1" << std::endl; // num string tags.
187 fout << "\"" << fieldname << "\"" << std::endl;
188 fout << "1" << std::endl; // num real tags.
189 fout << "0.0" << std::endl; // time value.
190 fout << "3" << std::endl; // num int tags.
191 fout << "0" << std::endl; // the time step
192 fout << "3" << std::endl; // 3-component vector field.
193 fout << m_num_nodes << std::endl; // number of nodes
194
195 const Float zero = 0.0;
196 if (m_binary) {
197 for (size_t i=0; i<m_num_nodes; i++) {
198 int node_idx = i+1;
199 fout.write((char*)&node_idx, sizeof(int));
200 if (m_dim == 3)
201 fout.write((char*)&field[i*3], sizeof(Float)*3);
202 else if (m_dim == 2) {
203 fout.write((char*)&field[i*2], sizeof(Float)*2);
204 fout.write((char*)&zero, sizeof(Float)); // Set z=0
205 }
206 }
207 } else {
208 for (size_t i=0; i<m_num_nodes; i++) {
209 int node_idx = i+1;
210 if (m_dim == 3) {
211 fout << node_idx
212 << " " << field[i*3]
213 << " " << field[i*3+1]
214 << " " << field[i*3+2]
215 << std::endl;
216 } else if (m_dim == 2) {
217 fout << node_idx
218 << " " << field[i*2]
219 << " " << field[i*2+1]
220 << " " << zero
221 << std::endl;
222 }
223 }
224 }
225 fout << "$EndNodeData" << std::endl;
226 fout.flush();
227}
228
229void MshSaver::save_elem_scalar_field(const std::string& fieldname, const VectorF& field) {
230 assert(field.size() == m_num_elements);

Callers 1

write_attributeMethod · 0.80

Calls 2

sizeMethod · 0.45
writeMethod · 0.45

Tested by

no test coverage detected