OGS
TimeDependentHeterogeneousParameter.h
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#pragma once
5
6#include <algorithm>
7
8#include "Parameter.h"
9
13namespace ParameterLib
14{
16{
17public:
18 using PairTimeParameterName = std::pair<double, std::string>;
19 using PairTimeParameter = std::pair<double, Parameter<double> const* const>;
20
22 std::vector<PairTimeParameterName>
23 time_parameter_name_mapping);
24
26 int getNumberOfGlobalComponents() const override;
27
28 bool isTimeDependent() const override;
29
31 std::vector<double> operator()(double const t,
32 SpatialPosition const& pos) const override;
33
39 void initialize(
40 std::vector<std::unique_ptr<ParameterBase>> const& parameters) override;
41
42private:
43 std::vector<PairTimeParameterName> _time_parameter_name_mapping;
44 std::vector<PairTimeParameter> _time_parameter_mapping;
45};
46
47std::unique_ptr<ParameterBase> createTimeDependentHeterogeneousParameter(
48 std::string const& name, BaseLib::ConfigTree const& config);
49} // namespace ParameterLib
std::vector< double > operator()(double const t, SpatialPosition const &pos) const override
Returns the parameter value at the given time and position.
TimeDependentHeterogeneousParameter(std::string name, std::vector< PairTimeParameterName > time_parameter_name_mapping)
std::pair< double, Parameter< double > const *const > PairTimeParameter
void initialize(std::vector< std::unique_ptr< ParameterBase > > const &parameters) override
std::unique_ptr< ParameterBase > createTimeDependentHeterogeneousParameter(std::string const &name, BaseLib::ConfigTree const &config)