diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/Make/files b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/Make/files
index 0642107d6..34919abb2 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/Make/files
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/Make/files
@@ -17,6 +17,7 @@ saturationModels/Antoine/Antoine.C
saturationModels/AntoineExtended/AntoineExtended.C
saturationModels/ArdenBuck/ArdenBuck.C
saturationModels/polynomial/polynomial.C
+saturationModels/function1/function1.C
saturationModels/constantSaturationConditions/constantSaturationConditions.C
LIB = $(FOAM_LIBBIN)/libreactingEulerianInterfacialCompositionModels
diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/function1/function1.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/function1/function1.C
new file mode 100644
index 000000000..f165c24d2
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/function1/function1.C
@@ -0,0 +1,142 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2017 OpenFOAM Foundation
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+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 "function1.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace saturationModels
+{
+ defineTypeNameAndDebug(function1, 0);
+ addToRunTimeSelectionTable(saturationModel, function1, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+Foam::saturationModels::function1::function1(const dictionary& dict)
+:
+ saturationModel(),
+ function_
+ (
+ Function1::New("function", dict)
+ )
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+Foam::saturationModels::function1::~function1()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+Foam::tmp
+Foam::saturationModels::function1::pSat
+(
+ const volScalarField& T
+) const
+{
+ NotImplemented;
+ return volScalarField::null();
+}
+
+
+Foam::tmp
+Foam::saturationModels::function1::pSatPrime
+(
+ const volScalarField& T
+) const
+{
+ NotImplemented;
+ return volScalarField::null();
+}
+
+
+Foam::tmp
+Foam::saturationModels::function1::lnPSat
+(
+ const volScalarField& T
+) const
+{
+ NotImplemented;
+ return volScalarField::null();
+}
+
+
+Foam::tmp
+Foam::saturationModels::function1::Tsat
+(
+ const volScalarField& p
+) const
+{
+ tmp tTsat
+ (
+ new volScalarField
+ (
+ IOobject
+ (
+ "Tsat",
+ p.mesh().time().timeName(),
+ p.mesh(),
+ IOobject::NO_READ,
+ IOobject::NO_WRITE
+ ),
+ p.mesh(),
+ dimensionedScalar("zero", dimTemperature, 0)
+ )
+ );
+
+ volScalarField& Tsat = tTsat.ref();
+
+ forAll(Tsat, celli)
+ {
+ Tsat[celli] = function_->value(p[celli]);
+ }
+
+ volScalarField::Boundary& TsatBf = Tsat.boundaryFieldRef();
+
+ forAll(Tsat.boundaryField(), patchi)
+ {
+ scalarField& Tsatp = TsatBf[patchi];
+ const scalarField& pp = p.boundaryField()[patchi];
+
+ forAll(Tsatp, facei)
+ {
+ Tsatp[facei] = function_->value(pp[facei]);
+
+ }
+ }
+
+ return tTsat;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/function1/function1.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/function1/function1.H
new file mode 100644
index 000000000..bbac62d50
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/function1/function1.H
@@ -0,0 +1,142 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2017 OpenFOAM Foundation
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+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::saturationModels::function1
+
+Description
+ Saturation vapour temperature in terms of
+ the vapour pressure (in Pa). The saturation temperature in Kelvins is
+ specified as a Foam::Function1 type, to enable use of, e.g. constant,
+ polynomial, table values.
+
+ Currently this class only provides \f$T_sat\f$, the inverse function to
+ return the vapour pressure for a given temperature are not implemented.
+
+ Examples:
+
+ \verbatim
+ type function1;
+ function polynomial
+ (
+ (308.0422 0)
+ (0.0015096 1)
+ (-1.61589e-8 2)
+ (1.114106e-13 3)
+ (-4.52216e-19 4)
+ (1.05192e-24 5)
+ (-1.2953e-30 6)
+ (6.5365e-37 7)
+ )
+ \endverbatim
+
+ \verbatim
+ type function1;
+
+ function csvFile;
+ functionCoeffs
+ {
+ nHeaderLine 1;
+ refColumn 0;
+ componentColumns (1);
+ separator ",";
+ mergeSeparators no;
+ file "filename.csv";
+ outOfBounds clamp;
+ interpolationScheme linear;
+ };
+ \endverbatim
+
+SourceFiles
+ function1.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef function1_saturationModel_H
+#define function1_saturationModel_H
+
+#include "saturationModel.H"
+#include "Function1.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace saturationModels
+{
+
+/*---------------------------------------------------------------------------*\
+ Class function1 Declaration
+\*---------------------------------------------------------------------------*/
+
+class function1
+:
+ public saturationModel
+{
+ // Private data
+
+ //- Saturation temperature as a function of pressure
+ autoPtr> function_;
+
+
+public:
+
+ //- Runtime type information
+ TypeName("function1");
+
+ // Constructors
+
+ //- Construct from a dictionary
+ function1(const dictionary& dict);
+
+
+ //- Destructor
+ virtual ~function1();
+
+
+ // Member Functions
+
+ //- Saturation pressure
+ virtual tmp pSat(const volScalarField& T) const;
+
+ //- Saturation pressure derivetive w.r.t. temperature
+ virtual tmp pSatPrime(const volScalarField& T) const;
+
+ //- Natural log of the saturation pressure
+ virtual tmp lnPSat(const volScalarField& T) const;
+
+ //- Saturation temperature
+ virtual tmp Tsat(const volScalarField& p) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace saturationModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //