OGS
SecondaryVariable.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
4#include "SecondaryVariable.h"
5
6namespace ProcessLib
7{
9 std::string const& internal_name, std::string const& external_name)
10{
11 // TODO check for missing secondary vars.
12 // TODO check primary vars, too
14 _map_external_to_internal, external_name, internal_name,
15 "Secondary variable names must be unique.");
16}
17
19 std::string const& internal_name, SecondaryVariableFunctions&& fcts)
20{
22 .emplace(std::make_pair(
23 internal_name,
24 SecondaryVariable{internal_name /* TODO change */,
25 std::move(fcts)}))
26 .second)
27 {
29 "The secondary variable with internal name `{:s}' has already been "
30 "set up.",
31 internal_name);
32 }
33}
34
35std::map<std::string, std::string>::const_iterator
40
41std::map<std::string, std::string>::const_iterator
46
48 std::string const& external_name) const
49{
50 auto const it = _map_external_to_internal.find(external_name);
51
52 if (it == _map_external_to_internal.cend())
53 {
55 "A secondary variable with external name '{:s}' has not been set "
56 "up.",
57 external_name);
58 }
59
60 auto const& internal_name = it->second;
61 auto const it2 = _configured_secondary_variables.find(internal_name);
62
63 if (it2 == _configured_secondary_variables.end())
64 {
66 "A secondary variable with internal name '{:s}' has not been set "
67 "up.",
68 internal_name);
69 }
70
71 return it2->second;
72}
73
74} // namespace ProcessLib
#define OGS_FATAL(...)
Definition Error.h:19
SecondaryVariable const & get(std::string const &external_name) const
Returns the secondary variable with the given external name.
std::map< std::string, std::string > _map_external_to_internal
void addNameMapping(std::string const &internal_name, std::string const &external_name)
Register a variable with the given internal and external names.
std::map< std::string, std::string >::const_iterator begin() const
void addSecondaryVariable(std::string const &internal_name, SecondaryVariableFunctions &&fcts)
std::map< std::string, std::string >::const_iterator end() const
std::map< std::string, SecondaryVariable > _configured_secondary_variables
void insertIfKeyUniqueElseError(Map &map, Key const &key, Value &&value, std::string const &error_message)
Definition Algorithm.h:97
Stores information about a specific secondary variable.