27int main(
int argc,
char* argv[])
29 constexpr int mat_not_set = std::numeric_limits<int>::max();
32 "Marks all elements in a voxel grid (i.e. a structured hex grid, for "
33 "instance created with Layers2Grid or Vtu2Grid) that are intersected "
34 "by a triangulated 2D mesh representing a fault or some other "
35 "significant structure. The material group for those intersected "
36 "elements can be explicitly specified, otherwise the largest existing "
37 "MaterialID will be increased by one.\n\n"
38 "OpenGeoSys-6 software, version " +
41 "Copyright (c) 2012-2025, OpenGeoSys Community "
42 "(http://www.opengeosys.org)",
44 TCLAP::ValueArg<int> id_arg(
46 "material id for cells intersected by fault, (min = 0)",
false,
47 mat_not_set,
"MATERIAL_ID");
50 TCLAP::ValueArg<std::string> output_arg(
51 "o",
"output",
"Output (.vtu). Name of output mesh file",
true,
"",
55 TCLAP::ValueArg<std::string> fault_arg(
56 "f",
"fault",
"Input (.vtu). Name of mesh file representing fault",
57 true,
"",
"INPUT_FILE");
60 TCLAP::ValueArg<std::string> input_arg(
62 "Input (.vtu). Name of the input file containing the paths the "
64 "in correct order from top to bottom",
65 true,
"",
"INPUT_FILE");
69 cmd.add(log_level_arg);
70 cmd.parse(argc, argv);
75 std::string
const input_name = input_arg.getValue();
76 std::string
const fault_name = fault_arg.getValue();
77 std::string
const output_name = output_arg.getValue();
81 std::unique_ptr<MeshLib::Mesh> mesh(
83 std::unique_ptr<MeshLib::Mesh> fault(
87 ERR(
"Input mesh not found...");
93 ERR(
"Input mesh has no material IDs");
96 int fault_id = id_arg.getValue();
99 auto it = std::max_element(mat_ids->cbegin(), mat_ids->cend());
102 if (addFaultToVoxelGrid(mesh.get(), fault.get(), fault_id))
106 INFO(
"The fault was successfully added.");
109 ERR(
"No fault could be added.");