11#include <tclap/CmdLine.h>
27int main(
int argc,
char* argv[])
30 "Moves the mesh nodes using the given displacement vector or if no "
31 "displacement vector is given, moves the mesh nodes such that the "
32 "centroid of the given mesh is in the origin.\n\n"
33 "OpenGeoSys-6 software, version " +
36 "Copyright (c) 2012-2025, OpenGeoSys Community "
37 "(http://www.opengeosys.org)",
42 TCLAP::ValueArg<std::string> mesh_arg(
"m",
"mesh",
"Input (.vtu) mesh file",
43 true,
"",
"INPUT_FILE");
49 TCLAP::ValueArg<double> x_arg(
"x",
"x",
"displacement in x direction",
50 false, 0.0,
"DISPLACEMENT_X");
52 TCLAP::ValueArg<double> y_arg(
"y",
"y",
"displacement in y direction",
53 false, 0.0,
"DISPLACEMENT_Y");
55 TCLAP::ValueArg<double> z_arg(
"z",
"z",
"displacement in z direction",
56 false, 0.0,
"DISPLACEMENT_Z");
59 TCLAP::ValueArg<std::string> mesh_out_arg(
"o",
"output-mesh",
60 "Output (.vtu) mesh file",
false,
62 cmd.add(mesh_out_arg);
65 cmd.add(log_level_arg);
66 cmd.parse(argc, argv);
71 std::string fname(mesh_arg.getValue());
77 ERR(
"Could not read mesh from file '{:s}'.", fname);
81 Eigen::Vector3d displacement{x_arg.getValue(), y_arg.getValue(),
83 if (fabs(x_arg.getValue()) < std::numeric_limits<double>::epsilon() &&
84 fabs(y_arg.getValue()) < std::numeric_limits<double>::epsilon() &&
85 fabs(z_arg.getValue()) < std::numeric_limits<double>::epsilon())
87 GeoLib::AABB aabb(mesh->getNodes().begin(), mesh->getNodes().end());
89 displacement = -(max + min) / 2.0;
92 INFO(
"translate model ({:f}, {:f}, {:f}).",
97 mesh->getNodes().end(), displacement);
99 std::string out_fname(mesh_out_arg.getValue());
100 if (out_fname.empty())
103 out_fname +=
"_displaced.vtu";
Definition of the AABB class.
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[])
Definition of the Node class.
Class AABB is an axis aligned bounding box around a given set of geometric points of (template) type ...
MinMaxPoints getMinMaxPoints() const
Functionality to move mesh nodes using a given displacement vec.
TCLAP::ValueArg< std::string > makeLogLevelArg()
void initOGSLogger(std::string const &log_level)
std::string dropFileExtension(std::string const &filename)
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.