20 #include "libmesh/distributed_mesh.h"
21 #include "libmesh/equation_systems.h"
22 #include "libmesh/libmesh_logging.h"
23 #include "libmesh/mesh_output.h"
24 #include "libmesh/unstructured_mesh.h"
25 #include "libmesh/numeric_vector.h"
33 const std::set<std::string> * system_names)
35 LOG_SCOPE(
"write_equation_systems()",
"MeshOutput");
39 MT & my_mesh = const_cast<MT &>(*_obj);
43 libmesh_assert_equal_to(&es.
get_mesh(), _obj);
47 if (my_mesh.max_elem_id() != my_mesh.n_elem() ||
48 my_mesh.max_node_id() != my_mesh.n_nodes())
55 "Warning: This MeshOutput subclass only supports meshes which are contiguously renumbered!"
58 my_mesh.allow_renumbering(
true);
60 my_mesh.renumber_nodes_and_elements();
64 my_mesh.allow_renumbering(
false);
67 if (!_is_parallel_format)
69 MeshSerializer serialize(const_cast<MT &>(*_obj), !_is_parallel_format, _serial_only_needed_on_proc_0);
72 std::vector<std::string> names;
77 std::vector<Number> soln;
80 this->write_nodal_data (fname, soln, names);
83 this->write_nodal_data (fname, es, system_names);
89 const std::set<std::string> * system_names)
91 LOG_SCOPE(
"write_discontinuous_equation_systems()",
"MeshOutput");
95 MT & my_mesh = const_cast<MT &>(*_obj);
99 libmesh_assert_equal_to(&es.
get_mesh(), _obj);
103 if (my_mesh.max_elem_id() != my_mesh.n_elem() ||
104 my_mesh.max_node_id() != my_mesh.n_nodes())
111 "Warning: This MeshOutput subclass only supports meshes which are contiguously renumbered!"
114 my_mesh.allow_renumbering(
true);
116 my_mesh.renumber_nodes_and_elements();
120 my_mesh.allow_renumbering(
false);
123 MeshSerializer serialize(const_cast<MT &>(*_obj), !_is_parallel_format, _serial_only_needed_on_proc_0);
126 std::vector<std::string> names;
129 if (!_is_parallel_format)
133 std::vector<Number> soln;
136 this->write_nodal_data_discontinuous (fname, soln, names);
140 libmesh_not_implemented();
147 const std::vector<std::string> & names)
152 std::vector<Number> soln;
154 this->write_nodal_data(fname, soln, names);
160 const std::set<std::string> * system_names)
162 std::vector<std::string> names;
165 std::unique_ptr<NumericVector<Number>> parallel_soln =
168 this->write_nodal_data (fname, *parallel_soln, names);