diff --git a/src/thermophysicalModels/thermophysicalProperties/Make/files b/src/thermophysicalModels/thermophysicalProperties/Make/files
index d428e419d2..269ad20b92 100644
--- a/src/thermophysicalModels/thermophysicalProperties/Make/files
+++ b/src/thermophysicalModels/thermophysicalProperties/Make/files
@@ -23,6 +23,7 @@ thermophysicalProperties/thermophysicalProperties.C
liquidProperties/liquidProperties/liquidProperties.C
liquidProperties/liquidMixtureProperties/liquidMixtureProperties.C
+liquidProperties/liquid/liquid.C
liquidProperties/H2O/H2O.C
liquidProperties/C7H16/C7H16.C
liquidProperties/C12H26/C12H26.C
diff --git a/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquid/liquid.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquid/liquid.C
new file mode 100644
index 0000000000..f9f2525edb
--- /dev/null
+++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquid/liquid.C
@@ -0,0 +1,135 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | www.openfoam.com
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+ Copyright (C) 2020 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM. If not, see .
+
+\*---------------------------------------------------------------------------*/
+
+#include "liquid.H"
+#include "NoneFunction1.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ defineTypeNameAndDebug(liquid, 0);
+ addToRunTimeSelectionTable(liquidProperties, liquid, dictionary);
+}
+
+
+// * * * * * * * * * * * * * * * Local Functions * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+template
+static autoPtr> NewOrNone
+(
+ const word& entryName,
+ const dictionary& dict
+)
+{
+ autoPtr> ptr
+ (
+ Function1::NewIfPresent(entryName, dict)
+ );
+
+ if (!ptr)
+ {
+ ptr.reset
+ (
+ new Function1Types::None(entryName, dict)
+ );
+ }
+
+ return ptr;
+}
+
+} // End namespace Foam
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+Foam::liquid::liquid(const dictionary& dict)
+:
+ liquidProperties(dict),
+ rho_(NewOrNone("rho", dict)),
+ pv_(NewOrNone("pv", dict)),
+ hl_(NewOrNone("hl", dict)),
+ Cp_(NewOrNone("Cp", dict)),
+ h_(NewOrNone("h", dict)),
+ Cpg_(NewOrNone("Cpg", dict)),
+ B_(NewOrNone("B", dict)),
+ mu_(NewOrNone("mu", dict)),
+ mug_(NewOrNone("mug", dict)),
+ kappa_(NewOrNone("kappa", dict)),
+ kappag_(NewOrNone("kappag", dict)),
+ sigma_(NewOrNone("sigma", dict)),
+ D_(NewOrNone("D", dict))
+{}
+
+
+
+Foam::liquid::liquid(const liquid& rhs)
+:
+ liquidProperties(rhs),
+ rho_(rhs.rho_.clone()),
+ pv_(rhs.pv_.clone()),
+ hl_(rhs.hl_.clone()),
+ Cp_(rhs.Cp_.clone()),
+ h_(rhs.h_.clone()),
+ Cpg_(rhs.Cpg_.clone()),
+ B_(rhs.B_.clone()),
+ mu_(rhs.mu_.clone()),
+ mug_(rhs.mug_.clone()),
+ kappa_(rhs.kappa_.clone()),
+ kappag_(rhs.kappag_.clone()),
+ sigma_(rhs.sigma_.clone()),
+ D_(rhs.D_.clone())
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+void Foam::liquid::writeData(Ostream& os) const
+{
+ liquidProperties::writeData(os); os << nl;
+ rho_->writeData(os); os << nl;
+ pv_->writeData(os); os << nl;
+ hl_->writeData(os); os << nl;
+ Cp_->writeData(os); os << nl;
+ h_->writeData(os); os << nl;
+ Cpg_->writeData(os); os << nl;
+ B_->writeData(os); os << nl;
+ mu_->writeData(os); os << nl;
+ mug_->writeData(os); os << nl;
+ kappa_->writeData(os); os << nl;
+ kappag_->writeData(os); os << nl;
+ sigma_->writeData(os); os << nl;
+ D_->writeData(os); os << endl;
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquid/liquid.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquid/liquid.H
new file mode 100644
index 0000000000..21b152c36a
--- /dev/null
+++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquid/liquid.H
@@ -0,0 +1,164 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | www.openfoam.com
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+ Copyright (C) 2020 OpenFOAM Foundation
+ Copyright (C) 2021 OpenCFD Ltd.
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM. If not, see .
+
+Class
+ Foam::liquid
+
+Description
+ Generic thermophysical properties class for a liquid in which the
+ functions and coefficients for each property are run-time selected.
+
+SourceFiles
+ liquid.C
+ liquidI.H
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef liquid_H
+#define liquid_H
+
+#include "liquidProperties.H"
+#include "Function1.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+ Class liquid Declaration
+\*---------------------------------------------------------------------------*/
+
+class liquid
+:
+ public liquidProperties
+{
+ // Private Data
+
+ autoPtr> rho_;
+ autoPtr> pv_;
+ autoPtr> hl_;
+ autoPtr> Cp_;
+ autoPtr> h_;
+ autoPtr> Cpg_;
+ autoPtr> B_;
+ autoPtr> mu_;
+ autoPtr> mug_;
+ autoPtr> kappa_;
+ autoPtr> kappag_;
+ autoPtr> sigma_;
+ autoPtr> D_;
+
+
+public:
+
+ friend class liquidProperties;
+
+ //- Runtime type information
+ TypeName("liquid");
+
+
+ // Constructors
+
+ //- Construct from dictionary
+ explicit liquid(const dictionary& dict);
+
+ //- Copy construct
+ liquid(const liquid& rhs);
+
+
+ //- Construct and return clone
+ virtual autoPtr clone() const
+ {
+ return autoPtr(new liquid(*this));
+ }
+
+
+ // Member Functions
+
+ //- Liquid density [kg/m^3]
+ inline scalar rho(scalar p, scalar T) const;
+
+ //- Vapour pressure [Pa]
+ inline scalar pv(scalar p, scalar T) const;
+
+ //- Heat of vapourisation [J/kg]
+ inline scalar hl(scalar p, scalar T) const;
+
+ //- Liquid heat capacity [J/(kg K)]
+ inline scalar Cp(scalar p, scalar T) const;
+
+ //- Liquid Enthalpy [J/(kg)]
+ inline scalar h(scalar p, scalar T) const;
+
+ //- Ideal gas heat capacity [J/(kg K)]
+ inline scalar Cpg(scalar p, scalar T) const;
+
+ //- Second Virial Coefficient [m^3/kg]
+ inline scalar B(scalar p, scalar T) const;
+
+ //- Liquid viscosity [Pa s]
+ inline scalar mu(scalar p, scalar T) const;
+
+ //- Vapour viscosity [Pa s]
+ inline scalar mug(scalar p, scalar T) const;
+
+ //- Liquid thermal conductivity [W/(m K)]
+ inline scalar kappa(scalar p, scalar T) const;
+
+ //- Vapour thermal conductivity [W/(m K)]
+ inline scalar kappag(scalar p, scalar T) const;
+
+ //- Surface tension [N/m]
+ inline scalar sigma(scalar p, scalar T) const;
+
+ //- Vapour diffusivity [m2/s]
+ inline scalar D(scalar p, scalar T) const;
+
+ //- Vapour diffusivity [m2/s] with specified binary pair
+ inline scalar D(scalar p, scalar T, scalar Wb) const;
+
+
+ // I-O
+
+ //- Write the function coefficients
+ void writeData(Ostream& os) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "liquidI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquid/liquidI.H b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquid/liquidI.H
new file mode 100644
index 0000000000..b362f20cf3
--- /dev/null
+++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquid/liquidI.H
@@ -0,0 +1,113 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | www.openfoam.com
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+ Copyright (C) 2020 OpenFOAM Foundation
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM. If not, see .
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::liquid::rho(scalar p, scalar T) const
+{
+ return rho_->value(T);
+}
+
+
+inline Foam::scalar Foam::liquid::pv(scalar p, scalar T) const
+{
+ return pv_->value(T);
+}
+
+
+inline Foam::scalar Foam::liquid::hl(scalar p, scalar T) const
+{
+ return hl_->value(T);
+}
+
+
+inline Foam::scalar Foam::liquid::Cp(scalar p, scalar T) const
+{
+ return Cp_->value(T);
+}
+
+
+inline Foam::scalar Foam::liquid::h(scalar p, scalar T) const
+{
+ return h_->value(T);
+}
+
+
+inline Foam::scalar Foam::liquid::Cpg(scalar p, scalar T) const
+{
+ return Cpg_->value(T);
+}
+
+
+inline Foam::scalar Foam::liquid::B(scalar p, scalar T) const
+{
+ return B_->value(T);
+}
+
+
+inline Foam::scalar Foam::liquid::mu(scalar p, scalar T) const
+{
+ return mu_->value(T);
+}
+
+
+inline Foam::scalar Foam::liquid::mug(scalar p, scalar T) const
+{
+ return mug_->value(T);
+}
+
+
+inline Foam::scalar Foam::liquid::kappa(scalar p, scalar T) const
+{
+ return kappa_->value(T);
+}
+
+
+inline Foam::scalar Foam::liquid::kappag(scalar p, scalar T) const
+{
+ return kappag_->value(T);
+}
+
+
+inline Foam::scalar Foam::liquid::sigma(scalar p, scalar T) const
+{
+ return sigma_->value(T);
+}
+
+
+inline Foam::scalar Foam::liquid::D(scalar p, scalar T) const
+{
+ return D_->value(T);
+}
+
+
+inline Foam::scalar Foam::liquid::D(scalar p, scalar T, scalar Wb) const
+{
+ // Currently ignoring the Wb argument
+ return D_->value(T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidProperties/liquidProperties.C b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidProperties/liquidProperties.C
index 3df7af91b8..c8855ee900 100644
--- a/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidProperties/liquidProperties.C
+++ b/src/thermophysicalModels/thermophysicalProperties/liquidProperties/liquidProperties/liquidProperties.C
@@ -117,9 +117,14 @@ Foam::autoPtr Foam::liquidProperties::New
{
DebugInFunction << "Constructing liquidProperties" << nl;
- const word liquidType(dict.dictName());
+ // Can either specify "type", or simply use the dictionary name
+ // as being the liquid type name
- if (dict.found("defaultCoeffs"))
+ word liquidType(dict.dictName());
+
+ const bool hadExplicitType = dict.readIfPresent("type", liquidType);
+
+ if (dict.found("defaultCoeffs") && !hadExplicitType)
{
// Backward-compatibility