From f29eb55cee84a509b94e0c6b4b96b866a54919c1 Mon Sep 17 00:00:00 2001
From: Andrew Heather <>
Date: Wed, 13 Oct 2021 21:30:46 +0100
Subject: [PATCH] ENH: Refactored TimeFunction1 - now possible using Function1
 directly

---
 src/OpenFOAM/primitives/functions/Function1/CSV/CSV.C      | 2 +-
 .../functions/Function1/Polynomial/PolynomialEntry.C       | 5 +++++
 src/OpenFOAM/primitives/functions/Function1/Sine/Sine.C    | 5 +++++
 src/OpenFOAM/primitives/functions/Function1/Table/Table.C  | 2 +-
 .../primitives/functions/Function1/Table/TableBase.C       | 7 ++++++-
 .../primitives/functions/Function1/Table/TableBase.H       | 2 +-
 .../primitives/functions/Function1/TableFile/TableFile.C   | 2 +-
 src/OpenFOAM/primitives/functions/Function1/ramp/ramp.C    | 5 +++++
 .../primitives/functions/TimeFunction1/TimeFunction1.C     | 3 ++-
 9 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.C b/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.C
index f3d4c064ad2..fc2a40f2578 100644
--- a/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.C
+++ b/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.C
@@ -224,7 +224,7 @@ Foam::Function1Types::CSV<Type>::CSV
 {
     read();
 
-    TableBase<Type>::check();
+    TableBase<Type>::initialise();
 }
 
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/Polynomial/PolynomialEntry.C b/src/OpenFOAM/primitives/functions/Function1/Polynomial/PolynomialEntry.C
index d72f9a7cf7d..7d363bb2fc1 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Polynomial/PolynomialEntry.C
+++ b/src/OpenFOAM/primitives/functions/Function1/Polynomial/PolynomialEntry.C
@@ -56,6 +56,11 @@ void Foam::Function1Types::Polynomial<Type>::checkCoefficients()
             << "Polynomial " << this->name() << " cannot be integrated"
             << endl;
     }
+
+    if (this->isTime())
+    {
+        convertTimeBase(this->time());
+    }
 }
 
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/Sine/Sine.C b/src/OpenFOAM/primitives/functions/Function1/Sine/Sine.C
index 9b928c7e16b..0fee1197a10 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Sine/Sine.C
+++ b/src/OpenFOAM/primitives/functions/Function1/Sine/Sine.C
@@ -50,6 +50,11 @@ Foam::Function1Types::Sine<Type>::Sine
     {
         frequency_ = Function1<scalar>::New("frequency", dict);
     }
+
+    if (this->isTime())
+    {
+        convertTimeBase(this->time());
+    }
 }
 
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/Table/Table.C b/src/OpenFOAM/primitives/functions/Function1/Table/Table.C
index 37146ea0195..566a547d8cd 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Table/Table.C
+++ b/src/OpenFOAM/primitives/functions/Function1/Table/Table.C
@@ -85,7 +85,7 @@ Foam::Function1Types::Table<Type>::Table
         dict.readEntry("values", this->table_);
     }
 
-    TableBase<Type>::check();
+    TableBase<Type>::initialise();
 }
 
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.C b/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.C
index bb8decf69d7..45e7a6d6ee1 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.C
+++ b/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.C
@@ -107,7 +107,7 @@ Foam::Function1Types::TableBase<Type>::TableBase(const TableBase<Type>& tbl)
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class Type>
-void Foam::Function1Types::TableBase<Type>::check() const
+void Foam::Function1Types::TableBase<Type>::initialise()
 {
     if (!table_.size())
     {
@@ -134,6 +134,11 @@ void Foam::Function1Types::TableBase<Type>::check() const
         prevValue = currValue;
         ++i;
     }
+
+    if (this->isTime())
+    {
+        convertTimeBase(this->time());
+    }
 }
 
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.H b/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.H
index aed16b6919c..1b805a8c858 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.H
+++ b/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.H
@@ -119,7 +119,7 @@ public:
     // Member Functions
 
         //- Check the table for size and consistency
-        void check() const;
+        void initialise();
 
         //- Check minimum table bounds
         bool checkMinBounds(const scalar x, scalar& xDash) const;
diff --git a/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.C b/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.C
index 0d8afbf43c8..a0a27c3ed11 100644
--- a/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.C
+++ b/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.C
@@ -57,7 +57,7 @@ Foam::Function1Types::TableFile<Type>::TableFile
 
     is  >> this->table_;
 
-    TableBase<Type>::check();
+    TableBase<Type>::initialise();
 }
 
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/ramp/ramp.C b/src/OpenFOAM/primitives/functions/Function1/ramp/ramp.C
index b66acd4f326..76b236141b2 100644
--- a/src/OpenFOAM/primitives/functions/Function1/ramp/ramp.C
+++ b/src/OpenFOAM/primitives/functions/Function1/ramp/ramp.C
@@ -34,6 +34,11 @@ void Foam::Function1Types::ramp::read(const dictionary& coeffs)
 {
     start_ = coeffs.getOrDefault<scalar>("start", 0);
     coeffs.readEntry("duration", duration_);
+
+    if (isTime())
+    {
+        convertTimeBase(time());
+    }
 }
 
 
diff --git a/src/OpenFOAM/primitives/functions/TimeFunction1/TimeFunction1.C b/src/OpenFOAM/primitives/functions/TimeFunction1/TimeFunction1.C
index 9dd5f3caea8..60b95f2d8fa 100644
--- a/src/OpenFOAM/primitives/functions/TimeFunction1/TimeFunction1.C
+++ b/src/OpenFOAM/primitives/functions/TimeFunction1/TimeFunction1.C
@@ -42,7 +42,8 @@ Foam::TimeFunction1<Type>::TimeFunction1
     name_(entryName),
     entry_(Function1<Type>::New(entryName, dict, &runTime))
 {
-    entry_->convertTimeBase(runTime);
+    // Time conversion now handled by Function1 directly
+    // entry_->convertTimeBase(runTime);
 }
 
 
-- 
GitLab