diff --git a/applications/test/Function1/Make/options b/applications/test/Function1/Make/options
index b8e72a86c6e63b78d92aae9bb56e4ec20fda46b5..15bfa4c12cd1f3d7e02ceac38146fa389a9fc45c 100644
--- a/applications/test/Function1/Make/options
+++ b/applications/test/Function1/Make/options
@@ -1,15 +1,6 @@
 EXE_INC = \
-    -DFULLDEBUG -g -O0 \
-    -I$(LIB_SRC)/lagrangian/intermediate/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \
-    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -DFULLDEBUG -g \
     -I$(LIB_SRC)/meshTools/lnInclude
 
 EXE_LIBS = \
-    -llagrangianIntermediate \
-    -lradiationModels \
-    -lregionModels \
-    -lfiniteVolume \
-    -lmeshTools \
-    -lsampling
+    -lmeshTools
diff --git a/applications/test/Function1/Test-Function1.C b/applications/test/Function1/Test-Function1.C
index 43973975826b6a06bffd65842361b47330473b60..be8b1de67df1862b51b4e17858403a46dcfa2b8f 100644
--- a/applications/test/Function1/Test-Function1.C
+++ b/applications/test/Function1/Test-Function1.C
@@ -32,7 +32,8 @@ Description
 
 \*---------------------------------------------------------------------------*/
 
-#include "fvCFD.H"
+#include "argList.H"
+#include "IOstreams.H"
 #include "Function1.H"
 #include "scalarIndList.H"
 #include "scalarField.H"
@@ -40,6 +41,8 @@ Description
 #include "linearInterpolationWeights.H"
 #include "splineInterpolationWeights.H"
 
+using namespace Foam;
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 int main(int argc, char *argv[])
diff --git a/applications/test/Function1/case1/constant/function1Properties b/applications/test/Function1/case1/constant/function1Properties
index e13a90bfcc9177f720ff89bd95a0f4ba11e67095..3d0aad3c87a82fcc65f3b5d6e2760939a6b5f306 100644
--- a/applications/test/Function1/case1/constant/function1Properties
+++ b/applications/test/Function1/case1/constant/function1Properties
@@ -26,11 +26,44 @@ x
 );
 
 
-function1 table
+constant1 constant 100;
+
+table1 table
 (
     (0 0)(10 1)
 );
 
+table2
+{
+    type table;
+    values
+    (
+        (0 0)(10 1)
+    );
+}
+
+table3
+{
+    type table;
+    file "<constant>/table-values";
+}
+
+poly1 polynomial
+(
+    (0 1)
+    (1 1)
+);
+
+poly2
+{
+    type polynomial;
+    coeffs
+    (
+        (0 1)
+        (1 1)
+    );
+}
+
 function2
 {
     type        expression;
diff --git a/applications/test/Function1/case1/constant/table-values b/applications/test/Function1/case1/constant/table-values
new file mode 100644
index 0000000000000000000000000000000000000000..2212656124993d19ef410e0803a9634ca8d6c437
--- /dev/null
+++ b/applications/test/Function1/case1/constant/table-values
@@ -0,0 +1,9 @@
+// -*- C++ -*-
+// Some table values
+
+(
+    (0 0)
+    (20 1)
+);
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.H b/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.H
index 6b7a451a17238def1375aef4a7c6da396209a557..1c5a2bb693edf58127bb5c5c93f7138418d3ed85 100644
--- a/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.H
+++ b/src/OpenFOAM/primitives/functions/Function1/CSV/CSV.H
@@ -53,8 +53,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef CSV_H
-#define CSV_H
+#ifndef Function1Types_CSV_H
+#define Function1Types_CSV_H
 
 #include "Function1.H"
 #include "TableBase.H"
diff --git a/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.C b/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.C
index 60fe1d6a04a433d322c3a29169c96ca4ac94c8ce..36c764e895e31778d0cef37d2ce322b48fd940f1 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.C
+++ b/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.C
@@ -52,9 +52,29 @@ Foam::Function1Types::Constant<Type>::Constant
     Function1<Type>(entryName, dict),
     value_(Zero)
 {
-    ITstream& is = dict.lookup(entryName);
-    word entryType(is);
-    is  >> value_;
+    const entry* eptr = dict.findEntry(entryName, keyType::LITERAL);
+
+    if (eptr && eptr->isStream())
+    {
+        // Primitive (inline) format. Eg,
+        // - key constant 1.2;
+        // - key 1.2;
+
+        ITstream& is = eptr->stream();
+        if (is.peek().isWord())
+        {
+            is.skip();  // Discard leading 'constant'
+        }
+        is >> value_;
+        dict.checkITstream(is, entryName);
+    }
+    else
+    {
+        // Dictionary format. Eg,
+        // key { type constant; value 1.2; }
+
+        dict.readEntry("value", value_);
+    }
 }
 
 
@@ -71,10 +91,10 @@ Foam::Function1Types::Constant<Type>::Constant
 
 
 template<class Type>
-Foam::Function1Types::Constant<Type>::Constant(const Constant<Type>& cnst)
+Foam::Function1Types::Constant<Type>::Constant(const Constant<Type>& rhs)
 :
-    Function1<Type>(cnst),
-    value_(cnst.value_)
+    Function1<Type>(rhs),
+    value_(rhs.value_)
 {}
 
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.H b/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.H
index 03ad51f3798fc32843802f6634825c9c0e573815..4dfac6e68a794f05296463fe94a75fba95cb9df4 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.H
+++ b/src/OpenFOAM/primitives/functions/Function1/Constant/Constant.H
@@ -30,18 +30,31 @@ Class
 Description
     Templated function that returns a constant value.
 
-    Usage - for entry \<entryName\> returning the value <value>:
+    Usage - for entry \<entryName\> returning the value \<value\>,
+    can be specified is different formats.
+
+    Inline specification:
+    \verbatim
+        <entryName>  constant <value>
+    \endverbatim
+
+    Dictionary format:
     \verbatim
-        <entryName>    constant  <value>
+        <entryName>
+        {
+            type    constant;
+            value   <value>;
+        }
     \endverbatim
 
 SourceFiles
     Constant.C
+    ConstantI.H
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef Constant_H
-#define Constant_H
+#ifndef Function1Types_Constant_H
+#define Function1Types_Constant_H
 
 #include "Function1.H"
 
@@ -93,7 +106,7 @@ public:
         Constant(const word& entryName, Istream& is);
 
         //- Copy constructor
-        explicit Constant(const Constant<Type>& cnst);
+        explicit Constant(const Constant<Type>& rhs);
 
         //- Construct and return a clone
         virtual tmp<Function1<Type>> clone() const
@@ -117,7 +130,7 @@ public:
         //- Return value as a function of (scalar) independent variable
         virtual tmp<Field<Type>> value(const scalarField& x) const;
 
-        //- Write in dictionary format
+        //- Write as primitive (inline) format
         virtual void writeData(Ostream& os) const;
 };
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/Cosine/Cosine.H b/src/OpenFOAM/primitives/functions/Function1/Cosine/Cosine.H
index 63705cce70ad71fc375d1fd0fef8b09158590f5e..08383ac1c93f1fc9aa2d578855b3fc05d864d952 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Cosine/Cosine.H
+++ b/src/OpenFOAM/primitives/functions/Function1/Cosine/Cosine.H
@@ -96,8 +96,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef function1Types_Cosine_H
-#define function1Types_Cosine_H
+#ifndef Function1Types_Cosine_H
+#define Function1Types_Cosine_H
 
 #include "Sine.H"
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/Function1/Function1.H b/src/OpenFOAM/primitives/functions/Function1/Function1/Function1.H
index 5ff592788bcb5a6526d8abbb30ee343a15d9fd1b..41d4f5e06e5e3212c4fa7acdb396c12c849315df 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Function1/Function1.H
+++ b/src/OpenFOAM/primitives/functions/Function1/Function1/Function1.H
@@ -143,7 +143,7 @@ public:
         //- Construct from entry name
         explicit Function1(const word& entryName);
 
-        //- Construct from entry name and dictionary
+        //- Construct from entry name and dictionary (unused)
         Function1(const word& entryName, const dictionary& dict);
 
         //- Copy construct
diff --git a/src/OpenFOAM/primitives/functions/Function1/Function1/Function1New.C b/src/OpenFOAM/primitives/functions/Function1/Function1/Function1New.C
index ada2eaab2ee15c80b714439e4b88d6243c83130a..ae20893b4a3176c6b318a812bc3b87aa9a295f2c 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Function1/Function1New.C
+++ b/src/OpenFOAM/primitives/functions/Function1/Function1/Function1New.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2017 OpenFOAM Foundation
-    Copyright (C) 2018-2020 OpenCFD Ltd.
+    Copyright (C) 2018-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -49,6 +49,10 @@ Foam::Function1<Type>::New
     {
         // Dictionary entry
 
+        DebugInFunction
+            << "For " << entryName << " with dictionary entries: "
+            << flatOutput(coeffs->toc()) << nl;
+
         coeffs->readEntry
         (
             "type",
@@ -62,17 +66,21 @@ Foam::Function1<Type>::New
     else if (eptr)
     {
         // Primitive entry
-        // - non-word : value for constant function
         // - word : the modelType
+        // - non-word : value for constant function
 
-        ITstream& is = eptr->stream();
+        DebugInFunction
+            << "For " << entryName << " with primitive entry" << nl;
 
-        token firstToken(is);
+        ITstream& is = eptr->stream();
 
-        if (!firstToken.isWord())
+        if (is.peek().isWord())
         {
-            // A value
-            is.putBack(firstToken);
+            modelType = is.peek().wordToken();
+        }
+        else
+        {
+            // A value - compatibility for reading constant
 
             const Type constValue = pTraits<Type>(is);
 
@@ -81,10 +89,6 @@ Foam::Function1<Type>::New
                 new Function1Types::Constant<Type>(entryName, constValue)
             );
         }
-        else
-        {
-            modelType = firstToken.wordToken();
-        }
 
         // Fallthrough
     }
diff --git a/src/OpenFOAM/primitives/functions/Function1/Function1/function1Base.H b/src/OpenFOAM/primitives/functions/Function1/Function1/function1Base.H
index 4aa9bf68ea29eb6281c408dafc1a53f4211c581b..a3191c7924e4e5ccb4a5ec834b8b92081b327748 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Function1/function1Base.H
+++ b/src/OpenFOAM/primitives/functions/Function1/Function1/function1Base.H
@@ -81,7 +81,7 @@ public:
         //- Construct from entry name
         explicit function1Base(const word& entryName);
 
-        //- Construct from entry name and dictionary
+        //- Construct from entry name and dictionary (unused)
         function1Base(const word& entryName, const dictionary& dict);
 
         //- Copy construct
diff --git a/src/OpenFOAM/primitives/functions/Function1/LimitRange/LimitRange.H b/src/OpenFOAM/primitives/functions/Function1/LimitRange/LimitRange.H
index b580f90d108a798358076ebb8389f4d6ed85f0fc..e167ebba3cb6a9cfb183faf60ee2f0abde11a3c8 100644
--- a/src/OpenFOAM/primitives/functions/Function1/LimitRange/LimitRange.H
+++ b/src/OpenFOAM/primitives/functions/Function1/LimitRange/LimitRange.H
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2020 OpenCFD Ltd.
+    Copyright (C) 2020-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -31,13 +31,13 @@ Description
 
     Example usage for limiting a polynomial:
     \verbatim
-        limitedPolyTest        limitRange;
-        limitedPolyTestCoeffs
+        <entryName>
         {
-            min         0.4;
-            max         1.4;
+            type limitRange;
+            min  0.4;
+            max  1.4;
 
-            value       polynomial
+            value polynomial
             (
                 (5 1)
                 (-2 2)
@@ -53,16 +53,19 @@ Description
     - poly(x) for 0.4 < x < 1.4.
 
 
-    Example usage for limiting a table
+    Example usage for limiting a file-based table:
     \verbatim
-        limitedTableFileTest   limitRange;
-        limitedTableFileTestCoeffs
+        <entryName>
         {
-            min             0.4;
-            max             1.4;
-
-            value           tableFile;
-            file            "<system>/fanCurve.txt";
+            type limitRange;
+            min  0.4;
+            max  1.4;
+
+            value
+            {
+                type table;
+                file "<system>/fanCurve.txt";
+            }
         }
     \endverbatim
 
@@ -79,8 +82,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef LimitRange_H
-#define LimitRange_H
+#ifndef Function1Types_LimitRange_H
+#define Function1Types_LimitRange_H
 
 #include "Function1.H"
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/One/OneConstant.H b/src/OpenFOAM/primitives/functions/Function1/One/OneConstant.H
index 9c19abc14b28e2cfe178da562efb0cb5bbc0a467..a072e0432d1b38e3c33fc666fee4bad4e7defc04 100644
--- a/src/OpenFOAM/primitives/functions/Function1/One/OneConstant.H
+++ b/src/OpenFOAM/primitives/functions/Function1/One/OneConstant.H
@@ -40,8 +40,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef OneConstant_H
-#define OneConstant_H
+#ifndef Function1Types_OneConstant_H
+#define Function1Types_OneConstant_H
 
 #include "Function1.H"
 
@@ -110,7 +110,7 @@ public:
             const scalarField& x2
         ) const;
 
-        //- Write in dictionary format
+        //- Write as primitive (inline) format
         virtual void writeData(Ostream& os) const;
 };
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/PolynomialEntry/PolynomialEntry.C b/src/OpenFOAM/primitives/functions/Function1/Polynomial/PolynomialEntry.C
similarity index 78%
rename from src/OpenFOAM/primitives/functions/Function1/PolynomialEntry/PolynomialEntry.C
rename to src/OpenFOAM/primitives/functions/Function1/Polynomial/PolynomialEntry.C
index 7966abe85a7742ec5fc5733de7d777dbdf93e9cb..b5b2cc6cfed6e84a0bc4612d548ea4a2932e899b 100644
--- a/src/OpenFOAM/primitives/functions/Function1/PolynomialEntry/PolynomialEntry.C
+++ b/src/OpenFOAM/primitives/functions/Function1/Polynomial/PolynomialEntry.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2020 OpenCFD Ltd.
+    Copyright (C) 2020-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -28,25 +28,12 @@ License
 
 #include "PolynomialEntry.H"
 
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 template<class Type>
-Foam::Function1Types::Polynomial<Type>::Polynomial
-(
-    const word& entryName,
-    const dictionary& dict
-)
-:
-    Function1<Type>(entryName, dict),
-    coeffs_(),
-    canIntegrate_(true)
+void Foam::Function1Types::Polynomial<Type>::checkCoefficients()
 {
-    ITstream& is = dict.lookup(entryName);
-    const word entryType(is);
-
-    is  >> coeffs_;
-
-    if (!coeffs_.size())
+    if (coeffs_.empty())
     {
         FatalErrorInFunction
             << "Invalid (empty) polynomial coefficients for "
@@ -54,64 +41,77 @@ Foam::Function1Types::Polynomial<Type>::Polynomial
             << exit(FatalError);
     }
 
-    forAll(coeffs_, i)
+    for (const auto& coeff : coeffs_)
     {
-        if (mag(coeffs_[i].second() + pTraits<Type>::one) < ROOTVSMALL)
+        if (mag(coeff.second() + pTraits<Type>::one) < ROOTVSMALL)
         {
             canIntegrate_ = false;
             break;
         }
     }
 
-    if (debug)
+    if (debug && !canIntegrate_)
     {
-        if (!canIntegrate_)
-        {
-            WarningInFunction
-                << "Polynomial " << this->name() << " cannot be integrated"
-                << endl;
-        }
+        WarningInFunction
+            << "Polynomial " << this->name() << " cannot be integrated"
+            << endl;
     }
 }
 
 
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
 template<class Type>
 Foam::Function1Types::Polynomial<Type>::Polynomial
 (
     const word& entryName,
-    const List<Tuple2<Type, Type>>& coeffs
+    const dictionary& dict
 )
 :
-    Function1<Type>(entryName),
-    coeffs_(coeffs),
+    Function1<Type>(entryName, dict),
+    coeffs_(),
     canIntegrate_(true)
 {
-    if (!coeffs_.size())
-    {
-        FatalErrorInFunction
-            << "Invalid (empty) polynomial coefficients for "
-            << this->name() << nl
-            << exit(FatalError);
-    }
+    const entry* eptr = dict.findEntry(entryName, keyType::LITERAL);
 
-    forAll(coeffs_, i)
+    if (eptr && eptr->isStream())
     {
-        if (mag(coeffs_[i].second() + 1) < ROOTVSMALL)
+        // Primitive (inline) format. Eg,
+        // key polynomial ((0 0) (10 1));
+
+        ITstream& is = eptr->stream();
+        if (is.peek().isWord())
         {
-            canIntegrate_ = false;
-            break;
+            is.skip();  // Discard leading 'polynomial'
         }
+        is >> this->coeffs_;
+        dict.checkITstream(is, entryName);
     }
-
-    if (debug)
+    else
     {
-        if (!canIntegrate_)
-        {
-            WarningInFunction
-                << "Polynomial " << this->name() << " cannot be integrated"
-                << endl;
-        }
+        // Dictionary format - "values" lookup. Eg,
+        //
+        // key { type polynomial; coeffs ((0 0) (10 1)); }
+
+        dict.readEntry("coeffs", this->coeffs_);
     }
+
+    this->checkCoefficients();
+}
+
+
+template<class Type>
+Foam::Function1Types::Polynomial<Type>::Polynomial
+(
+    const word& entryName,
+    const List<Tuple2<Type, Type>>& coeffs
+)
+:
+    Function1<Type>(entryName),
+    coeffs_(coeffs),
+    canIntegrate_(true)
+{
+    this->checkCoefficients();
 }
 
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/PolynomialEntry/PolynomialEntry.H b/src/OpenFOAM/primitives/functions/Function1/Polynomial/PolynomialEntry.H
similarity index 86%
rename from src/OpenFOAM/primitives/functions/Function1/PolynomialEntry/PolynomialEntry.H
rename to src/OpenFOAM/primitives/functions/Function1/Polynomial/PolynomialEntry.H
index 78724aa5ff52ca797d3aa67c4a96665e7add4c5c..6fc5cf924973d15fcbd175e0bb2b90a321b0e951 100644
--- a/src/OpenFOAM/primitives/functions/Function1/PolynomialEntry/PolynomialEntry.H
+++ b/src/OpenFOAM/primitives/functions/Function1/Polynomial/PolynomialEntry.H
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2017 OpenFOAM Foundation
+    Copyright (C) 2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -31,21 +32,35 @@ Description
     list of Tuple2's. Data is input in the form,
     e.g. for an entry \<entryName\> that describes y = x^2 + 2x^3
 
+    Inline specification:
     \verbatim
         <entryName>  polynomial
         (
-            (1    2)
-            (2    3)
+            (1  2)
+            (2  3)
         );
     \endverbatim
 
+    Dictionary format:
+    \verbatim
+        <entryName>
+        {
+            type   polynomial;
+            coeffs
+            (
+                (1 2)
+                (2 3)
+            );
+        }
+    \endverbatim
+
 SourceFiles
     PolynomialEntry.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef PolynomialEntry_H
-#define PolynomialEntry_H
+#ifndef Function1Types_Polynomial_H
+#define Function1Types_Polynomial_H
 
 #include "Function1.H"
 #include "Tuple2.H"
@@ -72,12 +87,15 @@ class Polynomial
         //- Polynomial coefficients - list of prefactor, exponent
         List<Tuple2<Type, Type>> coeffs_;
 
-        //- Flag to indicate whether poly can be integrated
+        //- Flag to indicate whether polynomial can be integrated
         bool canIntegrate_;
 
 
     // Private Member Functions
 
+        //- Check coefficients and if polynomial can be integrated
+        void checkCoefficients();
+
         //- No copy assignment
         void operator=(const Polynomial<Type>&) = delete;
 
@@ -125,8 +143,7 @@ public:
         //- Integrate between two (scalar) values
         virtual Type integrate(const scalar x1, const scalar x2) const;
 
-
-        //- Write in dictionary format
+        //- Write as primitive (inline) format
         virtual void writeData(Ostream& os) const;
 };
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/Scale/Scale.H b/src/OpenFOAM/primitives/functions/Function1/Scale/Scale.H
index 86186109cd6ab5d5c8032a5d279c05f05210cc2c..7077203b59ca6eb4f2087e129f1c48d21beb3622 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Scale/Scale.H
+++ b/src/OpenFOAM/primitives/functions/Function1/Scale/Scale.H
@@ -63,8 +63,8 @@ Description
     Where:
     \table
         Property | Description                                  | Required
-        value    | Function of type Function1<Type>             | yes
         scale    | Scaling function of type Function1<scalar>   | yes
+        value    | Function of type Function1<Type>             | yes
     \endtable
 
 SourceFiles
@@ -72,8 +72,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef Scale_H
-#define Scale_H
+#ifndef Function1Types_Scale_H
+#define Function1Types_Scale_H
 
 #include "Function1.H"
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/Sine/Sine.H b/src/OpenFOAM/primitives/functions/Function1/Sine/Sine.H
index f580978278789cba304ee6a2f6937f0b5345419f..64096352e7cdf5878e17c1417cc57f0a1fb78905 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Sine/Sine.H
+++ b/src/OpenFOAM/primitives/functions/Function1/Sine/Sine.H
@@ -98,8 +98,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef function1Types_Sine_H
-#define function1Types_Sine_H
+#ifndef Function1Types_Sine_H
+#define Function1Types_Sine_H
 
 #include "Function1.H"
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/Square/Square.H b/src/OpenFOAM/primitives/functions/Function1/Square/Square.H
index 730dc29cb3ff0d2fe48441da1dc59183782d85b0..c79f6e12f3d3292bb0777de9f9393b236a4f6062 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Square/Square.H
+++ b/src/OpenFOAM/primitives/functions/Function1/Square/Square.H
@@ -101,8 +101,8 @@ Note
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef function1Types_Square_H
-#define function1Types_Square_H
+#ifndef Function1Types_Square_H
+#define Function1Types_Square_H
 
 #include "Sine.H"
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/Table/Table.C b/src/OpenFOAM/primitives/functions/Function1/Table/Table.C
index 23f2e7d6c55c6794b50c448edcf960f9b8fa7340..cb57b8750231aeec565531f740759bbd53ef2e93 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Table/Table.C
+++ b/src/OpenFOAM/primitives/functions/Function1/Table/Table.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2019-2020 OpenCFD Ltd.
+    Copyright (C) 2019-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -37,11 +37,53 @@ Foam::Function1Types::Table<Type>::Table
     const dictionary& dict
 )
 :
-    TableBase<Type>(entryName, dict)
+    TableBase<Type>(entryName, dict),
+    fName_()
 {
-    ITstream& is = dict.lookup(entryName);
-    const word entryType(is);
-    is  >> this->table_;
+    const entry* eptr = dict.findEntry(entryName, keyType::LITERAL);
+
+    if (eptr && eptr->isStream())
+    {
+        // Primitive (inline) format. Eg,
+        // key table ((0 0) (10 1));
+
+        ITstream& is = eptr->stream();
+        if (is.peek().isWord())
+        {
+            is.skip();  // Discard leading 'table'
+        }
+        is >> this->table_;
+        dict.checkITstream(is, entryName);
+    }
+    else if (dict.readIfPresent("file", fName_))
+    {
+        // Dictionary format - "file" lookup. Eg,
+        // key { type table; file "name"; }
+
+        fileName expandedFile(fName_);
+        expandedFile.expand();
+
+        autoPtr<ISstream> isPtr(fileHandler().NewIFstream(expandedFile));
+        if (isPtr && isPtr->good())
+        {
+            *isPtr >> this->table_;
+        }
+        else
+        {
+            FatalIOErrorInFunction(dict)
+                << "Cannot open file: " << expandedFile << nl
+                << exit(FatalIOError);
+        }
+    }
+    else
+    {
+        // Dictionary format - "values" lookup. Eg,
+        //
+        // key { type table; values ((0 0) (10 1)); }
+
+        dict.readEntry("values", this->table_);
+    }
+
     TableBase<Type>::check();
 }
 
@@ -49,8 +91,36 @@ Foam::Function1Types::Table<Type>::Table
 template<class Type>
 Foam::Function1Types::Table<Type>::Table(const Table<Type>& tbl)
 :
-    TableBase<Type>(tbl)
+    TableBase<Type>(tbl),
+    fName_(tbl.fName_)
 {}
 
 
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class Type>
+void Foam::Function1Types::Table<Type>::writeData(Ostream& os) const
+{
+    Function1<Type>::writeData(os);
+    os.endEntry();
+
+    os.beginBlock(word(this->name() + "Coeffs"));
+
+    // Note: for TableBase write the dictionary entries it needs but not
+    // the values themselves
+    TableBase<Type>::writeEntries(os);
+
+    if (fName_.empty())
+    {
+        os.writeEntry("values", this->table_);
+    }
+    else
+    {
+        os.writeEntry("file", fName_);
+    }
+
+    os.endBlock();
+}
+
+
 // ************************************************************************* //
diff --git a/src/OpenFOAM/primitives/functions/Function1/Table/Table.H b/src/OpenFOAM/primitives/functions/Function1/Table/Table.H
index 279ac939bad15d19a3ba6af786584e141685b6a8..154e18c8e2c18f85f3930285146bef165117c71c 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Table/Table.H
+++ b/src/OpenFOAM/primitives/functions/Function1/Table/Table.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2017 OpenFOAM Foundation
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -30,10 +30,12 @@ Class
 Description
     Templated table container function.
 
-    Items are stored in a list of Tuple2's. First column is always stored as
-    scalar entries. Data is read in Tuple2 form.
+    Items are stored in a list of Tuple2, with the first column always
+    being a scalar and the second column (the lookup value) in
+    required data type.
 
     Usage:
+    Inline specification.
     \verbatim
         <entryName>   table
         (
@@ -42,13 +44,43 @@ Description
         );
     \endverbatim
 
+    Dictionary specification, external data reference.
+    \verbatim
+        <entryName>
+        {
+            type table;
+            file "<case>/path/tableValues";
+        }
+    \endverbatim
+
+    Dictionary specification, embedded content
+    Dictionary form.
+    \verbatim
+        <entryName>
+        {
+            type table;
+            values
+            (
+                (0.0 (1 2 3))
+                (1.0 (4 5 6))
+            );
+        }
+    \endverbatim
+
+Note
+    The external data reference (using the \c file keyword) is
+    used in preference to the \c values specification.
+
+See Also
+    Foam::Function1Types::TableFile
+
 SourceFiles
     Table.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef Table_H
-#define Table_H
+#ifndef Function1Types_Table_H
+#define Function1Types_Table_H
 
 #include "TableBase.H"
 
@@ -68,6 +100,12 @@ class Table
 :
     public TableBase<Type>
 {
+    // Private Data
+
+        //- Input name for file-based input (optional)
+        fileName fName_;
+
+
     // Private Member Functions
 
         //- No copy assignment
@@ -81,10 +119,10 @@ public:
 
     // Constructors
 
-        //- Construct from entry name and dictionary
+        //- Construct from entry name and dictionary.
         Table(const word& entryName, const dictionary& dict);
 
-        //- Copy constructor
+        //- Copy construct
         explicit Table(const Table<Type>& tbl);
 
         //- Construct and return a clone
@@ -96,6 +134,12 @@ public:
 
     //- Destructor
     virtual ~Table() = default;
+
+
+    // Member Functions
+
+        //- Write coefficients in dictionary format
+        virtual void writeData(Ostream& os) const;
 };
 
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.H b/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.H
index 82361382bd2f2573761814b678f88b0217154a29..57b05c7f2ba3b9260251f0f9ad88596f64110d61 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.H
+++ b/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.H
@@ -35,8 +35,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef TableBase_H
-#define TableBase_H
+#ifndef Function1Types_TableBase_H
+#define Function1Types_TableBase_H
 
 #include "tableBounds.H"
 #include "Function1.H"
diff --git a/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.H b/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.H
index 76d210a786407266e0782dfba928e652bb0eb6d2..cabe6e2d9fc165e4fefe958d2eb2c3de19666ebe 100644
--- a/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.H
+++ b/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.H
@@ -51,13 +51,16 @@ Description
         );
     \endverbatim
 
+See Also
+    Foam::Function1Types::Table
+
 SourceFiles
     TableFile.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef TableFile_H
-#define TableFile_H
+#ifndef Function1Types_TableFile_H
+#define Function1Types_TableFile_H
 
 #include "TableBase.H"
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/Uniform/Uniform.H b/src/OpenFOAM/primitives/functions/Function1/Uniform/Uniform.H
index 46078cea7d856f62c2dca263d50519a01b0af83b..805480f504bd7bf83995b482c80a80d61421111c 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Uniform/Uniform.H
+++ b/src/OpenFOAM/primitives/functions/Function1/Uniform/Uniform.H
@@ -43,8 +43,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef Uniform_H
-#define Uniform_H
+#ifndef Function1Types_Uniform_H
+#define Function1Types_Uniform_H
 
 #include "Function1.H"
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/Zero/ZeroConstant.H b/src/OpenFOAM/primitives/functions/Function1/Zero/ZeroConstant.H
index 2393d949dcf6ebfe821632eb4693d1500481b464..8563f6663d83f19f931892be1d20b878c15c4b80 100644
--- a/src/OpenFOAM/primitives/functions/Function1/Zero/ZeroConstant.H
+++ b/src/OpenFOAM/primitives/functions/Function1/Zero/ZeroConstant.H
@@ -31,8 +31,17 @@ Description
     Templated function that returns the corresponding 0 (zero).
 
     Usage:
+    Inline specification:
     \verbatim
-        <entryName> zero;
+        <entryName>  zero;
+    \endverbatim
+
+    In dictionary format:
+    \verbatim
+        <entryName>
+        {
+            type    zero;
+        }
     \endverbatim
 
 SourceFiles
@@ -40,8 +49,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef ZeroConstant_H
-#define ZeroConstant_H
+#ifndef Function1Types_ZeroConstant_H
+#define Function1Types_ZeroConstant_H
 
 #include "Function1.H"
 
@@ -94,7 +103,7 @@ public:
         //- Integrate between two values
         virtual inline Type integrate(const scalar x1, const scalar x2) const;
 
-        //- Write in dictionary format
+        //- Write as primitive (inline) format
         virtual void writeData(Ostream& os) const;
 };
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/halfCosineRamp/halfCosineRamp.H b/src/OpenFOAM/primitives/functions/Function1/halfCosineRamp/halfCosineRamp.H
index 7c1a0332674d78275d485f356ef64fada2a2c534..7d536988e8c75900b7847e1e2cb79531d03d7e9b 100644
--- a/src/OpenFOAM/primitives/functions/Function1/halfCosineRamp/halfCosineRamp.H
+++ b/src/OpenFOAM/primitives/functions/Function1/halfCosineRamp/halfCosineRamp.H
@@ -39,8 +39,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef halfCosineRamp_H
-#define halfCosineRamp_H
+#ifndef Function1Types_halfCosineRamp_H
+#define Function1Types_halfCosineRamp_H
 
 #include "ramp.H"
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/linearRamp/linearRamp.H b/src/OpenFOAM/primitives/functions/Function1/linearRamp/linearRamp.H
index 52f2f4d73fe380c6d4c94db3b17433697e30a44e..d22271c839ccf515082bfd8aac99d4bbdf5244e6 100644
--- a/src/OpenFOAM/primitives/functions/Function1/linearRamp/linearRamp.H
+++ b/src/OpenFOAM/primitives/functions/Function1/linearRamp/linearRamp.H
@@ -39,8 +39,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef linearRamp_H
-#define linearRamp_H
+#ifndef Function1Types_linearRamp_H
+#define Function1Types_linearRamp_H
 
 #include "ramp.H"
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/quadraticRamp/quadraticRamp.H b/src/OpenFOAM/primitives/functions/Function1/quadraticRamp/quadraticRamp.H
index 8d4b6f524b5f12ffa10846d3d6ea62dcc2041f1d..fcdfaeacb1e407c2d0a8560c89552b34c74e7178 100644
--- a/src/OpenFOAM/primitives/functions/Function1/quadraticRamp/quadraticRamp.H
+++ b/src/OpenFOAM/primitives/functions/Function1/quadraticRamp/quadraticRamp.H
@@ -39,8 +39,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef quadraticRamp_H
-#define quadraticRamp_H
+#ifndef Function1Types_quadraticRamp_H
+#define Function1Types_quadraticRamp_H
 
 #include "ramp.H"
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/quarterCosineRamp/quarterCosineRamp.H b/src/OpenFOAM/primitives/functions/Function1/quarterCosineRamp/quarterCosineRamp.H
index 83950cc72c55b6414186b5eaec887d7c587e20df..275d316e4767086d4db2e22a54b805b073050134 100644
--- a/src/OpenFOAM/primitives/functions/Function1/quarterCosineRamp/quarterCosineRamp.H
+++ b/src/OpenFOAM/primitives/functions/Function1/quarterCosineRamp/quarterCosineRamp.H
@@ -39,8 +39,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef quarterCosineRamp_H
-#define quarterCosineRamp_H
+#ifndef Function1Types_quarterCosineRamp_H
+#define Function1Types_quarterCosineRamp_H
 
 #include "ramp.H"
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/quarterSineRamp/quarterSineRamp.H b/src/OpenFOAM/primitives/functions/Function1/quarterSineRamp/quarterSineRamp.H
index 88a41fe693d82f0086c2d92e89d195a9c84a29c7..37aec55d7e4173bba5406cf2977191220abaf96b 100644
--- a/src/OpenFOAM/primitives/functions/Function1/quarterSineRamp/quarterSineRamp.H
+++ b/src/OpenFOAM/primitives/functions/Function1/quarterSineRamp/quarterSineRamp.H
@@ -38,8 +38,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef quarterSineRamp_H
-#define quarterSineRamp_H
+#ifndef Function1Types_quarterSineRamp_H
+#define Function1Types_quarterSineRamp_H
 
 #include "ramp.H"
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/ramp/ramp.H b/src/OpenFOAM/primitives/functions/Function1/ramp/ramp.H
index f5767756f0482d5a523251332175bc39452b91bb..df7ed6c00b157f7a5903d6a8e8e890ed0c4b4894 100644
--- a/src/OpenFOAM/primitives/functions/Function1/ramp/ramp.H
+++ b/src/OpenFOAM/primitives/functions/Function1/ramp/ramp.H
@@ -66,8 +66,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef ramp_H
-#define ramp_H
+#ifndef Function1Types_ramp_H
+#define Function1Types_ramp_H
 
 #include "Function1.H"
 
diff --git a/src/OpenFOAM/primitives/functions/Function1/step/stepFunction.H b/src/OpenFOAM/primitives/functions/Function1/step/stepFunction.H
index e4c7466f2344265ce159fe3355716e3e4dad2a69..e6a6daa638ab0139fb8835afaa217306bdd9326b 100644
--- a/src/OpenFOAM/primitives/functions/Function1/step/stepFunction.H
+++ b/src/OpenFOAM/primitives/functions/Function1/step/stepFunction.H
@@ -38,8 +38,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef stepFunction_H
-#define stepFunction_H
+#ifndef Function1Types_stepFunction_H
+#define Function1Types_stepFunction_H
 
 #include "ramp.H"
 
diff --git a/src/engine/engineTime/freePiston/freePiston.H b/src/engine/engineTime/freePiston/freePiston.H
index 46237d09401da4eccc21cea7563bf833f9669458..1f0a1f10b5f640cf2ed3833cca508df121d90547 100644
--- a/src/engine/engineTime/freePiston/freePiston.H
+++ b/src/engine/engineTime/freePiston/freePiston.H
@@ -36,15 +36,14 @@ Description
 
     For example,
     \verbatim
-        pistonPositionTime  table ( (0 0.13) (0.020 0.03) );
+        pistonPositionTime  table ((0 0.13) (0.020 0.03));
     \endverbatim
-
-    or with a tableFile
+    or
     \verbatim
-        pistonPositionTime  tableFile;
-        pistonPositionTimeCoeffs
+        pistonPositionTime
         {
-            fileName            "data";
+            type    table;
+            file    "<constant>/pistonPosition.dat";
             outOfBounds         clamp;
             interpolationScheme linear;
         }
@@ -76,7 +75,7 @@ class freePiston
 :
     public engineTime
 {
-    // Private data
+    // Private Data
 
         autoPtr<Function1<scalar>> pistonPositionTime_;
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchFields.C b/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchFields.C
index 7b260be5d6d3eeea9977eb9b1ec58a6b82dff7e2..c404004e312d784acf7669e1d21da73f1b1bd04f 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchFields.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchFields.C
@@ -30,8 +30,6 @@ License
 #include "addToRunTimeSelectionTable.H"
 #include "volFields.H"
 #include "surfaceFields.H"
-#include "Tuple2.H"
-#include "PolynomialEntry.H"
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fanPressure/fanPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/fanPressure/fanPressureFvPatchScalarField.H
index 7db246e11f614377c624748174c4af5542e32ada..3f3e0acd26eff03148e9d21010f7f9c1efb10590 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fanPressure/fanPressureFvPatchScalarField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fanPressure/fanPressureFvPatchScalarField.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2017-2020 OpenCFD Ltd
+    Copyright (C) 2017-2021 OpenCFD Ltd
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -71,11 +71,11 @@ Usage
     {
         type            fanPressure;
         direction       in;
-        fanCurve        tableFile;
-        fanCurveCoeffs
+        fanCurve
         {
-            file        "<constant>/fanCurve";
-            outOfBounds clamp;
+            type table;
+            file "<constant>/fanCurve";
+            outOfBounds clamp;  // Optional out-of-bounds handling
         }
         p0              uniform 0;
         value           uniform 0;
diff --git a/src/meshTools/PatchFunction1/ConstantField/ConstantField.C b/src/meshTools/PatchFunction1/ConstantField/ConstantField.C
index 7dd8331dbd444fb33059b91fa5568277f9112e2b..4bf7de873872346dcf746aeae7614f15b8b3f89b 100644
--- a/src/meshTools/PatchFunction1/ConstantField/ConstantField.C
+++ b/src/meshTools/PatchFunction1/ConstantField/ConstantField.C
@@ -101,52 +101,43 @@ Foam::PatchFunction1Types::ConstantField<Type>::getValue
         }
         ITstream& is = eptr->stream();
 
-        // Read first token
-        token firstToken(is);
-
-        if (firstToken.isWord())
+        if (is.peek().isWord())
         {
-            if
-            (
-                firstToken.wordToken() == "uniform"
-             || firstToken.wordToken() == "constant"
-            )
+            const word contentType(is);
+
+            if (contentType == "uniform" || contentType == "constant")
             {
                 is >> uniformValue;
-                fld.setSize(len);
+                fld.resize(len);
                 fld = uniformValue;
             }
-            else if (firstToken.wordToken() == "nonuniform")
+            else if (contentType == "nonuniform")
             {
-                List<Type>& list = fld;
-                is >> list;
                 isUniform = false;
-
-                const label currentSize = fld.size();
-                if (currentSize != len)
+                is >> static_cast<List<Type>&>(fld);
+                const label lenRead = fld.size();
+                if (len != lenRead)
                 {
                     if
                     (
-                        len < currentSize
+                        len < lenRead
                      && FieldBase::allowConstructFromLargerSize
                     )
                     {
                         #ifdef FULLDEBUG
                         IOWarningInFunction(dict)
-                            << "Sizes do not match. "
-                            << "Re-sizing " << currentSize
-                            << " entries to " << len
-                            << endl;
+                            << "Sizes do not match. Truncating " << lenRead
+                            << " entries to " << len << endl;
                         #endif
 
-                        // Resize (shrink) the data
-                        fld.setSize(len);
+                        // Truncate the data
+                        fld.resize(len);
                     }
                     else
                     {
                         FatalIOErrorInFunction(dict)
-                            << "size " << fld.size()
-                            << " is not equal to the given value of " << len
+                            << "size " << lenRead
+                            << " is not equal to the expected length " << len
                             << exit(FatalIOError);
                     }
                 }
@@ -156,15 +147,15 @@ Foam::PatchFunction1Types::ConstantField<Type>::getValue
                 isUniform = false;
                 FatalIOErrorInFunction(dict)
                     << "Expected keyword 'uniform', 'nonuniform' or 'constant'"
-                    << ", found " << firstToken.wordToken()
+                    << ", found " << contentType
                     << exit(FatalIOError);
             }
         }
         else
         {
-            is.putBack(firstToken);
+            // Uniform (constant) field
             is >> uniformValue;
-            fld.setSize(len);
+            fld.resize(len);
             fld = uniformValue;
         }
     }
diff --git a/src/meshTools/PatchFunction1/PatchFunction1/PatchFunction1New.C b/src/meshTools/PatchFunction1/PatchFunction1/PatchFunction1New.C
index 33f85c81f237e372ba9319115f32805f765874ac..62ceceb3897c0e42c408a45ca97a2d7d4a1d8994 100644
--- a/src/meshTools/PatchFunction1/PatchFunction1/PatchFunction1New.C
+++ b/src/meshTools/PatchFunction1/PatchFunction1/PatchFunction1New.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2018-2020 OpenCFD Ltd.
+    Copyright (C) 2018-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -49,6 +49,10 @@ Foam::PatchFunction1<Type>::New
     {
         // Dictionary entry
 
+        DebugInFunction
+            << "For " << entryName << " with dictionary entries: "
+            << flatOutput(coeffs->toc()) << nl;
+
         coeffs->readEntry
         (
             "type",
@@ -60,18 +64,21 @@ Foam::PatchFunction1<Type>::New
     else if (eptr)
     {
         // Primitive entry
-        // - non-word : value for constant (uniform) function
         // - word : the modelType, or uniform/nonuniform
+        // - non-word : value for constant (uniform) function
 
-        ITstream& is = eptr->stream();
+        DebugInFunction
+            << "For " << entryName << " with primitive entry" << nl;
 
-        token firstToken(is);
+        ITstream& is = eptr->stream();
 
-        // Compatibility for reading straight fields
-        if (!firstToken.isWord())
+        if (is.peek().isWord())
+        {
+            modelType = is.peek().wordToken();
+        }
+        else
         {
-            // A value
-            is.putBack(firstToken);
+            // A value - compatibility for reading uniform (constant) field
 
             const Type constValue = pTraits<Type>(is);
 
@@ -88,8 +95,6 @@ Foam::PatchFunction1<Type>::New
             );
         }
 
-        modelType = firstToken.wordToken();
-
         // Looks like a normal field entry?
         if (modelType == "uniform" || modelType == "nonuniform")
         {
diff --git a/tutorials/combustion/fireFoam/LES/compartmentFire/0/U b/tutorials/combustion/fireFoam/LES/compartmentFire/0/U
index 1454b0dc718a0654d19944a8170a640560d73831..f2f02ad16449f29eb1c8b9c9650899fb50888e66 100644
--- a/tutorials/combustion/fireFoam/LES/compartmentFire/0/U
+++ b/tutorials/combustion/fireFoam/LES/compartmentFire/0/U
@@ -24,10 +24,10 @@ boundaryField
     inlet
     {
         type            flowRateInletVelocity;
-        massFlowRate    tableFile;
-        massFlowRateCoeffs
+        massFlowRate
         {
-            file            "<constant>/massLossRate";
+            type table;
+            file "<constant>/massLossRate";
         }
         value           uniform (0 0 0);
     }
diff --git a/tutorials/incompressible/pimpleFoam/RAS/TJunctionFan/0.orig/p b/tutorials/incompressible/pimpleFoam/RAS/TJunctionFan/0.orig/p
index b408bc25c1795b4b32e4e55f23a9a5f125a8a789..09476e5c55f0dcc0529cb4d09fc4798129ba585d 100644
--- a/tutorials/incompressible/pimpleFoam/RAS/TJunctionFan/0.orig/p
+++ b/tutorials/incompressible/pimpleFoam/RAS/TJunctionFan/0.orig/p
@@ -25,11 +25,10 @@ boundaryField
     {
         type            fanPressure;
         direction       in;
-        fanCurve        tableFile;
-        fanCurveCoeffs
+        fanCurve
         {
-            file        "<constant>/FluxVsdP.dat";
-            // readerType  openFoam;   // Default
+            type table;
+            file "<constant>/FluxVsdP.dat";
             // outOfBounds clamp;      // Default
         }
         //nonDimensional  true;
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/controlDict
index 54e5ed8675f55d9c7573db21936ed9260e0cc948..9f5f0cbfc7b55faf3a730894520f2f325aed3db6 100644
--- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/controlDict
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/controlDict
@@ -59,8 +59,11 @@ functions
         type            setTimeStep;
         libs            (utilityFunctionObjects);
         enabled         yes;
-        deltaT          tableFile;
-        file            "<system>/deltaTvalues";
+        deltaT
+        {
+            type table;
+            file "<system>/deltaTvalues";
+        }
     }
 
     minMaxp