From ccf425bbd7a6f201c18c4f9f84ec55f3c7e5fb7e Mon Sep 17 00:00:00 2001 From: Christoph Lehmann <christoph.lehmann@ufz.de> Date: Wed, 17 Aug 2016 18:08:41 +0200 Subject: [PATCH] [PL] Parameters tell if they are time-dependent --- ProcessLib/Parameter/ConstantParameter.h | 16 ++++++++++------ ProcessLib/Parameter/CurveScaledParameter.h | 2 ++ ProcessLib/Parameter/MeshElementParameter.h | 2 ++ ProcessLib/Parameter/MeshNodeParameter.h | 2 ++ ProcessLib/Parameter/Parameter.h | 2 ++ 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/ProcessLib/Parameter/ConstantParameter.h b/ProcessLib/Parameter/ConstantParameter.h index 3256d0cc397..2c48d5c88a0 100644 --- a/ProcessLib/Parameter/ConstantParameter.h +++ b/ProcessLib/Parameter/ConstantParameter.h @@ -19,26 +19,30 @@ template <typename T> struct ConstantParameter final : public Parameter<T> { /// Construction with single value. - ConstantParameter(T const& value) : _value({value}) {} + explicit ConstantParameter(T const& value) : _values({value}) {} + /// Construction with a tuple. /// The given tuple must be non-empty. - ConstantParameter(std::vector<T> const& value) : _value(value) + explicit ConstantParameter(std::vector<T> const& values) : _values(values) { - assert(!value.empty()); + assert(!values.empty()); } + + bool isTimeDependent() const override { return false; } + unsigned getNumberOfComponents() const override { - return static_cast<unsigned>(_value.size()); + return static_cast<unsigned>(_values.size()); } std::vector<T> const& operator()( double const /*t*/, SpatialPosition const& /*pos*/) const override { - return _value; + return _values; } private: - std::vector<T> const _value; + std::vector<T> const _values; }; std::unique_ptr<ParameterBase> createConstantParameter( diff --git a/ProcessLib/Parameter/CurveScaledParameter.h b/ProcessLib/Parameter/CurveScaledParameter.h index d363e1e857b..5ff5b640d00 100644 --- a/ProcessLib/Parameter/CurveScaledParameter.h +++ b/ProcessLib/Parameter/CurveScaledParameter.h @@ -26,6 +26,8 @@ struct CurveScaledParameter final : public Parameter<T> { { } + bool isTimeDependent() const override { return true; } + void initialize( std::vector< std::unique_ptr<ProcessLib::ParameterBase>> const& parameters) diff --git a/ProcessLib/Parameter/MeshElementParameter.h b/ProcessLib/Parameter/MeshElementParameter.h index eda4c4fbaa1..9058ca0c3f3 100644 --- a/ProcessLib/Parameter/MeshElementParameter.h +++ b/ProcessLib/Parameter/MeshElementParameter.h @@ -29,6 +29,8 @@ struct MeshElementParameter final : public Parameter<T> { { } + bool isTimeDependent() const override { return false; } + unsigned getNumberOfComponents() const override { return _property.getNumberOfComponents(); diff --git a/ProcessLib/Parameter/MeshNodeParameter.h b/ProcessLib/Parameter/MeshNodeParameter.h index 35f9041e063..dd39a0ff7ff 100644 --- a/ProcessLib/Parameter/MeshNodeParameter.h +++ b/ProcessLib/Parameter/MeshNodeParameter.h @@ -29,6 +29,8 @@ struct MeshNodeParameter final : public Parameter<T> { { } + bool isTimeDependent() const override { return false; } + unsigned getNumberOfComponents() const override { return _property.getNumberOfComponents(); diff --git a/ProcessLib/Parameter/Parameter.h b/ProcessLib/Parameter/Parameter.h index 14de825b6e7..ac4208ff81a 100644 --- a/ProcessLib/Parameter/Parameter.h +++ b/ProcessLib/Parameter/Parameter.h @@ -39,6 +39,8 @@ struct ParameterBase { virtual ~ParameterBase() = default; + virtual bool isTimeDependent() const = 0; + /// Parameters might depend on each other; this method allows to set up the /// dependencies between parameters after they have been constructed. virtual void initialize( -- GitLab