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