15#include <tclap/CmdLine.h>
28int main(
int argc,
char* argv[])
31 "Creates a new file for material properties and sets the material ids "
32 "in the msh-file to 0\n\n"
33 "OpenGeoSys-6 software, version " +
36 "Copyright (c) 2012-2024, OpenGeoSys Community "
37 "(http://www.opengeosys.org)",
40 TCLAP::ValueArg<std::string> mesh_arg(
"m",
42 "the mesh to open from a file",
45 "filename for mesh input");
48 cmd.parse(argc, argv);
53 std::unique_ptr<MeshLib::Mesh> mesh(
58 INFO(
"Could not read mesh from file '{:s}'.", mesh_arg.getValue());
62 auto const materialIds = materialIDs(*mesh);
65 OGS_FATAL(
"Mesh contains no int-property vector named 'MaterialIDs'.");
68 std::size_t
const n_properties(materialIds->size());
69 assert(n_properties != mesh->getNumberOfElements());
71 std::string
const name =
74 std::string
const new_matname(name +
"_prop");
75 std::ofstream out_prop(new_matname.c_str(), std::ios::out);
76 if (out_prop.is_open())
78 for (std::size_t i = 0; i < n_properties; ++i)
80 out_prop << i <<
"\t" << (*materialIds)[i] <<
"\n";
86 ERR(
"Could not create property '{:s}' file.", new_matname);
90 mesh->getProperties().removePropertyVector(
"MaterialIDs");
92 std::string
const new_mshname(name +
"_new.vtu");
93 INFO(
"Writing mesh to file '{:s}'.", new_mshname);
96 INFO(
"New files '{:s}' and '{:s}' written.", new_mshname, new_matname);
Definition of the Element class.
void INFO(fmt::format_string< Args... > fmt, Args &&... args)
void ERR(fmt::format_string< Args... > fmt, Args &&... args)
Definition of the Mesh class.
int main(int argc, char *argv[])
std::string extractBaseNameWithoutExtension(std::string const &pathname)
GITINFOLIB_EXPORT const std::string ogs_version
MeshLib::Mesh * readMeshFromFile(const std::string &file_name, bool const compute_element_neighbors)
int writeMeshToFile(const MeshLib::Mesh &mesh, std::filesystem::path const &file_path, std::set< std::string > variable_output_names)
Definition of readMeshFromFile function.