From 3d1f1267e53bbc9e05757fe1628ee804c1cf5233 Mon Sep 17 00:00:00 2001 From: Henry Weller <http://cfd.direct> Date: Thu, 29 Oct 2015 22:42:42 +0000 Subject: [PATCH] reactingEulerFoam: Add polynomial saturation model Provided by Juho Peltola --- .../interfacialCompositionModels/Make/files | 1 + .../saturationModels/Antoine/Antoine.H | 2 +- .../saturationModels/polynomial/polynomial.C | 136 ++++++++++++++++++ .../saturationModels/polynomial/polynomial.H | 112 +++++++++++++++ 4 files changed, 250 insertions(+), 1 deletion(-) create mode 100644 applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/polynomial/polynomial.C create mode 100644 applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/polynomial/polynomial.H diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/Make/files b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/Make/files index 35878ec93a1..0642107d64f 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/Make/files +++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/Make/files @@ -16,6 +16,7 @@ saturationModels/saturationModel/newSaturationModel.C saturationModels/Antoine/Antoine.C saturationModels/AntoineExtended/AntoineExtended.C saturationModels/ArdenBuck/ArdenBuck.C +saturationModels/polynomial/polynomial.C saturationModels/constantSaturationConditions/constantSaturationConditions.C LIB = $(FOAM_LIBBIN)/libreactingEulerianInterfacialCompositionModels diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/Antoine/Antoine.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/Antoine/Antoine.H index ec9ba27b253..6252aaf8178 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/Antoine/Antoine.H +++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/Antoine/Antoine.H @@ -61,7 +61,7 @@ class Antoine { protected: - // Private data + // Protected data //- Constant A dimensionedScalar A_; diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/polynomial/polynomial.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/polynomial/polynomial.C new file mode 100644 index 00000000000..886fefe8e89 --- /dev/null +++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/polynomial/polynomial.C @@ -0,0 +1,136 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "polynomial.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace saturationModels +{ + defineTypeNameAndDebug(polynomial, 0); + addToRunTimeSelectionTable(saturationModel, polynomial, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::saturationModels::polynomial::polynomial(const dictionary& dict) +: + saturationModel(), + C_(dict.lookup("C<8>")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::saturationModels::polynomial::~polynomial() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::saturationModels::polynomial::pSat +( + const volScalarField& T +) const +{ + NotImplemented; + return volScalarField::null(); +} + + +Foam::tmp<Foam::volScalarField> +Foam::saturationModels::polynomial::pSatPrime +( + const volScalarField& T +) const +{ + NotImplemented; + return volScalarField::null(); +} + + +Foam::tmp<Foam::volScalarField> +Foam::saturationModels::polynomial::lnPSat +( + const volScalarField& T +) const +{ + NotImplemented; + return volScalarField::null(); +} + + +Foam::tmp<Foam::volScalarField> +Foam::saturationModels::polynomial::Tsat +( + const volScalarField& p +) const +{ + tmp<volScalarField> 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(); + + forAll(Tsat,celli) + { + Tsat[celli] = C_.value(p[celli]); + } + + forAll(Tsat.boundaryField(), patchi) + { + scalarField& Tsatp = Tsat.boundaryField()[patchi]; + const scalarField& pp = p.boundaryField()[patchi]; + + forAll(Tsatp, facei) + { + Tsatp[facei] = C_.value(pp[facei]); + } + } + + return tTsat; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/polynomial/polynomial.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/polynomial/polynomial.H new file mode 100644 index 00000000000..c2715040e25 --- /dev/null +++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/polynomial/polynomial.H @@ -0,0 +1,112 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::saturationModels::polynomial + +Description + Polynomial equation for the saturation vapour temperature in terms of + the vapour pressure (in Pa). + + \f[ + T_sat = \sum_i C_i p^i + \f] + + where \f$p\f$ is the pressure in Pa and \f$C\f$ are the coefficients. + + Currently this class only provides \f$T_sat\f$, the inverse function to + return the vapour pressure for a given temperature are not implemented. + +SourceFiles + polynomial.C + +\*---------------------------------------------------------------------------*/ + +#ifndef polynomial_H +#define polynomial_H + +#include "saturationModel.H" +#include "Polynomial.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace saturationModels +{ + +/*---------------------------------------------------------------------------*\ + Class polynomial Declaration +\*---------------------------------------------------------------------------*/ + +class polynomial +: + public saturationModel +{ + // Private data + + //- Polynomial coefficients + Polynomial<8> C_; + + +public: + + //- Runtime type information + TypeName("polynomial"); + + // Constructors + + //- Construct from a dictionary + polynomial(const dictionary& dict); + + + //- Destructor + virtual ~polynomial(); + + + // Member Functions + + //- Saturation pressure + virtual tmp<volScalarField> pSat(const volScalarField& T) const; + + //- Saturation pressure derivetive w.r.t. temperature + virtual tmp<volScalarField> pSatPrime(const volScalarField& T) const; + + //- Natural log of the saturation pressure + virtual tmp<volScalarField> lnPSat(const volScalarField& T) const; + + //- Saturation temperature + virtual tmp<volScalarField> Tsat(const volScalarField& p) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace saturationModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // -- GitLab