Kunz.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2011-2017 OpenFOAM Foundation
9  Copyright (C) 2019 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 \*---------------------------------------------------------------------------*/
28 
29 #include "Kunz.H"
31 
32 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
33 
34 namespace Foam
35 {
36 namespace phaseChangeTwoPhaseMixtures
37 {
38  defineTypeNameAndDebug(Kunz, 0);
39  addToRunTimeSelectionTable(phaseChangeTwoPhaseMixture, Kunz, components);
40 }
41 }
42 
43 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
44 
46 (
47  const volVectorField& U,
48  const surfaceScalarField& phi
49 )
50 :
51  phaseChangeTwoPhaseMixture(typeName, U, phi),
52 
53  UInf_("UInf", dimVelocity, phaseChangeTwoPhaseMixtureCoeffs_),
54  tInf_("tInf", dimTime, phaseChangeTwoPhaseMixtureCoeffs_),
55  Cc_("Cc", dimless, phaseChangeTwoPhaseMixtureCoeffs_),
56  Cv_("Cv", dimless, phaseChangeTwoPhaseMixtureCoeffs_),
57 
58  p0_(pSat().dimensions(), Zero),
59 
60  mcCoeff_(Cc_*rho2()/tInf_),
61  mvCoeff_(Cv_*rho2()/(0.5*rho1()*sqr(UInf_)*tInf_))
62 {
63  correct();
64 }
65 
66 
67 // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
68 
71 {
72  const volScalarField& p = alpha1_.db().lookupObject<volScalarField>("p");
73  volScalarField limitedAlpha1(min(max(alpha1_, scalar(0)), scalar(1)));
74 
75  return Pair<tmp<volScalarField>>
76  (
77  mcCoeff_*sqr(limitedAlpha1)
78  *max(p - pSat(), p0_)/max(p - pSat(), 0.01*pSat()),
79 
80  mvCoeff_*min(p - pSat(), p0_)
81  );
82 }
83 
86 {
87  const volScalarField& p = alpha1_.db().lookupObject<volScalarField>("p");
88  volScalarField limitedAlpha1(min(max(alpha1_, scalar(0)), scalar(1)));
89 
90  return Pair<tmp<volScalarField>>
91  (
92  mcCoeff_*sqr(limitedAlpha1)*(1.0 - limitedAlpha1)
93  *pos0(p - pSat())/max(p - pSat(), 0.01*pSat()),
94 
95  (-mvCoeff_)*limitedAlpha1*neg(p - pSat())
96  );
97 }
98 
99 
101 {}
102 
103 
105 {
107  {
108  phaseChangeTwoPhaseMixtureCoeffs_ = optionalSubDict(type() + "Coeffs");
109 
110  phaseChangeTwoPhaseMixtureCoeffs_.readEntry("UInf", UInf_);
111  phaseChangeTwoPhaseMixtureCoeffs_.readEntry("tInf", tInf_);
112  phaseChangeTwoPhaseMixtureCoeffs_.readEntry("Cc", Cc_);
113  phaseChangeTwoPhaseMixtureCoeffs_.readEntry("Cv", Cv_);
114 
115  mcCoeff_ = Cc_*rho2()/tInf_;
116  mvCoeff_ = Cv_*rho2()/(0.5*rho1()*sqr(UInf_)*tInf_);
117 
118  return true;
119  }
120 
121  return false;
122 }
123 
124 
125 // ************************************************************************* //
Foam::addToRunTimeSelectionTable
addToRunTimeSelectionTable(decompositionMethod, kahipDecomp, dictionary)
p
volScalarField & p
Definition: createFieldRefs.H:8
Foam::dimless
const dimensionSet dimless(0, 0, 0, 0, 0, 0, 0)
Dimensionless.
Definition: dimensionSets.H:50
Foam::Zero
static constexpr const zero Zero
Global zero (0)
Definition: zero.H:131
Foam::dimVelocity
const dimensionSet dimVelocity
Foam::pos0
dimensionedScalar pos0(const dimensionedScalar &ds)
Definition: dimensionedScalar.C:188
Foam::min
label min(const labelHashSet &set, label minValue=labelMax)
Find the min value in labelHashSet, optionally limited by second argument.
Definition: hashSets.C:33
Foam::phaseChangeTwoPhaseMixtures::Kunz::Kunz
Kunz(const volVectorField &U, const surfaceScalarField &phi)
Construct from components.
Foam::phaseChangeTwoPhaseMixtures::Kunz::read
virtual bool read()
Read the transportProperties dictionary and update.
Foam::dimTime
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
Definition: dimensionSets.H:54
phi
surfaceScalarField & phi
Definition: setRegionFluidFields.H:8
rho2
volScalarField & rho2
Definition: setRegionFluidFields.H:30
Foam::volScalarField
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Definition: volFieldsFwd.H:57
Foam::phaseChangeTwoPhaseMixture::read
virtual bool read()=0
Read the transportProperties dictionary and update.
Foam::max
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
Definition: hashSets.C:47
rho1
volScalarField & rho1
Definition: setRegionFluidFields.H:27
addToRunTimeSelectionTable.H
Macros for easy insertion into run-time selection tables.
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::threePhaseInterfaceProperties::correct
void correct()
Definition: threePhaseInterfaceProperties.H:153
Foam::phaseChangeTwoPhaseMixtures::Kunz::correct
virtual void correct()
Correct the Kunz phaseChange model.
Foam::volVectorField
GeometricField< vector, fvPatchField, volMesh > volVectorField
Definition: volFieldsFwd.H:60
U
U
Definition: pEqn.H:72
Foam::sqr
dimensionedSymmTensor sqr(const dimensionedVector &dv)
Definition: dimensionedSymmTensor.C:51
Foam::Pair
An ordered pair of two objects of type <T> with first() and second() elements.
Definition: Pair.H:54
Foam::surfaceScalarField
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
Definition: surfaceFieldsFwd.H:54
Foam::type
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
Definition: MSwindows.C:590
Foam::phaseChangeTwoPhaseMixtures::Kunz::mDotAlphal
virtual Pair< tmp< volScalarField > > mDotAlphal() const
Return the mass condensation and vaporisation rates as a.
Foam::defineTypeNameAndDebug
defineTypeNameAndDebug(combustionModel, 0)
Foam::neg
dimensionedScalar neg(const dimensionedScalar &ds)
Definition: dimensionedScalar.C:199
Kunz.H
Foam::phaseChangeTwoPhaseMixtures::Kunz::mDotP
virtual Pair< tmp< volScalarField > > mDotP() const
Return the mass condensation and vaporisation rates as coefficients.