28{
29 TCLAP::CmdLine cmd(
30 "Reads the binary mesh format and writes the data as vtus/pvtu.\n"
31 "OpenGeoSys-6 software, version " +
33 ".\n"
34 "Copyright (c) 2012-2024, OpenGeoSys Community "
35 "(http://www.opengeosys.org)",
37 TCLAP::ValueArg<std::string> mesh_input(
38 "i", "mesh-input-file-base",
39 "the base name of the files containing the input mesh, i.e., the file "
40 "name without the string beginning with '_partitioned' and ending with "
41 "'.bin'",
42 true, "", "base_file_name_of_input_mesh");
43 cmd.add(mesh_input);
44
45 TCLAP::ValueArg<std::string> output_directory_arg(
46 "o", "output",
47 "output directory name and output base file name without extensions",
48 true, "", "directory/base_file_name_without_extensions");
49 cmd.add(output_directory_arg);
50
51 TCLAP::ValueArg<std::string> log_level_arg(
52 "l", "log-level",
53 "the verbosity of logging messages: none, error, warn, info, debug, "
54 "all",
55 false,
56#ifdef NDEBUG
57 "info",
58#else
59 "all",
60#endif
61 "LOG_LEVEL");
62 cmd.add(log_level_arg);
63
64 cmd.parse(argc, argv);
65
67 spdlog::set_pattern("%^%l:%$ %v");
68 spdlog::set_error_handler(
69 [](const std::string& msg)
70 {
71 std::cerr << "spdlog error: " << msg << std::endl;
72 OGS_FATAL(
"spdlog logger error occurred.");
73 });
74
75
76 MPI_Init(&argc, &argv);
77
78
83
84
85 int mpi_rank;
86 MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
87 spdlog::set_pattern(fmt::format("[{}] %^%l:%$ %v", mpi_rank));
88
89
90 vtkSmartPointer<vtkMPIController> controller =
91 vtkSmartPointer<vtkMPIController>::New();
92 controller->Initialize(&argc, &argv, 1);
93 vtkMPIController::SetGlobalController(controller);
94
98 INFO(
"Mesh '{:s}' read: {:d} nodes, {:d} elements.",
102 INFO(
"Mesh read runtime: {:g} s.", run_timer.
elapsed());
103 INFO(
"Mesh read CPU time: {:g} s.", CPU_timer.
elapsed());
104
105
106 auto const file_name = output_directory_arg.getValue() + ".vtu";
107 DBUG(
"Writing output to '{:s}'.", file_name);
108
110 vtu_interface.writeToFile(file_name);
111
112 INFO(
"Total runtime: {:g} s.", run_timer.
elapsed());
113 INFO(
"Total CPU time: {:g} s.", CPU_timer.
elapsed());
114
115 MPI_Finalize();
116
117 return EXIT_SUCCESS;
118}
void INFO(fmt::format_string< Args... > fmt, Args &&... args)
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
void start()
Start the timer.
double elapsed() const
Get the elapsed time after started.
double elapsed() const
Get the elapsed time in seconds.
void start()
Start the timer.
Reads and writes VtkXMLUnstructuredGrid-files (vtu) to and from OGS data structures....
const std::string getName() const
Get name of the mesh.
std::size_t getNumberOfNodes() const
Get the number of nodes.
std::size_t getNumberOfElements() const
Get the number of elements.
void setConsoleLogLevel(std::string const &level_string)
GITINFOLIB_EXPORT const std::string ogs_version
MeshLib::Mesh * readMeshFromFile(const std::string &file_name, bool const compute_element_neighbors)