From e52a4c22a3dd53e5a09d2a78fba208b828894908 Mon Sep 17 00:00:00 2001 From: Norihiro Watanabe <norihiro.watanabe@ufz.de> Date: Fri, 24 Apr 2015 14:50:33 +0200 Subject: [PATCH] add queryMesh --- Applications/Utils/MeshEdit/CMakeLists.txt | 11 +++ Applications/Utils/MeshEdit/queryMesh.cpp | 89 ++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 Applications/Utils/MeshEdit/queryMesh.cpp diff --git a/Applications/Utils/MeshEdit/CMakeLists.txt b/Applications/Utils/MeshEdit/CMakeLists.txt index 6a6c6181792..31b6669bc98 100644 --- a/Applications/Utils/MeshEdit/CMakeLists.txt +++ b/Applications/Utils/MeshEdit/CMakeLists.txt @@ -154,3 +154,14 @@ ADD_CATALYST_DEPENDENCY(CreateBoundaryConditionsAlongPolylines) set_target_properties(CreateBoundaryConditionsAlongPolylines PROPERTIES FOLDER Utilities) + +add_executable(queryMesh + queryMesh.cpp ) +target_link_libraries(queryMesh + FileIO + MeshLib + InSituLib + ${CATALYST_LIBRARIES} +) +set_target_properties(queryMesh + PROPERTIES FOLDER Utilities) diff --git a/Applications/Utils/MeshEdit/queryMesh.cpp b/Applications/Utils/MeshEdit/queryMesh.cpp new file mode 100644 index 00000000000..25701365bb7 --- /dev/null +++ b/Applications/Utils/MeshEdit/queryMesh.cpp @@ -0,0 +1,89 @@ +/** + * Copyright (c) 2012-2015, OpenGeoSys Community (http://www.opengeosys.org) + * Distributed under a Modified BSD License. + * See accompanying file LICENSE.txt or + * http://www.opengeosys.org/LICENSE.txt + * + */ + +#include <array> +#include <string> + +#include "logog/include/logog.hpp" +#include "tclap/CmdLine.h" + +#include "BaseLib/BuildInfo.h" +#include "BaseLib/StringTools.h" +#include "BaseLib/LogogSimpleFormatter.h" +#include "BaseLib/FileTools.h" + +#include "MeshLib/Node.h" +#include "MeshLib/Elements/Element.h" +#include "MeshLib/Mesh.h" + +#include "FileIO/readMeshFromFile.h" + +int main(int argc, char *argv[]) +{ + LOGOG_INITIALIZE(); + logog::Cout* logog_cout (new logog::Cout); + BaseLib::LogogSimpleFormatter *custom_format (new BaseLib::LogogSimpleFormatter); + logog_cout->SetFormatter(*custom_format); + + TCLAP::CmdLine cmd("Query mesh information", ' ', BaseLib::BuildInfo::git_describe); + TCLAP::UnlabeledValueArg<std::string> mesh_arg("mesh-file","input mesh file",true,"","string"); + cmd.add( mesh_arg ); + TCLAP::MultiArg<std::size_t> eleId_arg("e","element-id","element ID",false,"number"); + cmd.add( eleId_arg ); + TCLAP::MultiArg<std::size_t> nodeId_arg("n","node-id","node ID",false,"number"); + cmd.add( nodeId_arg ); + + cmd.parse( argc, argv ); + + const std::string filename(mesh_arg.getValue()); + + // read the mesh file + const MeshLib::Mesh* mesh = FileIO::readMeshFromFile(filename); + if (!mesh) + return 1; + + std::cout << std::scientific << std::setprecision(12); + for (auto ele_id : eleId_arg.getValue()) + { + std::cout << "--------------------------------------------------------" << std::endl; + auto* ele = mesh->getElement(ele_id); + std::cout << "# Element " << ele->getID() << std::endl; + std::cout << "Type : " << CellType2String(ele->getCellType()) << std::endl; + std::cout << "Mat ID : " << ele->getValue() << std::endl; + std::cout << "Nodes: " << std::endl; + for (unsigned i=0; i<ele->getNNodes(); i++) + std::cout << ele->getNode(i)->getID() << " " << *ele->getNode(i) << std::endl; + std::cout << "Content: " << ele->getContent() << std::endl; + std::cout << "Neighbors: "; + for (unsigned i=0; i<ele->getNNeighbors(); i++) + { + if (ele->getNeighbor(i)) + std::cout << ele->getNeighbor(i)->getID() << " "; + else + std::cout << "none "; + } + std::cout << std::endl; + } + + for (auto node_id : nodeId_arg.getValue()) + { + std::cout << "--------------------------------------------------------" << std::endl; + auto* node = mesh->getNode(node_id); + std::cout << "# Node" << node->getID() << std::endl; + std::cout << "Coordinates: " << *node << std::endl; + std::cout << "Connected elements: " ; + for (unsigned i=0; i<node->getNElements(); i++) + std::cout << node->getElement(i)->getID() << " "; + std::cout << std::endl; + } + + delete mesh; + delete custom_format; + delete logog_cout; + LOGOG_SHUTDOWN(); +} -- GitLab