Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev

This commit is contained in:
Henry Weller
2022-11-03 21:00:29 +00:00
41 changed files with 1095 additions and 105 deletions

View File

@ -2,5 +2,6 @@ populationBalanceMoments/populationBalanceMoments.C
populationBalanceSizeDistribution/populationBalanceSizeDistribution.C populationBalanceSizeDistribution/populationBalanceSizeDistribution.C
phaseForces/phaseForces.C phaseForces/phaseForces.C
phaseMap/phaseMap.C phaseMap/phaseMap.C
wallBoilingProperties/wallBoilingProperties.C
LIB = $(FOAM_LIBBIN)/libmultiphaseEulerFoamFunctionObjects LIB = $(FOAM_LIBBIN)/libmultiphaseEulerFoamFunctionObjects

View File

@ -1,6 +1,7 @@
EXE_INC = \ EXE_INC = \
-I../phaseSystems/lnInclude \ -I../phaseSystems/lnInclude \
-I../interfacialModels/lnInclude \ -I../interfacialModels/lnInclude \
-I../multiphaseCompressibleMomentumTransportModels/lnInclude \
-I$(LIB_SRC)/physicalProperties/lnInclude \ -I$(LIB_SRC)/physicalProperties/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \ -I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
@ -15,6 +16,7 @@ EXE_INC = \
LIB_LIBS = \ LIB_LIBS = \
-lphaseSystem \ -lphaseSystem \
-lmultiphaseSystems \ -lmultiphaseSystems \
-lmultiphaseMomentumTransportModels \
-leulerianInterfacialModels \ -leulerianInterfacialModels \
-leulerianInterfacialCompositionModels \ -leulerianInterfacialCompositionModels \
-lmultiphaseMomentumTransportModels \ -lmultiphaseMomentumTransportModels \

View File

@ -0,0 +1,200 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2022 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 "wallBoilingProperties.H"
#include "addToRunTimeSelectionTable.H"
#include "alphatWallBoilingWallFunctionFvPatchScalarField.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
namespace functionObjects
{
defineTypeNameAndDebug(wallBoilingProperties, 0);
addToRunTimeSelectionTable
(
functionObject,
wallBoilingProperties,
dictionary
);
}
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::functionObjects::wallBoilingProperties::wallBoilingProperties
(
const word& name,
const Time& runTime,
const dictionary& dict
)
:
fvMeshFunctionObject(name, runTime, dict),
phase_
(
mesh_.lookupObject<phaseModel>
(
IOobject::groupName("alpha", dict.lookup("phase"))
)
),
fluid_(mesh_.lookupObject<phaseSystem>("phaseProperties"))
{
read(dict);
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam::functionObjects::wallBoilingProperties::~wallBoilingProperties()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
bool Foam::functionObjects::wallBoilingProperties::read(const dictionary& dict)
{
fvMeshFunctionObject::read(dict);
return true;
}
bool Foam::functionObjects::wallBoilingProperties::execute()
{
return true;
}
bool Foam::functionObjects::wallBoilingProperties::write()
{
volScalarField dDepartureField
(
volScalarField::New
(
IOobject::groupName("dDeparture", phase_.name()),
mesh_,
dimensionedScalar(dimLength, 0)
)
);
volScalarField fDepartureField
(
volScalarField::New
(
IOobject::groupName("fDeparture", phase_.name()),
mesh_,
dimensionedScalar(inv(dimTime), 0)
)
);
volScalarField nucSiteDensityField
(
volScalarField::New
(
IOobject::groupName("nucleationSiteDensity", phase_.name()),
mesh_,
dimensionedScalar(inv(dimArea), 0)
)
);
volScalarField fLiquidField
(
volScalarField::New
(
IOobject::groupName("fLiquid", phase_.name()),
mesh_,
dimensionedScalar(dimless, 0)
)
);
volScalarField quenchingHeatFluxField
(
volScalarField::New
(
IOobject::groupName("quenchingHeatFlux", phase_.name()),
mesh_,
dimensionedScalar(dimEnergy*inv(dimTime*dimArea), 0)
)
);
volScalarField evaporativeHeatFluxField
(
volScalarField::New
(
IOobject::groupName("evaporativeHeatFlux", phase_.name()),
mesh_,
dimensionedScalar(dimEnergy*inv(dimTime*dimArea), 0)
)
);
typedef compressible::alphatWallBoilingWallFunctionFvPatchScalarField
alphatWallBoilingWallFunction;
const word alphatName =
IOobject::groupName("alphat", phase_.name());
if (phase_.mesh().foundObject<volScalarField>(alphatName))
{
const volScalarField& alphat =
phase_.mesh().lookupObject<volScalarField>(alphatName);
const volScalarField::Boundary& alphatBf = alphat.boundaryField();
forAll(alphatBf, patchi)
{
if (isA<alphatWallBoilingWallFunction>(alphatBf[patchi]))
{
const alphatWallBoilingWallFunction& alphatw =
refCast
<
const alphatWallBoilingWallFunction
>(alphatBf[patchi]);
dDepartureField.boundaryFieldRef()[patchi] =
alphatw.dDeparture();
fDepartureField.boundaryFieldRef()[patchi] =
alphatw.depFrequency();
nucSiteDensityField.boundaryFieldRef()[patchi] =
alphatw.nucSiteDensity();
fLiquidField.boundaryFieldRef()[patchi] =
alphatw.wallLiquidFraction();
quenchingHeatFluxField.boundaryFieldRef()[patchi] =
alphatw.quenching();
evaporativeHeatFluxField.boundaryFieldRef()[patchi] =
alphatw.evaporative();
}
}
}
dDepartureField.write();
fDepartureField.write();
nucSiteDensityField.write();
fLiquidField.write();
quenchingHeatFluxField.write();
evaporativeHeatFluxField.write();
return true;
}
// ************************************************************************* //

View File

@ -0,0 +1,149 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2022 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::functionObjects::wallBoilingProperties
Description
This function looks up wall boiling wall functions and collects and writes
out out the following data:
- Bubble departure diameter
- Bubble departure frequency
- Nucleation site density
- Effective liquid fraction at the wall
- Quenching heat flux
- Evaporative heat flux
Example of function object specification:
\verbatim
writeWallBoilingProperties
{
type wallBoilingProperties;
functionObjectLibs ( "libmultiphaseEulerFoamFunctionObjects.so" );
writeControl writeTime;
phase liquid;
}
\endverbatim
Usage
\table
Property | Description | Required | Default value
type | type name: wallBoilingProperties | yes |
phase | phase name | yes | none
\endtable
SourceFiles
wallBoilingProperties.C
\*---------------------------------------------------------------------------*/
#ifndef wallBoilingProperties_H
#define wallBoilingProperties_H
#include "fvMeshFunctionObject.H"
#include "phaseSystem.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace functionObjects
{
/*---------------------------------------------------------------------------*\
Class wallBoilingProperties Declaration
\*---------------------------------------------------------------------------*/
class wallBoilingProperties
:
public fvMeshFunctionObject
{
// Private data
//- Phase model
const phaseModel& phase_;
//- Constant access to phaseSystem
const phaseSystem& fluid_;
public:
//- Runtime type information
TypeName("wallBoilingProperties");
// Constructors
//- Construct from Time and dictionary
wallBoilingProperties
(
const word& name,
const Time& runTime,
const dictionary& dict
);
//- Disallow default bitwise copy construction
wallBoilingProperties(const wallBoilingProperties&) = delete;
//- Destructor
virtual ~wallBoilingProperties();
// Member Functions
//- Read the wallBoilingProperties data
virtual bool read(const dictionary&);
//- Return the list of fields required
virtual wordList fields() const
{
return wordList::null();
}
//- Calculate the wallBoilingProperties field
virtual bool execute();
//- Write the wallBoilingProperties field
virtual bool write();
// Member Operators
//- Disallow default bitwise assignment
void operator=(const wallBoilingProperties&) = delete;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace functionObjects
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -79,7 +79,11 @@ alphatWallBoilingWallFunctionFvPatchScalarField
AbyV_(p.size(), 0), AbyV_(p.size(), 0),
alphatConv_(p.size(), 0), alphatConv_(p.size(), 0),
dDep_(p.size(), 1e-5), dDep_(p.size(), 1e-5),
fDep_(p.size(), 0),
N_(p.size(), 0),
fLiquid_(p.size(), 0),
qq_(p.size(), 0), qq_(p.size(), 0),
qe_(p.size(), 0),
partitioningModel_(nullptr), partitioningModel_(nullptr),
nucleationSiteModel_(nullptr), nucleationSiteModel_(nullptr),
departureDiamModel_(nullptr), departureDiamModel_(nullptr),
@ -107,7 +111,11 @@ alphatWallBoilingWallFunctionFvPatchScalarField
AbyV_(p.size(), 0), AbyV_(p.size(), 0),
alphatConv_(p.size(), 0), alphatConv_(p.size(), 0),
dDep_(p.size(), 1e-5), dDep_(p.size(), 1e-5),
fDep_(p.size(), 0),
N_(p.size(), 0),
fLiquid_(p.size(), 0),
qq_(p.size(), 0), qq_(p.size(), 0),
qe_(p.size(), 0),
partitioningModel_(nullptr), partitioningModel_(nullptr),
nucleationSiteModel_(nullptr), nucleationSiteModel_(nullptr),
departureDiamModel_(nullptr), departureDiamModel_(nullptr),
@ -164,9 +172,24 @@ alphatWallBoilingWallFunctionFvPatchScalarField
dict.subDict("departureFreqModel") dict.subDict("departureFreqModel")
); );
if (dict.found("dDep")) if (dict.found("dDeparture"))
{ {
dDep_ = scalarField("dDep", dict, p.size()); dDep_ = scalarField("dDeparture", dict, p.size());
}
if (dict.found("depFrequency"))
{
fDep_ = scalarField("depFrequency", dict, p.size());
}
if (dict.found("nucSiteDensity"))
{
N_ = scalarField("nucSiteDensity", dict, p.size());
}
if (dict.found("wallLiquidFraction"))
{
fLiquid_ = scalarField("wallLiquidFraction", dict, p.size());
} }
if (dict.found("qQuenching")) if (dict.found("qQuenching"))
@ -174,6 +197,11 @@ alphatWallBoilingWallFunctionFvPatchScalarField
qq_ = scalarField("qQuenching", dict, p.size()); qq_ = scalarField("qQuenching", dict, p.size());
} }
if (dict.found("qEvaporation"))
{
qq_ = scalarField("qEvaporation", dict, p.size());
}
break; break;
} }
} }
@ -212,7 +240,11 @@ alphatWallBoilingWallFunctionFvPatchScalarField
AbyV_(mapper(psf.AbyV_)), AbyV_(mapper(psf.AbyV_)),
alphatConv_(mapper(psf.alphatConv_)), alphatConv_(mapper(psf.alphatConv_)),
dDep_(mapper(psf.dDep_)), dDep_(mapper(psf.dDep_)),
fDep_(mapper(psf.fDep_)),
N_(mapper(psf.N_)),
fLiquid_(mapper(psf.fLiquid_)),
qq_(mapper(psf.qq_)), qq_(mapper(psf.qq_)),
qe_(mapper(psf.qe_)),
partitioningModel_(psf.partitioningModel_, false), partitioningModel_(psf.partitioningModel_, false),
nucleationSiteModel_(psf.nucleationSiteModel_, false), nucleationSiteModel_(psf.nucleationSiteModel_, false),
departureDiamModel_(psf.departureDiamModel_, false), departureDiamModel_(psf.departureDiamModel_, false),
@ -232,7 +264,11 @@ alphatWallBoilingWallFunctionFvPatchScalarField
AbyV_(psf.AbyV_), AbyV_(psf.AbyV_),
alphatConv_(psf.alphatConv_), alphatConv_(psf.alphatConv_),
dDep_(psf.dDep_), dDep_(psf.dDep_),
fDep_(psf.fDep_),
N_(psf.N_),
fLiquid_(psf.fLiquid_),
qq_(psf.qq_), qq_(psf.qq_),
qe_(psf.qe_),
partitioningModel_(psf.partitioningModel_, false), partitioningModel_(psf.partitioningModel_, false),
nucleationSiteModel_(psf.nucleationSiteModel_, false), nucleationSiteModel_(psf.nucleationSiteModel_, false),
departureDiamModel_(psf.departureDiamModel_, false), departureDiamModel_(psf.departureDiamModel_, false),
@ -252,7 +288,11 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::autoMap
m(AbyV_, AbyV_); m(AbyV_, AbyV_);
m(alphatConv_, alphatConv_); m(alphatConv_, alphatConv_);
m(dDep_, dDep_); m(dDep_, dDep_);
m(fDep_, fDep_);
m(N_, N_);
m(fLiquid_, fLiquid_);
m(qq_, qq_); m(qq_, qq_);
m(qe_, qe_);
} }
@ -270,7 +310,11 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::rmap
AbyV_.rmap(tiptf.AbyV_, addr); AbyV_.rmap(tiptf.AbyV_, addr);
alphatConv_.rmap(tiptf.alphatConv_, addr); alphatConv_.rmap(tiptf.alphatConv_, addr);
dDep_.rmap(tiptf.dDep_, addr); dDep_.rmap(tiptf.dDep_, addr);
fDep_.rmap(tiptf.fDep_, addr);
N_.rmap(tiptf.N_, addr);
fLiquid_.rmap(tiptf.fLiquid_, addr);
qq_.rmap(tiptf.qq_, addr); qq_.rmap(tiptf.qq_, addr);
qe_.rmap(tiptf.qe_, addr);
} }
@ -287,7 +331,11 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::reset
AbyV_.reset(tiptf.AbyV_); AbyV_.reset(tiptf.AbyV_);
alphatConv_.reset(tiptf.alphatConv_); alphatConv_.reset(tiptf.alphatConv_);
dDep_.reset(tiptf.dDep_); dDep_.reset(tiptf.dDep_);
fDep_.reset(tiptf.fDep_);
N_.reset(tiptf.N_);
fLiquid_.reset(tiptf.fLiquid_);
qq_.reset(tiptf.qq_); qq_.reset(tiptf.qq_);
qe_.reset(tiptf.qe_);
} }
@ -316,13 +364,17 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
const scalarField& vaporw = vapor.boundaryField()[patchi]; const scalarField& vaporw = vapor.boundaryField()[patchi];
// Partitioning // Partitioning
// NOTE! Assumes 1-thisPhase for liquid fraction in // NOTE! Assumes that there is only only one liquid phase and all
// multiphase simulations // other phases are vapor
const scalarField fLiquid(partitioningModel_->fLiquid(1 - vaporw));
const phaseModel& liquid = fluid.phases()[otherPhaseName_];
const scalarField& liquidw = liquid.boundaryField()[patchi];
fLiquid_ = partitioningModel_->fLiquid(liquidw);
operator== operator==
( (
calcAlphat(*this)*(1 - fLiquid)/max(vaporw, scalar(1e-8)) calcAlphat(*this)*(vaporw/(1 - liquidw + small) )
*(1 - fLiquid_)/max(vaporw, scalar(1e-8))
); );
break; break;
} }
@ -441,7 +493,7 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
const scalarField liquidw(liquid.boundaryField()[patchi]); const scalarField liquidw(liquid.boundaryField()[patchi]);
// Partitioning // Partitioning
const scalarField fLiquid(partitioningModel_->fLiquid(liquidw)); fLiquid_ = partitioningModel_->fLiquid(liquidw);
// Convective thermal diffusivity // Convective thermal diffusivity
alphatConv_ = calcAlphat(alphatConv_); alphatConv_ = calcAlphat(alphatConv_);
@ -483,8 +535,7 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
); );
// Bubble departure frequency: // Bubble departure frequency:
const scalarField fDep fDep_ =
(
departureFreqModel_->fDeparture departureFreqModel_->fDeparture
( (
liquid, liquid,
@ -494,12 +545,10 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
Tsatw, Tsatw,
L, L,
dDep_ dDep_
) );
);
// Nucleation site density: // Nucleation site density:
const scalarField N N_ =
(
nucleationSiteModel_->N nucleationSiteModel_->N
( (
liquid, liquid,
@ -509,9 +558,8 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
Tsatw, Tsatw,
L, L,
dDep_, dDep_,
fDep fDep_
) );
);
// Area fractions: // Area fractions:
@ -523,12 +571,12 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
const scalarField Al const scalarField Al
( (
fLiquid*4.8*exp(min(-Ja/80, log(vGreat))) fLiquid_*4.8*exp(min(-Ja/80, log(vGreat)))
); );
scalarField A2(min(pi*sqr(dDep_)*N*Al/4, scalar(1))); scalarField A2(min(pi*sqr(dDep_)*N_*Al/4, scalar(1)));
const scalarField A1(max(1 - A2, scalar(1e-4))); const scalarField A1(max(1 - A2, scalar(1e-4)));
scalarField A2E(min(pi*sqr(dDep_)*N*Al/4, scalar(5))); scalarField A2E(min(pi*sqr(dDep_)*N_*Al/4, scalar(5)));
if (volatileSpecie != "none" && !liquid.pure()) if (volatileSpecie != "none" && !liquid.pure())
{ {
@ -542,15 +590,15 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
// wall boiling // wall boiling
dmdtf_ = dmdtf_ =
(1 - relax_)*dmdtf_ (1 - relax_)*dmdtf_
+ relax_*(1.0/6.0)*A2E*dDep_*rhoVaporw*fDep*AbyV_; + relax_*(1.0/6.0)*A2E*dDep_*rhoVaporw*fDep_*AbyV_;
// Quenching heat transfer coefficient // Quenching heat transfer coefficient
const scalarField hQ const scalarField hQ
( (
2*(alphaw*Cpw)*fDep 2*(alphaw*Cpw)*fDep_
*sqrt *sqrt
( (
(0.8/max(fDep, small))/(pi*alphaw/rhoLiquidw) (0.8/max(fDep_, small))/(pi*alphaw/rhoLiquidw)
) )
); );
@ -560,7 +608,7 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
+ relax_*(A2*hQ*max(Tw - Tl, scalar(0))); + relax_*(A2*hQ*max(Tw - Tl, scalar(0)));
// Evaporation heat flux // Evaporation heat flux
const scalarField qe(dmdtf_*L/AbyV_); qe_ = dmdtf_*L/AbyV_;
// Effective thermal diffusivity that corresponds to the // Effective thermal diffusivity that corresponds to the
// calculated convective, quenching and evaporative heat // calculated convective, quenching and evaporative heat
@ -570,7 +618,7 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
( (
( (
A1*alphatConv_ A1*alphatConv_
+ (qq_ + qe)/max(hew.snGrad(), scalar(1e-16)) + (qq_ + qe_)/max(hew.snGrad(), scalar(1e-16))
) )
/max(liquidw, scalar(1e-8)) /max(liquidw, scalar(1e-8))
); );
@ -585,7 +633,7 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
{ {
const scalarField qc const scalarField qc
( (
fLiquid*A1*(alphatConv_ + alphaw)*hew.snGrad() fLiquid_*A1*(alphatConv_ + alphaw)*hew.snGrad()
); );
const scalarField qEff const scalarField qEff
@ -596,11 +644,11 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
Info<< " L: " << gMin(L) << " - " << gMax(L) << endl; Info<< " L: " << gMin(L) << " - " << gMax(L) << endl;
Info<< " Tl: " << gMin(Tl) << " - " << gMax(Tl) Info<< " Tl: " << gMin(Tl) << " - " << gMax(Tl)
<< endl; << endl;
Info<< " N: " << gMin(N) << " - " << gMax(N) << endl; Info<< " N: " << gMin(N_) << " - " << gMax(N_) << endl;
Info<< " dDep_: " << gMin(dDep_) << " - " Info<< " dDep_: " << gMin(dDep_) << " - "
<< gMax(dDep_) << endl; << gMax(dDep_) << endl;
Info<< " fDep: " << gMin(fDep) << " - " Info<< " fDep: " << gMin(fDep_) << " - "
<< gMax(fDep) << endl; << gMax(fDep_) << endl;
Info<< " Al: " << gMin(Al) << " - " << gMax(Al) Info<< " Al: " << gMin(Al) << " - " << gMax(Al)
<< endl; << endl;
Info<< " A1: " << gMin(A1) << " - " << gMax(A1) Info<< " A1: " << gMin(A1) << " - " << gMax(A1)
@ -613,10 +661,10 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
<< gMax(dmdtf_) << endl; << gMax(dmdtf_) << endl;
Info<< " qc: " << gMin(qc) << " - " << gMax(qc) Info<< " qc: " << gMin(qc) << " - " << gMax(qc)
<< endl; << endl;
Info<< " qq: " << gMin(fLiquid*qq_) << " - " Info<< " qq: " << gMin(fLiquid_*qq_) << " - "
<< gMax(fLiquid*qq_) << endl; << gMax(fLiquid_*qq_) << endl;
Info<< " qe: " << gMin(fLiquid*qe) << " - " Info<< " qe: " << gMin(fLiquid_*qe_) << " - "
<< gMax(fLiquid*qe) << endl; << gMax(fLiquid_*qe_) << endl;
Info<< " qEff: " << gMin(qEff) << " - " Info<< " qEff: " << gMin(qEff) << " - "
<< gMax(qEff) << endl; << gMax(qEff) << endl;
Info<< " alphat: " << gMin(*this) << " - " Info<< " alphat: " << gMin(*this) << " - "
@ -672,8 +720,12 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::write(Ostream& os) const
writeEntry(os, "phaseType", phaseTypeNames_[phaseType_]); writeEntry(os, "phaseType", phaseTypeNames_[phaseType_]);
writeEntry(os, "alphatConv", alphatConv_); writeEntry(os, "alphatConv", alphatConv_);
writeEntry(os, "dDep", dDep_); writeEntry(os, "dDeparture", dDep_);
writeEntry(os, "depFrequency", fDep_);
writeEntry(os, "nucSiteDensity", N_);
writeEntry(os, "wallLiquidFraction", fLiquid_);
writeEntry(os, "qQuenching", qq_); writeEntry(os, "qQuenching", qq_);
writeEntry(os, "qEvaporative", qe_);
switch (phaseType_) switch (phaseType_)
{ {

View File

@ -184,12 +184,25 @@ private:
//- Convective turbulent thermal diffusivity //- Convective turbulent thermal diffusivity
scalarField alphatConv_; scalarField alphatConv_;
//- Departure diameter field //- Departure diameter
scalarField dDep_; scalarField dDep_;
//- Departure frequency
scalarField fDep_;
//- Nucleation site density
scalarField N_;
//- Wall liquid fraction
scalarField fLiquid_;
//- Quenching surface heat flux //- Quenching surface heat flux
scalarField qq_; scalarField qq_;
//- Evaporative surface heat flux
scalarField qe_;
//- Run-time selected heat flux partitioning model //- Run-time selected heat flux partitioning model
autoPtr<wallBoilingModels::partitioningModel> autoPtr<wallBoilingModels::partitioningModel>
partitioningModel_; partitioningModel_;
@ -269,12 +282,42 @@ public:
// Member Functions // Member Functions
//- Return the departure diameter field //- Return the departure diameter field [m]
const scalarField& dDeparture() const const scalarField& dDeparture() const
{ {
return dDep_; return dDep_;
} }
//- Return the departure frequency field [Hz]
const scalarField& depFrequency() const
{
return fDep_;
}
//- Return the nucleation site density field [1/m^2]
const scalarField& nucSiteDensity() const
{
return N_;
}
//- Return the wall liquid fraction field [-]
const scalarField& wallLiquidFraction() const
{
return fLiquid_;
}
//- Return the quenching surface heat flux field [W/m^2]
const scalarField& quenching() const
{
return qq_;
}
//- Return the evaporative surface heat flux field [W/m^2]
const scalarField& evaporative() const
{
return qe_;
}
// Mapping functions // Mapping functions

View File

@ -0,0 +1,24 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
-------------------------------------------------------------------------------
Description
This function looks up wall boiling wall functions and collects and writes
out out fields of bubble departure diameter, bubble departure frequency,
nucleation site density, effective liquid fraction at the wall, quenching
heat flux, and evaporative heat flux.
\*---------------------------------------------------------------------------*/
type wallBoilingProperties;
libs ("libmultiphaseEulerFoamFunctionObjects.so");
phase <phaseName>;
writeControl writeTime;
// ************************************************************************* //

View File

@ -10,7 +10,7 @@ FoamFile
format ascii; format ascii;
class volScalarField; class volScalarField;
location "0"; location "0";
object omega.liquid; object omega.gas;
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -31,4 +31,16 @@ runApplication foamPostProcess -latestTime -func "
./validation/createGraphs ./validation/createGraphs
runApplication -append foamPostProcess -latestTime -func "
patchSurface
(
funcName=patchWallBoilingProperties,
patch=wall,
surfaceFormat=raw,
interpolate=false,
fields=(dDeparture.liquid fDeparture.liquid nucleationSiteDensity.liquid fLiquid.liquid quenchingHeatFlux.liquid evaporativeHeatFlux.liquid)
)"
./validation/createWallBoilingPropertiesGraphs
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View File

@ -0,0 +1,38 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object fvModels;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
phaseTurbulenceStabilisationGas
{
type phaseTurbulenceStabilisation;
libs ("libmultiphaseEulerFoamFvModels.so");
phase gas;
alphaInversion 0.1;
}
phaseTurbulenceStabilisationLiquid
{
type phaseTurbulenceStabilisation;
libs ("libmultiphaseEulerFoamFvModels.so");
phase liquid;
alphaInversion 0.1;
}

View File

@ -14,6 +14,15 @@ FoamFile
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType laminar; simulationType RAS;
RAS
{
model kOmegaSST;
turbulence on;
printCoeffs on;
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -19,4 +19,11 @@ laminar
model Fourier; model Fourier;
} }
RAS
{
model eddyDiffusivity;
Prt 1;
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -54,6 +54,13 @@ maxDeltaT 0.001;
functions functions
{ {
writeWallBoilingProperties
{
type wallBoilingProperties;
functionObjectLibs ( "libmultiphaseEulerFoamFunctionObjects.so" );
writeControl writeTime;
phase liquid;
}
outflow outflow
{ {
type surfaceFieldValue; type surfaceFieldValue;

View File

@ -79,7 +79,7 @@ relaxationFactors
equations equations
{ {
".*" 1; ".*" 1;
"h\..*" 1.0; "h\..*" 1;
} }
} }

View File

@ -0,0 +1,49 @@
#!/bin/sh
if ! which gnuplot > /dev/null 2>&1
then
echo 'gnuplot not found - skipping graph creation' >&2
exit 1
fi
graphFile=$(foamListTimes -latestTime)/patch.xy
gnuplot<<EOF
set terminal postscript eps size 8,9 color enhanced font "Helvetica,20"
set output "./validation/$(basename "$PWD")Properties.eps"
set multiplot layout 2,2
set decimalsign '.'
set grid
set key at graph 0.65,0.95
set ylabel 'Vertical coordinate (m)'
set yrange [0:4]
set xlabel 'Departure diameter (mm)'
plot \
"postProcessing/patchWallBoilingProperties/$graphFile" \
u (\$4*1000):1 w lp lt 1 t 'Simulation' \
set xlabel 'Departure frequency (Hz)'
plot \
"postProcessing/patchWallBoilingProperties/$graphFile" \
u 5:1 w lp lt 1 t 'Simulation' \
set xlabel 'Nucleation Site Density (1/m^2)'
plot \
"postProcessing/patchWallBoilingProperties/$graphFile" \
u 5:1 w lp lt 1 t 'Simulation' \
set xlabel 'Heat flux partitioning function, liquid (-)'
plot \
"postProcessing/patchWallBoilingProperties/$graphFile" \
u 7:1 w lp lt 1 t 'Simulation' \
set key at graph 0.99,0.95
unset multiplot
EOF
#------------------------------------------------------------------------------

View File

@ -16,7 +16,7 @@ FoamFile
dimensions [0 1 -1 0 0 0 0]; dimensions [0 1 -1 0 0 0 0];
internalField uniform (1.96244 0 0); internalField uniform (1.75175 0 0);
boundaryField boundaryField
{ {
@ -24,13 +24,13 @@ boundaryField
{ {
type mappedInternalValue; type mappedInternalValue;
interpolationScheme cell; interpolationScheme cell;
value uniform (1.96244 0 0); value uniform (1.75175 0 0);
} }
outlet outlet
{ {
type pressureInletOutletVelocity; type pressureInletOutletVelocity;
phi phi.gas; phi phi.gas;
value uniform (1.96244 0 0); value uniform (1.75175 0 0);
} }
wall wall
{ {

View File

@ -16,22 +16,22 @@ FoamFile
dimensions [0 1 -1 0 0 0 0]; dimensions [0 1 -1 0 0 0 0];
internalField uniform (1.743138395 0 0); internalField uniform (1.75175 0 0);
boundaryField boundaryField
{ {
inlet inlet
{ {
type mappedInternalValue; type mappedInternalValue;
average (1.743138395 0 0); average (1.75175 0 0);
interpolationScheme cell; interpolationScheme cell;
value uniform (1.743138395 0 0); value uniform (1.75175 0 0);
} }
outlet outlet
{ {
type pressureInletOutletVelocity; type pressureInletOutletVelocity;
phi phi.liquid; phi phi.liquid;
value uniform (1.743138395 0 0); value uniform (1.75175 0 0);
} }
wall wall
{ {

View File

@ -0,0 +1,55 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class volScalarField;
location "0";
object omega.liquid;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 -1 0 0 0 0];
internalField uniform 0.01;
boundaryField
{
inlet
{
type mappedInternalValue;
interpolationScheme cell;
value uniform 0.01;
}
outlet
{
type inletOutlet;
phi phi.liquid;
inletValue uniform 0.0015;
value uniform 0.01;
}
wall
{
type omegaWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0.001;
}
front
{
type wedge;
}
back
{
type wedge;
}
}
// ************************************************************************* //

View File

@ -31,4 +31,16 @@ runApplication foamPostProcess -latestTime -func "
./validation/createGraphs ./validation/createGraphs
runApplication -append foamPostProcess -latestTime -func "
patchSurface
(
funcName=patchWallBoilingProperties,
patch=wall,
surfaceFormat=raw,
interpolate=false,
fields=(dDeparture.liquid fDeparture.liquid nucleationSiteDensity.liquid fLiquid.liquid quenchingHeatFlux.liquid evaporativeHeatFlux.liquid)
)"
./validation/createWallBoilingPropertiesGraphs
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View File

@ -0,0 +1,38 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object fvModels;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
phaseTurbulenceStabilisationGas
{
type phaseTurbulenceStabilisation;
libs ("libmultiphaseEulerFoamFvModels.so");
phase gas;
alphaInversion 0.1;
}
phaseTurbulenceStabilisationLiquid
{
type phaseTurbulenceStabilisation;
libs ("libmultiphaseEulerFoamFvModels.so");
phase liquid;
alphaInversion 0.1;
}

View File

@ -14,6 +14,15 @@ FoamFile
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType laminar; simulationType RAS;
RAS
{
model kOmegaSST;
turbulence on;
printCoeffs on;
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -98,15 +98,12 @@ heatTransfer
{ {
gas_dispersedIn_liquid_inThe_gas gas_dispersedIn_liquid_inThe_gas
{ {
type constantNu; type spherical;
Nu 1e1;
residualAlpha 1e-4;
} }
gas_dispersedIn_liquid_inThe_liquid gas_dispersedIn_liquid_inThe_liquid
{ {
type RanzMarshall; type RanzMarshall;
residualAlpha 1e-4;
} }
} }
@ -139,7 +136,7 @@ lift
wallLubrication wallLubrication
{ {
gas_dispersedIn_liquid gas_dispersedIn_liquid
{ {
type Antal; type Antal;
Cw1 -0.01; Cw1 -0.01;
@ -203,7 +200,4 @@ surfaceTension
phaseTransfer phaseTransfer
{} {}
interfaceCompression
{}
// ************************************************************************* // // ************************************************************************* //

View File

@ -19,4 +19,11 @@ laminar
model Fourier; model Fourier;
} }
RAS
{
model eddyDiffusivity;
Prt 1;
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -54,6 +54,13 @@ maxDeltaT 0.001;
functions functions
{ {
writeWallBoilingProperties
{
type wallBoilingProperties;
functionObjectLibs ( "libmultiphaseEulerFoamFunctionObjects.so" );
writeControl writeTime;
phase liquid;
}
outflow outflow
{ {
type surfaceFieldValue; type surfaceFieldValue;

View File

@ -0,0 +1,49 @@
#!/bin/sh
if ! which gnuplot > /dev/null 2>&1
then
echo 'gnuplot not found - skipping graph creation' >&2
exit 1
fi
graphFile=$(foamListTimes -latestTime)/patch.xy
gnuplot<<EOF
set terminal postscript eps size 8,9 color enhanced font "Helvetica,20"
set output "./validation/$(basename "$PWD")Properties.eps"
set multiplot layout 2,2
set decimalsign '.'
set grid
set key at graph 0.65,0.95
set ylabel 'Vertical coordinate (m)'
set yrange [0:4]
set xlabel 'Departure diameter (mm)'
plot \
"postProcessing/patchWallBoilingProperties/$graphFile" \
u (\$4*1000):1 w lp lt 1 t 'Simulation' \
set xlabel 'Departure frequency (Hz)'
plot \
"postProcessing/patchWallBoilingProperties/$graphFile" \
u 5:1 w lp lt 1 t 'Simulation' \
set xlabel 'Nucleation Site Density (1/m^2)'
plot \
"postProcessing/patchWallBoilingProperties/$graphFile" \
u 5:1 w lp lt 1 t 'Simulation' \
set xlabel 'Heat flux partitioning function, liquid (-)'
plot \
"postProcessing/patchWallBoilingProperties/$graphFile" \
u 7:1 w lp lt 1 t 'Simulation' \
set key at graph 0.99,0.95
unset multiplot
EOF
#------------------------------------------------------------------------------

View File

@ -32,4 +32,16 @@ runApplication foamPostProcess -latestTime -func "
./validation/createGraphs ./validation/createGraphs
runApplication -append foamPostProcess -latestTime -func "
patchSurface
(
funcName=patchWallBoilingProperties,
patch=wall,
surfaceFormat=raw,
interpolate=false,
fields=(dDeparture.liquid fDeparture.liquid nucleationSiteDensity.liquid fLiquid.liquid quenchingHeatFlux.liquid evaporativeHeatFlux.liquid)
)"
./validation/createWallBoilingPropertiesGraphs
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View File

@ -0,0 +1,38 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object fvModels;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
phaseTurbulenceStabilisationGas
{
type phaseTurbulenceStabilisation;
libs ("libmultiphaseEulerFoamFvModels.so");
phase gas;
alphaInversion 0.1;
}
phaseTurbulenceStabilisationLiquid
{
type phaseTurbulenceStabilisation;
libs ("libmultiphaseEulerFoamFvModels.so");
phase liquid;
alphaInversion 0.1;
}

View File

@ -14,6 +14,15 @@ FoamFile
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType laminar; simulationType RAS;
RAS
{
model kOmegaSST;
turbulence on;
printCoeffs on;
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -246,7 +246,4 @@ surfaceTension
phaseTransfer phaseTransfer
{} {}
interfaceCompression
{}
// ************************************************************************* // // ************************************************************************* //

View File

@ -19,4 +19,11 @@ laminar
model Fourier; model Fourier;
} }
RAS
{
model eddyDiffusivity;
Prt 1;
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -54,6 +54,13 @@ maxDeltaT 0.001;
functions functions
{ {
writeWallBoilingProperties
{
type wallBoilingProperties;
functionObjectLibs ( "libmultiphaseEulerFoamFunctionObjects.so" );
writeControl writeTime;
phase liquid;
}
volumeDensity.diameter.bubbles volumeDensity.diameter.bubbles
{ {
type populationBalanceSizeDistribution; type populationBalanceSizeDistribution;

View File

@ -0,0 +1,49 @@
#!/bin/sh
if ! which gnuplot > /dev/null 2>&1
then
echo 'gnuplot not found - skipping graph creation' >&2
exit 1
fi
graphFile=$(foamListTimes -latestTime)/patch.xy
gnuplot<<EOF
set terminal postscript eps size 8,9 color enhanced font "Helvetica,20"
set output "./validation/$(basename "$PWD")Properties.eps"
set multiplot layout 2,2
set decimalsign '.'
set grid
set key at graph 0.65,0.95
set ylabel 'Vertical coordinate (m)'
set yrange [0:4]
set xlabel 'Departure diameter (mm)'
plot \
"postProcessing/patchWallBoilingProperties/$graphFile" \
u (\$4*1000):1 w lp lt 1 t 'Simulation' \
set xlabel 'Departure frequency (Hz)'
plot \
"postProcessing/patchWallBoilingProperties/$graphFile" \
u 5:1 w lp lt 1 t 'Simulation' \
set xlabel 'Nucleation Site Density (1/m^2)'
plot \
"postProcessing/patchWallBoilingProperties/$graphFile" \
u 5:1 w lp lt 1 t 'Simulation' \
set xlabel 'Heat flux partitioning function, liquid (-)'
plot \
"postProcessing/patchWallBoilingProperties/$graphFile" \
u 7:1 w lp lt 1 t 'Simulation' \
set key at graph 0.99,0.95
unset multiplot
EOF
#------------------------------------------------------------------------------

View File

@ -32,4 +32,16 @@ runApplication foamPostProcess -latestTime -func "
./validation/createGraphs ./validation/createGraphs
runApplication -append foamPostProcess -latestTime -func "
patchSurface
(
funcName=patchWallBoilingProperties,
patch=wall,
surfaceFormat=raw,
interpolate=false,
fields=(dDeparture.liquid fDeparture.liquid nucleationSiteDensity.liquid fLiquid.liquid quenchingHeatFlux.liquid evaporativeHeatFlux.liquid)
)"
./validation/createWallBoilingPropertiesGraphs
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View File

@ -0,0 +1,49 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object fvModels;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
phaseTurbulenceStabilisationGas
{
type phaseTurbulenceStabilisation;
libs ("libmultiphaseEulerFoamFvModels.so");
phase gas;
alphaInversion 0.1;
}
phaseTurbulenceStabilisationGas2
{
type phaseTurbulenceStabilisation;
libs ("libmultiphaseEulerFoamFvModels.so");
phase gas2;
alphaInversion 0.1;
}
phaseTurbulenceStabilisationLiquid
{
type phaseTurbulenceStabilisation;
libs ("libmultiphaseEulerFoamFvModels.so");
phase liquid;
alphaInversion 0.1;
}

View File

@ -14,6 +14,15 @@ FoamFile
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType laminar; simulationType RAS;
RAS
{
model kOmegaSST;
turbulence on;
printCoeffs on;
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -14,6 +14,14 @@ FoamFile
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType laminar; simulationType RAS;
RAS
{
model kOmegaSST;
turbulence on;
printCoeffs on;
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -192,13 +192,11 @@ heatTransfer
gas_dispersedIn_liquid_inThe_liquid gas_dispersedIn_liquid_inThe_liquid
{ {
type RanzMarshall; type RanzMarshall;
residualAlpha 1e-4;
} }
gas2_dispersedIn_liquid_inThe_liquid gas2_dispersedIn_liquid_inThe_liquid
{ {
type RanzMarshall; type RanzMarshall;
residualAlpha 1e-4;
} }
} }
@ -230,26 +228,7 @@ lift
gas2_dispersedIn_liquid gas2_dispersedIn_liquid
{ {
type wallDamped; $gas_dispersedIn_liquid
lift
{
type Tomiyama;
Cl 0.288;
aspectRatio
{
type constant;
E0 1;
}
}
wallDamping
{
type cosine;
Cd 1.0;
zeroWallDist 0.0002;
}
} }
} }
@ -264,9 +243,7 @@ wallLubrication
gas2_dispersedIn_liquid gas2_dispersedIn_liquid
{ {
type Antal; $gas_dispersedIn_liquid
Cw1 -0.01;
Cw2 0.05;
} }
} }
@ -322,24 +299,7 @@ saturation
gas2_liquid gas2_liquid
{ {
type function1; $gas_liquid
function scale;
xScale 1e-6;
scale 1;
value
{
type tableFile;
format csv;
nHeaderLine 1;
refColumn 1;
componentColumns (0);
mergeSeparators no;
file "$FOAM_TUTORIALS/resources/thermoData/wallBoiling-saturation.csv";
outOfBounds clamp;
interpolationScheme linear;
}
} }
} }
@ -353,8 +313,7 @@ surfaceTension
gas2_liquid gas2_liquid
{ {
type constant; $gas_liquid
sigma 0.00176574;
} }
} }

View File

@ -19,4 +19,11 @@ laminar
model Fourier; model Fourier;
} }
RAS
{
model eddyDiffusivity;
Prt 1;
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -19,4 +19,11 @@ laminar
model Fourier; model Fourier;
} }
RAS
{
model eddyDiffusivity;
Prt 1;
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -54,6 +54,13 @@ maxDeltaT 0.001;
functions functions
{ {
writeWallBoilingProperties
{
type wallBoilingProperties;
functionObjectLibs ( "libmultiphaseEulerFoamFunctionObjects.so" );
writeControl writeTime;
phase liquid;
}
volumeDensity.diameter.bubbles volumeDensity.diameter.bubbles
{ {
type populationBalanceSizeDistribution; type populationBalanceSizeDistribution;

View File

@ -0,0 +1,49 @@
#!/bin/sh
if ! which gnuplot > /dev/null 2>&1
then
echo 'gnuplot not found - skipping graph creation' >&2
exit 1
fi
graphFile=$(foamListTimes -latestTime)/patch.xy
gnuplot<<EOF
set terminal postscript eps size 8,9 color enhanced font "Helvetica,20"
set output "./validation/$(basename "$PWD")Properties.eps"
set multiplot layout 2,2
set decimalsign '.'
set grid
set key at graph 0.65,0.95
set ylabel 'Vertical coordinate (m)'
set yrange [0:4]
set xlabel 'Departure diameter (mm)'
plot \
"postProcessing/patchWallBoilingProperties/$graphFile" \
u (\$4*1000):1 w lp lt 1 t 'Simulation' \
set xlabel 'Departure frequency (Hz)'
plot \
"postProcessing/patchWallBoilingProperties/$graphFile" \
u 5:1 w lp lt 1 t 'Simulation' \
set xlabel 'Nucleation Site Density (1/m^2)'
plot \
"postProcessing/patchWallBoilingProperties/$graphFile" \
u 5:1 w lp lt 1 t 'Simulation' \
set xlabel 'Heat flux partitioning function, liquid (-)'
plot \
"postProcessing/patchWallBoilingProperties/$graphFile" \
u 7:1 w lp lt 1 t 'Simulation' \
set key at graph 0.99,0.95
unset multiplot
EOF
#------------------------------------------------------------------------------