OGS
MeshNodeSearcher.h
Go to the documentation of this file.
1
11#pragma once
12
13#include <memory>
14#include <vector>
15
16#include "GeoLib/Grid.h"
20
21// forward declaration
22namespace GeoLib
23{
24struct GeoObject;
25class Point;
26class Polyline;
27class Surface;
28}
29
30namespace MeshLib
31{
32class Mesh;
33class Node;
34}
35
36namespace MeshGeoToolsLib
37{
38class MeshNodesOnPoint;
39class MeshNodesAlongPolyline;
40class MeshNodesAlongSurface;
41}
42
43namespace MeshGeoToolsLib
44{
45
52{
53public:
64 std::unique_ptr<MeshGeoToolsLib::SearchLength>&&
65 search_length_algorithm,
66 SearchAllNodes search_all_nodes);
67
68 virtual ~MeshNodeSearcher();
69
75 std::vector<std::size_t> getMeshNodeIDs(
76 GeoLib::GeoObject const& geoObj) const;
77
83 std::vector<std::size_t> getMeshNodeIDs(
84 std::vector<MathLib::Point3dWithID*> const& points) const;
85
91 MeshLib::Mesh const& mesh,
92 std::unique_ptr<MeshGeoToolsLib::SearchLength>&&
93 search_length_algorithm);
94
95private:
98 std::unique_ptr<MeshGeoToolsLib::SearchLength> _search_length_algorithm;
100 // with newer compiler we can omit to use a pointer here
101 mutable std::vector<MeshNodesOnPoint*> _mesh_nodes_on_points;
102 mutable std::vector<MeshNodesAlongPolyline*> _mesh_nodes_along_polylines;
103 mutable std::vector<MeshNodesAlongSurface*> _mesh_nodes_along_surfaces;
104
106 static std::vector<std::unique_ptr<MeshNodeSearcher>> _mesh_node_searchers;
107};
108
109} // end namespace MeshGeoToolsLib
Definition of the Grid class.
Definition of the Point3d class.
Base class for different search length strategies.
std::vector< MeshNodesOnPoint * > _mesh_nodes_on_points
std::vector< std::size_t > getMeshNodeIDs(GeoLib::GeoObject const &geoObj) const
GeoLib::Grid< MeshLib::Node > _mesh_grid
static std::vector< std::unique_ptr< MeshNodeSearcher > > _mesh_node_searchers
Mesh node searcher for the meshes indexed by the meshs' ids.
std::unique_ptr< MeshGeoToolsLib::SearchLength > _search_length_algorithm
std::vector< MeshNodesAlongSurface * > _mesh_nodes_along_surfaces
static MeshNodeSearcher const & getMeshNodeSearcher(MeshLib::Mesh const &mesh, std::unique_ptr< MeshGeoToolsLib::SearchLength > &&search_length_algorithm)
std::vector< MeshNodesAlongPolyline * > _mesh_nodes_along_polylines
MeshNodeSearcher(MeshLib::Mesh const &mesh, std::unique_ptr< MeshGeoToolsLib::SearchLength > &&search_length_algorithm, SearchAllNodes search_all_nodes)
TemplateElement< PointRule1 > Point
Definition Point.h:20