From 2b1c05a2a5e0b324b03863997b2bdfbd96fdc99e Mon Sep 17 00:00:00 2001 From: Thomas Fischer <thomas.fischer@ufz.de> Date: Tue, 16 May 2017 09:24:16 +0200 Subject: [PATCH] [MGTL] Make SearchLength calculation configurable. --- MeshGeoToolsLib/MeshNodeSearcher.cpp | 8 +++++--- MeshGeoToolsLib/MeshNodeSearcher.h | 11 +++++++---- ProcessLib/BoundaryCondition/BoundaryCondition.cpp | 5 ++++- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/MeshGeoToolsLib/MeshNodeSearcher.cpp b/MeshGeoToolsLib/MeshNodeSearcher.cpp index bca2ddeba8a..79c8e05396d 100644 --- a/MeshGeoToolsLib/MeshNodeSearcher.cpp +++ b/MeshGeoToolsLib/MeshNodeSearcher.cpp @@ -137,8 +137,9 @@ MeshNodesAlongSurface& MeshNodeSearcher::getMeshNodesAlongSurface(GeoLib::Surfac return *_mesh_nodes_along_surfaces.back(); } -MeshNodeSearcher& -MeshNodeSearcher::getMeshNodeSearcher(MeshLib::Mesh const& mesh) +MeshNodeSearcher& MeshNodeSearcher::getMeshNodeSearcher( + MeshLib::Mesh const& mesh, + MeshGeoToolsLib::SearchLength const& search_length_algorithm) { std::size_t const mesh_id = mesh.getID(); if (_mesh_node_searchers.size() < mesh_id+1) @@ -146,7 +147,8 @@ MeshNodeSearcher::getMeshNodeSearcher(MeshLib::Mesh const& mesh) if (!_mesh_node_searchers[mesh_id]) _mesh_node_searchers[mesh_id].reset( - new MeshGeoToolsLib::MeshNodeSearcher(mesh)); + new MeshGeoToolsLib::MeshNodeSearcher(mesh, + search_length_algorithm)); return *_mesh_node_searchers[mesh_id]; } diff --git a/MeshGeoToolsLib/MeshNodeSearcher.h b/MeshGeoToolsLib/MeshNodeSearcher.h index fdd432e4039..a0093aaca7f 100644 --- a/MeshGeoToolsLib/MeshNodeSearcher.h +++ b/MeshGeoToolsLib/MeshNodeSearcher.h @@ -59,9 +59,9 @@ public: * @param search_all_nodes switch between searching all mesh nodes and * searching the base nodes. */ - explicit MeshNodeSearcher(MeshLib::Mesh const& mesh, - MeshGeoToolsLib::SearchLength const& search_length_algorithm - = MeshGeoToolsLib::SearchLength(), + MeshNodeSearcher( + MeshLib::Mesh const& mesh, + MeshGeoToolsLib::SearchLength const& search_length_algorithm, bool search_all_nodes = true); virtual ~MeshNodeSearcher(); @@ -133,7 +133,10 @@ public: * Returns a (possibly new) mesh node searcher for the mesh. * A new one will be created, if it does not already exists. */ - static MeshNodeSearcher& getMeshNodeSearcher(MeshLib::Mesh const& mesh); + static MeshNodeSearcher& getMeshNodeSearcher( + MeshLib::Mesh const& mesh, + MeshGeoToolsLib::SearchLength const& search_length_algorithm = + MeshGeoToolsLib::SearchLength()); private: MeshLib::Mesh const& _mesh; diff --git a/ProcessLib/BoundaryCondition/BoundaryCondition.cpp b/ProcessLib/BoundaryCondition/BoundaryCondition.cpp index f239698e7c9..99caf1eed1f 100644 --- a/ProcessLib/BoundaryCondition/BoundaryCondition.cpp +++ b/ProcessLib/BoundaryCondition/BoundaryCondition.cpp @@ -25,8 +25,11 @@ std::unique_ptr<BoundaryCondition> BoundaryConditionBuilder::createBoundaryCondi const unsigned shapefunction_order, const std::vector<std::unique_ptr<ProcessLib::ParameterBase>>& parameters) { + MeshGeoToolsLib::SearchLength search_length_algorithm; + MeshGeoToolsLib::MeshNodeSearcher& mesh_node_searcher = - MeshGeoToolsLib::MeshNodeSearcher::getMeshNodeSearcher(mesh); + MeshGeoToolsLib::MeshNodeSearcher::getMeshNodeSearcher( + mesh, search_length_algorithm); MeshGeoToolsLib::BoundaryElementsSearcher boundary_element_searcher( mesh, mesh_node_searcher); -- GitLab