/** * \file * \copyright * Copyright (c) 2012-2021, OpenGeoSys Community (http://www.opengeosys.org) * Distributed under a Modified BSD License. * See accompanying file LICENSE.txt or * http://www.opengeosys.org/project/license */ #include "CreateSearchLength.h" #include "BaseLib/ConfigTree.h" #include "BaseLib/Error.h" #include "MeshGeoToolsLib/HeuristicSearchLength.h" #include "MeshGeoToolsLib/SearchLength.h" namespace MeshGeoToolsLib { std::unique_ptr createSearchLengthAlgorithm( BaseLib::ConfigTree const& external_config, MeshLib::Mesh const& mesh) { boost::optional config = //! \ogs_file_param{prj__search_length_algorithm} external_config.getConfigSubtreeOptional("search_length_algorithm"); if (!config) { return std::make_unique(); } //! \ogs_file_param{prj__search_length_algorithm__type} std::string const type = config->getConfigParameter("type"); //! \ogs_file_param_special{prj__search_length_algorithm__fixed} if (type == "fixed") { //! \ogs_file_param{prj__search_length_algorithm__fixed__value} auto const length = config->getConfigParameter("value"); return std::make_unique(length); } if (type == "heuristic") { //! \ogs_file_param_special{prj__search_length_algorithm__heuristic} return std::make_unique(mesh); } OGS_FATAL("Unknown search length algorithm type '{:s}'.", type); } } // end namespace MeshGeoToolsLib