Commit 66156998 authored by sergio's avatar sergio Committed by Andrew Heather
Browse files

ENH: BreenWestwater: new film boiling model

parent 17657673
......@@ -214,6 +214,7 @@ $(CHFSubCoolModels)/HuaXu/HuaXu.C
filmBoiling = $(wallBoilingSubModels)/filmBoilingModels
$(filmBoiling)/filmBoilingModel/filmBoilingModel.C
$(filmBoiling)/Bromley/Bromley.C
$(filmBoiling)/BreenWestwater/BreenWestwater.C
Leidenfrost = $(wallBoilingSubModels)/LeidenfrostModels
$(Leidenfrost)/LeidenfrostModel/LeidenfrostModel.C
......
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
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 <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "BreenWestwater.H"
#include "addToRunTimeSelectionTable.H"
#include "uniformDimensionedFields.H"
#include "phasePairKey.H"
#include "phaseSystem.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
namespace wallBoilingModels
{
namespace filmBoilingModels
{
defineTypeNameAndDebug(BreenWestwater, 0);
addToRunTimeSelectionTable
(
filmBoilingModel,
BreenWestwater,
dictionary
);
}
}
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::wallBoilingModels::filmBoilingModels::BreenWestwater::BreenWestwater
(
const dictionary& dict
)
:
filmBoilingModel(),
Cn_(dict.getOrDefault<scalar>("Cn", 0.37))
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
Foam::tmp<Foam::scalarField>
Foam::wallBoilingModels::filmBoilingModels::BreenWestwater::htcFilmBoil
(
const phaseModel& liquid,
const phaseModel& vapor,
const label patchi,
const scalarField& Tl,
const scalarField& Tsatw,
const scalarField& L
) const
{
const fvPatchScalarField& Tw =
liquid.thermo().T().boundaryField()[patchi];
const auto& g =
liquid.mesh().time().lookupObject<uniformDimensionedVectorField>("g");
const labelUList& cells = liquid.mesh().boundary()[patchi].faceCells();
const scalarField& pw = liquid.thermo().p().boundaryField()[patchi];
tmp<scalarField> trhoVapor = vapor.thermo().rhoEoS(Tsatw, pw, cells);
const scalarField& rhoVapor = trhoVapor.ref();
tmp<scalarField> trhoLiq = liquid.thermo().rhoEoS(Tsatw, pw, cells);
const scalarField& rhoLiq = trhoLiq.ref();
const scalarField kappaLiquid(liquid.kappa(patchi));
tmp<scalarField> tCp = vapor.thermo().CpThermo(Tsatw, pw, cells);
const scalarField& CpVapor = tCp();
const scalarField nuLiquid(liquid.nu(patchi));
const scalarField Leff
(
L*sqr(1 + 0.34*CpVapor*max((Tw-Tsatw), scalar(0))/L)
);
const scalarField rhoDiff(rhoLiq - rhoVapor);
const phasePairKey pair(liquid.name(), vapor.name());
const scalarField sigma
(
liquid.fluid().sigma(pair)().boundaryField()[patchi]
);
return
Cn_
/pow(sigma/mag(g.value())/rhoDiff, 1/8)
/pow
(
nuLiquid*max((Tw-Tsatw), scalar(1e-3))
/(pow3(kappaLiquid)*rhoVapor*Leff*mag(g.value())*rhoDiff)
, 0.25
);
}
void Foam::wallBoilingModels::filmBoilingModels::BreenWestwater::write
(
Ostream& os
) const
{
filmBoilingModel::write(os);
os.writeEntry("Cn", Cn_);
}
// ************************************************************************* //
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
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 <http://www.gnu.org/licenses/>.
Class
Foam::wallBoilingModels::filmBoilingModels::BreenWestwater
Description
Boiling film correlation.
A correlation for boiling film modelling
based on Breen & Westwater (1965) for boiling flows.
References:
\verbatim
Breen B.P. & Westwater J. W. (1965)
Effect of diameter of horizontal
tubes on film boiling heat tranfer.
Chem. Eng. Progr. 58. No 7.
\endverbatim
Usage
Example of the model specification:
\verbatim
filmBoilingModel
{
// Mandatory entries
type BreenWestwater;
// Optional entries
Cn <scalar>;
an <scalar>;
bn <scalar>;
n <scalar>;
}
\endverbatim
where the entries mean:
\table
Property | Description | Type | Reqd | Deflt
type | Type name: BreenWestwater | word | yes | -
Cn | Model coefficient | scalar | no | 0.37
\endtable
SourceFiles
BreenWestwater.C
\*---------------------------------------------------------------------------*/
#ifndef BreenWestwater_H
#define BreenWestwater_H
#include "filmBoilingModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace wallBoilingModels
{
namespace filmBoilingModels
{
/*---------------------------------------------------------------------------*\
Class BreenWestwater Declaration
\*---------------------------------------------------------------------------*/
class BreenWestwater
:
public filmBoilingModel
{
// Private Data
//- Model coefficient
scalar Cn_;
// Private Member Functions
//- No copy construct
BreenWestwater(const BreenWestwater&) = delete;
//- No copy assignment
void operator=(const BreenWestwater&) = delete;
public:
//- Runtime type information
TypeName("BreenWestwater");
// Constructors
//- Construct from a dictionary
BreenWestwater(const dictionary& dict);
//- Destructor
virtual ~BreenWestwater() = default;
// Member Functions
//- Calculate and return the nucleation-site density
virtual tmp<scalarField> htcFilmBoil
(
const phaseModel& liquid,
const phaseModel& vapor,
const label patchi,
const scalarField& Tl,
const scalarField& Tsatw,
const scalarField& L
) const;
//- Write
virtual void write(Ostream& os) const;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace filmBoilingModels
} // End namespace wallBoilingModels
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment