OGS
BinaryToPVTU.cpp File Reference

Detailed Description

A tool for debugging the mesh partitioning.

Definition in file BinaryToPVTU.cpp.

#include <mpi.h>
#include <spdlog/spdlog.h>
#include <tclap/CmdLine.h>
#include <vtkMPIController.h>
#include <vtkSmartPointer.h>
#include "BaseLib/CPUTime.h"
#include "BaseLib/FileTools.h"
#include "BaseLib/RunTime.h"
#include "InfoLib/GitInfo.h"
#include "MeshLib/IO/VtkIO/VtuInterface.h"
#include "MeshLib/IO/readMeshFromFile.h"
#include "MeshLib/NodePartitionedMesh.h"
Include dependency graph for BinaryToPVTU.cpp:

Go to the source code of this file.

Functions

int main (int argc, char *argv[])
 

Function Documentation

◆ main()

int main ( int argc,
char * argv[] )

Definition at line 27 of file BinaryToPVTU.cpp.

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
66 BaseLib::setConsoleLogLevel(log_level_arg.getValue());
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 // init MPI
76 MPI_Init(&argc, &argv);
77
78 // start the timer
79 BaseLib::RunTime run_timer;
80 run_timer.start();
81 BaseLib::CPUTime CPU_timer;
82 CPU_timer.start();
83
84 // add mpi_rank to logger output
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 // init vtkMPI
90 vtkSmartPointer<vtkMPIController> controller =
91 vtkSmartPointer<vtkMPIController>::New();
92 controller->Initialize(&argc, &argv, 1);
93 vtkMPIController::SetGlobalController(controller);
94
96 dynamic_cast<MeshLib::NodePartitionedMesh*>(
97 MeshLib::IO::readMeshFromFile(mesh_input.getValue()));
98 INFO("Mesh '{:s}' read: {:d} nodes, {:d} elements.",
99 mesh->getName(),
100 mesh->getNumberOfNodes(),
101 mesh->getNumberOfElements());
102 INFO("Mesh read runtime: {:g} s.", run_timer.elapsed());
103 INFO("Mesh read CPU time: {:g} s.", CPU_timer.elapsed());
104
105 // Write output file
106 auto const file_name = output_directory_arg.getValue() + ".vtu";
107 DBUG("Writing output to '{:s}'.", file_name);
108
109 MeshLib::IO::VtuInterface vtu_interface(mesh);
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}
#define OGS_FATAL(...)
Definition Error.h:26
void INFO(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:35
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:30
Count CPU time.
Definition CPUTime.h:23
void start()
Start the timer.
Definition CPUTime.h:26
double elapsed() const
Get the elapsed time after started.
Definition CPUTime.h:29
Count the running time.
Definition RunTime.h:29
double elapsed() const
Get the elapsed time in seconds.
Definition RunTime.h:42
void start()
Start the timer.
Definition RunTime.h:32
Reads and writes VtkXMLUnstructuredGrid-files (vtu) to and from OGS data structures....
const std::string getName() const
Get name of the mesh.
Definition Mesh.h:103
std::size_t getNumberOfNodes() const
Get the number of nodes.
Definition Mesh.h:100
std::size_t getNumberOfElements() const
Get the number of elements.
Definition Mesh.h:97
void setConsoleLogLevel(std::string const &level_string)
Definition Logging.cpp:37
GITINFOLIB_EXPORT const std::string ogs_version
MeshLib::Mesh * readMeshFromFile(const std::string &file_name, bool const compute_element_neighbors)

References DBUG(), BaseLib::CPUTime::elapsed(), BaseLib::RunTime::elapsed(), MeshLib::Mesh::getName(), MeshLib::Mesh::getNumberOfElements(), MeshLib::Mesh::getNumberOfNodes(), INFO(), OGS_FATAL, GitInfoLib::GitInfo::ogs_version, MeshLib::IO::readMeshFromFile(), BaseLib::setConsoleLogLevel(), BaseLib::CPUTime::start(), BaseLib::RunTime::start(), and MeshLib::IO::VtuInterface::writeToFile().