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(internal_name,
23 SecondaryVariable{internal_name /* TODO change */,
24 std::move(fcts)})
25 .second)
26 {
28 "The secondary variable with internal name `{:s}' has already been "
29 "set up.",
30 internal_name);
31 }
32}
33
34std::map<std::string, std::string>::const_iterator
39
40std::map<std::string, std::string>::const_iterator
45
47 std::string const& external_name) const
48{
49 auto const it = _map_external_to_internal.find(external_name);
50
51 if (it == _map_external_to_internal.cend())
52 {
54 "A secondary variable with external name '{:s}' has not been set "
55 "up.",
56 external_name);
57 }
58
59 auto const& internal_name = it->second;
60 auto const it2 = _configured_secondary_variables.find(internal_name);
61
62 if (it2 == _configured_secondary_variables.end())
63 {
65 "A secondary variable with internal name '{:s}' has not been set "
66 "up.",
67 internal_name);
68 }
69
70 return it2->second;
71}
72
73} // namespace ProcessLib
#define OGS_FATAL(...)
Definition Error.h:10
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:98
Stores information about a specific secondary variable.