libMesh
namebased_io.C
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2026 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License, or (at your option) any later version.
8 
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
13 
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 
18 
19 // Local includes
20 #include "libmesh/libmesh_logging.h"
21 #include "libmesh/mesh_base.h"
22 #include "libmesh/mesh_communication.h"
23 #include "libmesh/namebased_io.h"
24 #include "libmesh/dyna_io.h"
25 #include "libmesh/exodusII_io.h"
26 #include "libmesh/gmv_io.h"
27 #include "libmesh/tecplot_io.h"
28 #include "libmesh/tetgen_io.h"
29 #include "libmesh/ucd_io.h"
30 #include "libmesh/unv_io.h"
31 #include "libmesh/utility.h"
32 #include "libmesh/matlab_io.h"
33 #include "libmesh/off_io.h"
34 #include "libmesh/medit_io.h"
35 #include "libmesh/nemesis_io.h"
36 #include "libmesh/gmsh_io.h"
37 #include "libmesh/fro_io.h"
38 #include "libmesh/stl_io.h"
39 #include "libmesh/xdr_io.h"
40 #include "libmesh/vtk_io.h"
41 #include "libmesh/abaqus_io.h"
42 #include "libmesh/checkpoint_io.h"
43 #include "libmesh/equation_systems.h"
44 #include "libmesh/enum_xdr_mode.h"
45 #include "libmesh/parallel.h" // broadcast
46 
47 // C++ includes
48 #include <iomanip>
49 #include <fstream>
50 #include <vector>
51 
52 #ifdef LIBMESH_HAVE_UNISTD_H
53 #include <sys/types.h>
54 #include <unistd.h> // for getpid() on Unix
55 #endif
56 
57 #ifdef LIBMESH_HAVE_PROCESS_H
58 #include <process.h> // for getpid() on Windows
59 #endif
60 
61 
62 namespace libMesh
63 {
64 
65 
66 
67 // ------------------------------------------------------------
68 // NameBasedIO members
69 void NameBasedIO::read (const std::string & name)
70 {
72 
73  const std::string_view basename = Utility::basename_of(name);
74 
75  using Utility::ends_with;
76  using Utility::contains;
77 
78  // See if the file exists. Perform this check on all processors
79  // so that the code is terminated properly in the case that the
80  // file does not exist.
81 
82  // For Nemesis files, the name we try to read will have suffixes
83  // identifying processor rank
84  if (ends_with(basename, ".nem") || ends_with(basename, ".n"))
85  {
86  std::ostringstream full_name;
87 
88  // Find the length of a string which represents the highest processor ID
89  full_name << (mymesh.n_processors());
90  int field_width = cast_int<int>(full_name.str().size());
91 
92  // reset the string stream
93  full_name.str("");
94 
95  // And build up the full filename
96  full_name << name
97  << '.' << mymesh.n_processors()
98  << '.' << std::setfill('0') << std::setw(field_width) << mymesh.processor_id();
99 
100  std::ifstream in (full_name.str().c_str());
101  libmesh_error_msg_if(!in.good(), "ERROR: cannot locate specified file:\n\t" << full_name.str());
102  }
103  else if (contains(basename, ".cp")) {} // Do error checking in the reader
104  else
105  {
106  std::ifstream in (name.c_str());
107  libmesh_error_msg_if(!in.good(), "ERROR: cannot locate specified file:\n\t" << name);
108  }
109 
110  // Look for parallel formats first
111  if (is_parallel_file_format(basename))
112  {
113  // no need to handle bz2 files here -- the Xdr class does that.
114  if (contains(basename, ".xda") ||
115  contains(basename, ".xdr"))
116  {
117  XdrIO xdr_io(mymesh);
118 
119  // .xda* ==> bzip2/gzip/ASCII flavors
120  if (contains(basename, ".xda"))
121  {
122  xdr_io.binary() = false;
123  xdr_io.read (name);
124  }
125  else // .xdr* ==> true binary XDR file
126  {
127  xdr_io.binary() = true;
128  xdr_io.read (name);
129  }
130 
131  // The xdr_io object gets constructed with legacy() == false.
132  // if legacy() == true then it means that a legacy file was detected and
133  // thus processor 0 performed the read. We therefore need to broadcast the
134  // mesh. Further, for this flavor of mesh solution data ordering is tied
135  // to the node ordering, so we better not reorder the nodes!
136  if (xdr_io.legacy())
137  {
138  mymesh.allow_renumbering(false);
139  MeshCommunication().broadcast(mymesh);
140  }
141 
142  // libHilbert-enabled libMesh builds should construct files
143  // with a canonical node ordering, which libHilbert-enabled
144  // builds will be able to read in again regardless of any
145  // renumbering. So in that case we're free to renumber.
146  // However, if either the writer or the reader of this file
147  // don't have libHilbert, then we'll have to skip
148  // renumbering because we need the numbering to remain
149  // consistent with any solution file we read in next.
150 #ifdef LIBMESH_HAVE_LIBHILBERT
151  // if (!xdr_io.libhilbert_ordering())
152  // skip_renumber_nodes_and_elements = true;
153 #else
154  mymesh.allow_renumbering(false);
155 #endif
156  }
157  else if (contains(basename, ".nem") ||
158  contains(basename, ".n"))
159  Nemesis_IO(mymesh).read (name);
160  else if (contains(basename, ".cp"))
161  {
162  if (contains(basename, ".cpa"))
163  CheckpointIO(mymesh, false).read(name);
164  else
165  CheckpointIO(mymesh, true).read(name);
166  }
167  }
168 
169  // Serial mesh formats
170  else
171  {
172  // Read the file based on extension. Only processor 0
173  // needs to read the mesh. It will then broadcast it and
174  // the other processors will pick it up
175  if (mymesh.processor_id() == 0)
176  {
177  LOG_SCOPE("read()", "NameBasedIO");
178 
179  std::ostringstream pid_suffix;
180  pid_suffix << '_' << getpid();
181  // Nasty hack for reading/writing zipped files
182  std::string new_name = name;
183  if (ends_with(name, ".bz2"))
184  {
185 #ifdef LIBMESH_HAVE_BZIP
186  new_name.erase(new_name.end() - 4, new_name.end());
187  new_name += pid_suffix.str();
188  std::string system_string = "bunzip2 -f -k -c ";
189  system_string += name + " > " + new_name;
190  LOG_SCOPE("system(bunzip2)", "NameBasedIO");
191  if (std::system(system_string.c_str()))
192  libmesh_file_error(system_string);
193 #else
194  libmesh_error_msg("ERROR: need bzip2/bunzip2 to open .bz2 file " << name);
195 #endif
196  }
197  else if (ends_with(name, ".xz"))
198  {
199 #ifdef LIBMESH_HAVE_XZ
200  new_name.erase(new_name.end() - 3, new_name.end());
201  new_name += pid_suffix.str();
202  std::string system_string = "xz -f -d -k -c ";
203  system_string += name + " > " + new_name;
204  LOG_SCOPE("system(xz -d)", "XdrIO");
205  if (std::system(system_string.c_str()))
206  libmesh_file_error(system_string);
207 #else
208  libmesh_error_msg("ERROR: need xz to open .xz file " << name);
209 #endif
210  }
211 
212  if (contains(basename, ".mat"))
213  MatlabIO(mymesh).read(new_name);
214 
215  else if (contains(basename, ".ucd"))
216  UCDIO(mymesh).read (new_name);
217 
218  else if (contains(basename, ".off") ||
219  contains(basename, ".ogl") ||
220  contains(basename, ".oogl"))
221  OFFIO(mymesh).read (new_name);
222 
223  else if (contains(basename, ".unv"))
224  UNVIO(mymesh).read (new_name);
225 
226  else if (contains(basename, ".node") ||
227  contains(basename, ".ele"))
228  TetGenIO(mymesh).read (new_name);
229 
230  else if (contains(basename, ".exd") ||
231  contains(basename, ".exo") ||
232  contains(basename, ".e"))
233  ExodusII_IO(mymesh).read (new_name);
234 
235  else if (contains(basename, ".msh"))
236  GmshIO(mymesh).read (new_name);
237 
238  else if (contains(basename, ".gmv"))
239  GMVIO(mymesh).read (new_name);
240 
241  else if (contains(basename, ".stl"))
242  STLIO(mymesh).read (new_name);
243 
244  else if (contains(basename, ".pvtu") ||
245  contains(basename, ".vtu"))
246  VTKIO(mymesh).read(new_name);
247 
248  else if (contains(basename, ".inp"))
249  AbaqusIO(mymesh).read(new_name);
250 
251  else if (contains(basename, ".bext") ||
252  contains(basename, ".bxt"))
253  DynaIO(mymesh).read (new_name);
254 
255  else if (contains(basename, ".bez"))
256  DynaIO(mymesh, false).read (new_name);
257 
258  else
259  {
260  libmesh_error_msg(" ERROR: Unrecognized file extension: " \
261  << name \
262  << "\n I understand the following:\n\n" \
263  << " *.bext -- Bezier files in DYNA format\n" \
264  << " *.bez -- Bezier DYNA files, omit spline nodes\n" \
265  << " *.bxt -- Bezier files in DYNA format\n" \
266  << " *.cpa -- libMesh Checkpoint ASCII format\n" \
267  << " *.cpr -- libMesh Checkpoint binary format\n" \
268  << " *.e -- Sandia's ExodusII format\n" \
269  << " *.exo -- Sandia's ExodusII format\n" \
270  << " *.gmv -- LANL's General Mesh Viewer format\n" \
271  << " *.inp -- Abaqus .inp format\n" \
272  << " *.mat -- Matlab triangular ASCII file\n" \
273  << " *.n -- Sandia's Nemesis format\n" \
274  << " *.nem -- Sandia's Nemesis format\n" \
275  << " *.off -- OOGL OFF surface format\n" \
276  << " *.ogl -- OOGL OFF surface format\n" \
277  << " *.oogl -- OOGL OFF surface format\n" \
278  << " *.pvtu -- Paraview VTK format\n" \
279  << " *.stl -- STereoLithography triangulation format\n" \
280  << " *.ucd -- AVS's ASCII UCD format\n" \
281  << " *.unv -- I-deas Universal format\n" \
282  << " *.vtu -- Paraview VTK format\n" \
283  << " *.xda -- libMesh ASCII format\n" \
284  << " *.xdr -- libMesh binary format\n" \
285  << " *.gz -- any above format gzipped\n" \
286  << " *.bz2 -- any above format bzip2'ed\n" \
287  << " *.xz -- any above format xzipped\n" \
288  );
289  }
290 
291  // If we temporarily decompressed a file, remove the
292  // uncompressed version
293  if (ends_with(basename, ".bz2"))
294  std::remove(new_name.c_str());
295  if (ends_with(basename, ".xz"))
296  std::remove(new_name.c_str());
297  }
298 
299  // Send the mesh & bcs (which are now only on processor 0) to the other
300  // processors
301  MeshCommunication().broadcast (mymesh);
302  }
303 }
304 
305 
306 void NameBasedIO::write (const std::string & name)
307 {
308  const MeshBase & mymesh = MeshOutput<MeshBase>::mesh();
309 
310  const std::string_view basename = Utility::basename_of(name);
311 
312  using Utility::contains;
313  using Utility::ends_with;
314 
315  // parallel formats are special -- they may choose to write
316  // separate files, let's not try to handle the zipping here.
317  if (is_parallel_file_format(basename))
318  {
319  // no need to handle bz2 files here -- the Xdr class does that.
320  if (contains(basename, ".xda"))
321  XdrIO(mymesh).write(name);
322 
323  else if (contains(basename, ".xdr"))
324  XdrIO(mymesh,true).write(name);
325 
326  else if (contains(basename, ".nem") ||
327  contains(basename, ".n"))
328  Nemesis_IO(mymesh).write(name);
329 
330  else if (contains(basename, ".cpa"))
331  CheckpointIO(mymesh,false).write(name);
332 
333  else if (contains(basename, ".cpr"))
334  CheckpointIO(mymesh,true).write(name);
335 
336  else
337  libmesh_error_msg("Couldn't deduce filetype for " << name);
338  }
339 
340  // serial file formats
341  else
342  {
343  // Nasty hack for reading/writing zipped files
344  std::string new_name = name;
345  int pid_0 = 0;
346  if (mymesh.processor_id() == 0)
347  pid_0 = getpid();
348  mymesh.comm().broadcast(pid_0);
349  std::ostringstream pid_suffix;
350  pid_suffix << '_' << pid_0;
351 
352  if (ends_with(name, ".bz2"))
353  {
354  new_name.erase(new_name.end() - 4, new_name.end());
355  new_name += pid_suffix.str();
356  }
357  else if (ends_with(name, ".xz"))
358  {
359  new_name.erase(new_name.end() - 3, new_name.end());
360  new_name += pid_suffix.str();
361  }
362 
363  // New scope so that io will close before we try to zip the file
364  {
365  // Write the file based on extension
366  if (contains(basename, ".dat"))
367  TecplotIO(mymesh).write (new_name);
368 
369  else if (contains(basename, ".plt"))
370  TecplotIO(mymesh,true).write (new_name);
371 
372  else if (contains(basename, ".ucd"))
373  UCDIO (mymesh).write (new_name);
374 
375  else if (contains(basename, ".gmv"))
376  if (mymesh.n_partitions() > 1)
377  GMVIO(mymesh).write (new_name);
378  else
379  {
380  GMVIO io(mymesh);
381  io.partitioning() = false;
382  io.write (new_name);
383  }
384 
385  else if (contains(basename, ".exd") ||
386  contains(basename, ".exo") ||
387  contains(basename, ".e"))
388  ExodusII_IO(mymesh).write(new_name);
389 
390  else if (contains(basename, ".unv"))
391  UNVIO(mymesh).write (new_name);
392 
393  else if (contains(basename, ".mesh"))
394  MEDITIO(mymesh).write (new_name);
395 
396  else if (contains(basename, ".poly"))
397  TetGenIO(mymesh).write (new_name);
398 
399  else if (contains(basename, ".msh"))
400  GmshIO(mymesh).write (new_name);
401 
402  else if (contains(basename, ".fro"))
403  FroIO(mymesh).write (new_name);
404 
405  else if (contains(basename, ".pvtu"))
406  VTKIO(mymesh).write (name);
407 
408  else if (contains(basename, ".stl"))
409  STLIO(mymesh).write (new_name);
410 
411  else
412  {
414  << " ERROR: Unrecognized file extension: " << name
415  << "\n I understand the following:\n\n"
416  << " *.cpa -- libMesh ASCII checkpoint format\n"
417  << " *.cpr -- libMesh binary checkpoint format,\n"
418  << " *.dat -- Tecplot ASCII file\n"
419  << " *.e -- Sandia's ExodusII format\n"
420  << " *.exo -- Sandia's ExodusII format\n"
421  << " *.fro -- ACDL's surface triangulation file\n"
422  << " *.gmv -- LANL's GMV (General Mesh Viewer) format\n"
423  << " *.mesh -- MEdit mesh format\n"
424  << " *.msh -- GMSH ASCII file\n"
425  << " *.n -- Sandia's Nemesis format\n"
426  << " *.nem -- Sandia's Nemesis format\n"
427  << " *.plt -- Tecplot binary file\n"
428  << " *.poly -- TetGen ASCII file\n"
429  << " *.pvtu -- VTK (paraview-readable) format\n"
430  << " *.stl -- STereoLithography triangulation format\n" \
431  << " *.ucd -- AVS's ASCII UCD format\n"
432  << " *.unv -- I-deas Universal format\n"
433  << " *.xda -- libMesh ASCII format\n"
434  << " *.xdr -- libMesh binary format,\n"
435  << std::endl
436  << "\n Exiting without writing output\n";
437  }
438  }
439 
440  // Nasty hack for reading/writing zipped files
441  if (ends_with(basename, ".bz2"))
442  {
443  LOG_SCOPE("system(bzip2)", "NameBasedIO");
444  if (mymesh.processor_id() == 0)
445  {
446  std::string system_string = "bzip2 -f -c ";
447  system_string += new_name + " > " + name;
448  if (std::system(system_string.c_str()))
449  libmesh_file_error(system_string);
450  std::remove(new_name.c_str());
451  }
452  mymesh.comm().barrier();
453  }
454  if (ends_with(basename, ".xz"))
455  {
456  LOG_SCOPE("system(xz)", "NameBasedIO");
457  if (mymesh.processor_id() == 0)
458  {
459  std::string system_string = "xz -f -c ";
460  system_string += new_name + " > " + name;
461  if (std::system(system_string.c_str()))
462  libmesh_file_error(system_string);
463  std::remove(new_name.c_str());
464  }
465  mymesh.comm().barrier();
466  }
467  }
468 }
469 
470 
471 void NameBasedIO::write_nodal_data (const std::string & name,
472  const std::vector<Number> & v,
473  const std::vector<std::string> & vn)
474 {
475  const MeshBase & mymesh = MeshOutput<MeshBase>::mesh();
476 
477  using Utility::contains;
478  using Utility::ends_with;
479 
480  // Write the file based on extension
481  if (contains(name, ".dat"))
482  TecplotIO(mymesh).write_nodal_data (name, v, vn);
483 
484  else if (contains(name, ".exd") ||
485  contains(name, ".exo") ||
486  contains(name, ".e"))
487  ExodusII_IO(mymesh).write_nodal_data(name, v, vn);
488 
489  else if (contains(name, ".gmv"))
490  {
491  if (mymesh.n_subdomains() > 1)
492  GMVIO(mymesh).write_nodal_data (name, v, vn);
493  else
494  {
495  GMVIO io(mymesh);
496  io.partitioning() = false;
497  io.write_nodal_data (name, v, vn);
498  }
499  }
500 
501  else if (contains(name, ".mesh"))
502  MEDITIO(mymesh).write_nodal_data (name, v, vn);
503 
504  else if (contains(name, ".msh"))
505  GmshIO(mymesh).write_nodal_data (name, v, vn);
506 
507  else if (contains(name, ".nem") ||
508  contains(name, ".n"))
509  Nemesis_IO(mymesh).write_nodal_data(name, v, vn);
510 
511  else if (contains(name, ".plt"))
512  TecplotIO(mymesh,true).write_nodal_data (name, v, vn);
513 
514  else if (contains(name, ".pvtu"))
515  VTKIO(mymesh).write_nodal_data (name, v, vn);
516 
517  else if (contains(name, ".ucd"))
518  UCDIO (mymesh).write_nodal_data (name, v, vn);
519 
520  else
521  {
523  << " ERROR: Unrecognized file extension: " << name
524  << "\n I understand the following:\n\n"
525  << " *.dat -- Tecplot ASCII file\n"
526  << " *.e -- Sandia's ExodusII format\n"
527  << " *.exo -- Sandia's ExodusII format\n"
528  << " *.gmv -- LANL's GMV (General Mesh Viewer) format\n"
529  << " *.mesh -- MEdit mesh format\n"
530  << " *.msh -- GMSH ASCII file\n"
531  << " *.n -- Sandia's Nemesis format\n"
532  << " *.nem -- Sandia's Nemesis format\n"
533  << " *.plt -- Tecplot binary file\n"
534  << " *.pvtu -- Paraview VTK file\n"
535  << " *.ucd -- AVS's ASCII UCD format\n"
536  << "\n Exiting without writing output\n";
537  }
538 }
539 
540 
541 void NameBasedIO::write_equation_systems (const std::string & filename,
542  const EquationSystems & es,
543  const std::set<std::string> * system_names)
544 {
545  // XDA/XDR require a separate code path, and currently only support
546  // writing complete restarts
547  if (!system_names)
548  {
549  const std::string_view basename =
550  Utility::basename_of(filename);
551 
552  if (Utility::contains(basename, ".xda"))
553  {
554  es.write(filename,WRITE,
557  return;
558  }
559  else if (Utility::contains(basename, ".xdr"))
560  {
561  es.write(filename,ENCODE,
564  return;
565  }
566  }
567 
568  // Other formats just use the default "write nodal values" path
570  (filename, es, system_names);
571 }
572 
573 
575 {
576  using Utility::contains;
577  using Utility::ends_with;
578  return (contains(name, ".xda") || contains(name, ".xdr") ||
579  ends_with(name, ".nem") || ends_with(name, ".n") ||
580  contains(name, ".cp"));
581 }
582 
583 
584 } // namespace libMesh
virtual void read(const std::string &name) override
This method implements reading a mesh from a specified file.
Definition: abaqus_io.C:227
std::string name(const ElemQuality q)
This function returns a string containing some name for q.
Definition: elem_quality.C:42
OStreamProxy err
const MT & mesh() const
Definition: mesh_output.h:259
This class implements reading meshes in the Matlab PDE toolkit in a proprietary format.
Definition: matlab_io.h:85
virtual void read(const std::string &mesh_file) override
This method implements reading a mesh from a specified file.
Definition: gmv_io.C:1866
The CheckpointIO class can be used to write simplified restart files that can be used to restart simu...
Definition: checkpoint_io.h:61
virtual void read(const std::string &) override
This method implements reading a mesh from a specified file in UCD format.
Definition: ucd_io.C:82
virtual void read(const std::string &name) override
Reads in a mesh in the Dyna format from the ASCII file given by name.
Definition: dyna_io.C:139
virtual void write_equation_systems(const std::string &filename, const EquationSystems &es, const std::set< std::string > *system_names=nullptr) override
This method implements writing a mesh with data to a specified file where the data is taken from the ...
Definition: namebased_io.C:541
This is the EquationSystems class.
virtual void write(const std::string &name) override
This method implements writing a mesh to a specified file.
Reading and writing meshes in the Gmsh format.
Definition: gmsh_io.h:51
virtual void write(const std::string &name) override
This method implements writing a mesh to a specified file in the Gmsh *.msh format.
Definition: gmsh_io.C:909
void write(std::string_view name, const XdrMODE, const unsigned int write_flags=(WRITE_DATA), bool partition_agnostic=true) const
Write the systems to disk using the XDR data format.
virtual void read(const std::string &base_filename) override
Implements reading the mesh from several different files.
Definition: nemesis_io.C:214
Reading and writing meshes in (a subset of) LS-DYNA format.
Definition: dyna_io.h:52
virtual void read(const std::string &) override
This method implements reading a mesh from a specified file in TetGen format.
Definition: tetgen_io.C:36
This class implements reading and writing triangle meshes in the STL format.
Definition: stl_io.h:45
bool is_parallel_file_format(std::string_view filename)
Definition: namebased_io.C:574
The AbaqusIO class is a preliminary implementation for reading Abaqus mesh files in ASCII format...
Definition: abaqus_io.h:41
virtual void read(const std::string &mesh_file) override
This method implements reading a mesh from a specified file.
Definition: namebased_io.C:69
virtual void write(const std::string &) override
This method implements writing a mesh to a specified file.
Definition: gmv_io.C:271
void allow_renumbering(bool allow)
If false is passed in then this mesh will no longer be renumbered when being prepared for use...
Definition: mesh_base.h:1345
virtual void write(const std::string &) override
This method implements writing a mesh to a specified ".mesh" file.
Definition: medit_io.C:37
virtual void write_equation_systems(const std::string &, const EquationSystems &, const std::set< std::string > *system_names=nullptr)
This method implements writing a mesh with data to a specified file where the data is taken from the ...
Definition: mesh_output.C:31
bool ends_with(std::string_view superstring, std::string_view suffix)
Look for a substring at the very end of a string.
Definition: utility.C:213
bool legacy() const
Get/Set the flag indicating if we should read/write legacy.
Definition: xdr_io.h:109
The ExodusII_IO class implements reading meshes in the ExodusII file format from Sandia National Labs...
Definition: exodusII_io.h:50
virtual void read(const std::string &input_name) override
This method implements reading a mesh from a specified file.
virtual void read(const std::string &name) override
Reads in a matlab data file based on the string you pass it.
Definition: matlab_io.C:33
void barrier() const
virtual void read(const std::string &mesh_file) override
This method implements reading a mesh from a specified file.
Definition: stl_io.C:165
virtual void write(const std::string &) override
Output the mesh without solutions to a .pvtu file.
const Parallel::Communicator & comm() const
virtual void write_nodal_data(const std::string &, const std::vector< Number > &, const std::vector< std::string > &) override
This method implements writing a mesh with nodal data to a specified file where the nodal data and va...
Definition: gmsh_io.C:926
This class implements writing meshes in the mesh format used by the MEdit visualization tool develope...
Definition: medit_io.h:47
This class implements reading and writing meshes in the TetGen format.
Definition: tetgen_io.h:47
The libMesh namespace provides an interface to certain functionality in the library.
This class implements writing meshes in the GMV format.
Definition: gmv_io.h:46
This class implements reading and writing meshes in the VTK format.
Definition: vtk_io.h:60
bool & partitioning()
Flag indicating whether or not to write the partitioning information for the mesh.
Definition: gmv_io.h:107
MeshIO class used for writing XDR (eXternal Data Representation) and XDA mesh files.
Definition: xdr_io.h:51
This is the MeshBase class.
Definition: mesh_base.h:80
virtual void read(const std::string &) override
This method implements reading a mesh from a specified file in VTK format.
Definition: vtk_io.C:186
virtual void write_nodal_data(const std::string &, const std::vector< Number > &, const std::vector< std::string > &) override
This method implements writing a mesh with nodal data to a specified file where the nodal data and va...
Definition: gmv_io.C:281
virtual void write(const std::string &) override
This method implements writing a mesh to a specified file.
Definition: unv_io.C:257
This class implements writing meshes in the .fro format used by the MIT ACDL.
Definition: fro_io.h:42
processor_id_type n_processors() const
This class is responsible for reading an unstructured, triangulated surface in the standard OFF OOGL ...
Definition: off_io.h:39
This is the MeshCommunication class.
This class implements reading & writing meshes in the AVS&#39;s UCD format.
Definition: ucd_io.h:44
virtual void write(const std::string &) override
This method implements writing a mesh to a specified file.
Definition: stl_io.C:81
The Nemesis_IO class implements reading parallel meshes in the Nemesis file format from Sandia Nation...
Definition: nemesis_io.h:51
virtual void write(const std::string &) override
This method implements writing a mesh to a specified file.
Definition: xdr_io.C:127
virtual void write(const std::string &mesh_file) override
This method implements writing a mesh to a specified file.
Definition: namebased_io.C:306
virtual void write_nodal_data(const std::string &, const std::vector< Number > &, const std::vector< std::string > &) override
This method implements writing a mesh with nodal data to a specified file where the nodal data and va...
Definition: vtk_io.C:353
bool contains(std::string_view superstring, std::string_view substring)
Look for a substring within a string.
Definition: utility.C:205
virtual void write(const std::string &) override
This method implements writing a mesh to a specified file.
Definition: tecplot_io.C:174
virtual void write_nodal_data(const std::string &, const std::vector< Number > &, const std::vector< std::string > &) override
This method implements writing a mesh with nodal data to a specified file where the nodal data and va...
Definition: namebased_io.C:471
virtual void read(const std::string &name) override
This method implements reading a mesh from a specified file.
Definition: exodusII_io.C:246
void broadcast(T &data, const unsigned int root_id=0, const bool identical_sizes=false) const
virtual void write(const std::string &) override
This method implements writing a mesh to a specified file.
Definition: fro_io.C:41
virtual void write_nodal_data(const std::string &fname, const std::vector< Number > &soln, const std::vector< std::string > &names) override
Output a nodal solution from data in soln.
Definition: nemesis_io.C:1571
unsigned int n_partitions() const
Definition: mesh_base.h:1516
std::string_view basename_of(const std::string &fullname)
Definition: utility.C:108
subdomain_id_type n_subdomains() const
Definition: mesh_base.C:1183
virtual void read(const std::string &name) override
Reads in an OFF OOGL data file based on the string you pass it.
Definition: off_io.C:35
virtual void write(const std::string &fname) override
This method implements writing a mesh to a specified file.
Definition: exodusII_io.C:2197
void broadcast(MeshBase &) const
Finds all the processors that may contain elements that neighbor my elements.
virtual void write(const std::string &) override
This method implements writing a mesh to a specified ".poly" file.
Definition: tetgen_io.C:270
virtual void write_nodal_data(const std::string &, const std::vector< Number > &, const std::vector< std::string > &) override
This method implements writing a mesh with nodal data to a specified file where the nodal data and va...
Definition: medit_io.C:46
virtual void write(const std::string &base_filename) override
This method implements writing a mesh to a specified file.
Definition: nemesis_io.C:1228
This class implements writing meshes in the Tecplot format.
Definition: tecplot_io.h:43
virtual void write_nodal_data(const std::string &, const std::vector< Number > &, const std::vector< std::string > &) override
This method implements writing a mesh with nodal data to a specified file where the nodal data and va...
Definition: tecplot_io.C:187
bool binary() const
Get/Set the flag indicating if we should read/write binary.
Definition: xdr_io.h:103
virtual void read(const std::string &name) override
Reads in a mesh in the Gmsh *.msh format from the ASCII file given by name.
Definition: gmsh_io.C:149
virtual void write_nodal_data(const std::string &, const std::vector< Number > &, const std::vector< std::string > &) override
Write out a nodal solution.
Definition: exodusII_io.C:1836
processor_id_type processor_id() const
virtual void write_nodal_data(const std::string &fname, const std::vector< Number > &soln, const std::vector< std::string > &names) override
This method implements writing a mesh and solution to a specified file in UCD format.
Definition: ucd_io.C:331
virtual void write(const std::string &) override
This method implements writing a mesh to a specified file in UCD format.
Definition: ucd_io.C:103
virtual void read(const std::string &) override
This method implements reading a mesh from a specified file.
Definition: unv_io.C:96
virtual void read(const std::string &) override
This method implements reading a mesh from a specified file.
Definition: xdr_io.C:1436
The UNVIO class implements the Ideas UNV universal file format.
Definition: unv_io.h:52