OGS
CurveScaledParameter.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
5
6#include "Utils.h"
7
8namespace ParameterLib
9{
10std::unique_ptr<ParameterBase> createCurveScaledParameter(
11 std::string const& name,
12 BaseLib::ConfigTree const& config,
13 std::map<std::string,
14 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
15 curves)
16{
18 config.checkConfigParameter("type", "CurveScaled");
19
21 auto curve_name = config.getConfigParameter<std::string>("curve");
22 DBUG("Using curve {:s}", curve_name);
23
24 auto const curve_it = curves.find(curve_name);
25 if (curve_it == curves.end())
26 {
27 OGS_FATAL("Curve `{:s}' does not exists.", curve_name);
28 }
29
30 auto referenced_parameter_name =
32 config.getConfigParameter<std::string>("parameter");
33 DBUG("Using parameter {:s}", referenced_parameter_name);
34
35 // TODO other data types than only double
36 return std::make_unique<CurveScaledParameter<double>>(
37 name, *curve_it->second, referenced_parameter_name);
38}
39
40} // namespace ParameterLib
#define OGS_FATAL(...)
Definition Error.h:19
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:22
T getConfigParameter(std::string const &param) const
void checkConfigParameter(std::string const &param, std::string_view const value) const
std::unique_ptr< ParameterBase > createCurveScaledParameter(std::string const &name, BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)