From c51fc0175e8bdbb04096a33cc5bb26f30b18c4b4 Mon Sep 17 00:00:00 2001 From: sergio Date: Fri, 10 Dec 2021 10:01:27 +0000 Subject: [PATCH] ENH: exponential: new nucleate flux model --- .../reactingEuler/multiphaseSystem/Make/files | 1 + .../exponential/exponential.C | 97 +++++++++++ .../exponential/exponential.H | 158 ++++++++++++++++++ 3 files changed, 256 insertions(+) create mode 100644 src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/wallBoilingSubModels/nucleateFluxModels/exponential/exponential.C create mode 100644 src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/wallBoilingSubModels/nucleateFluxModels/exponential/exponential.H diff --git a/src/phaseSystemModels/reactingEuler/multiphaseSystem/Make/files b/src/phaseSystemModels/reactingEuler/multiphaseSystem/Make/files index ecb7b82c86..65b60d9c1e 100644 --- a/src/phaseSystemModels/reactingEuler/multiphaseSystem/Make/files +++ b/src/phaseSystemModels/reactingEuler/multiphaseSystem/Make/files @@ -231,6 +231,7 @@ $(TDNBModels)/Schroeder/Schroeder.C nucleateFluxModels = $(wallBoilingSubModels)/nucleateFluxModels $(nucleateFluxModels)/nucleateFluxModel/nucleateFluxModel.C $(nucleateFluxModels)/Kutadeladze/Kutadeladze.C +$(nucleateFluxModels)/exponential/exponential.C /* Turbulence */ turbulence/multiphaseCompressibleTurbulenceModels.C diff --git a/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/wallBoilingSubModels/nucleateFluxModels/exponential/exponential.C b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/wallBoilingSubModels/nucleateFluxModels/exponential/exponential.C new file mode 100644 index 0000000000..5ebf314228 --- /dev/null +++ b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/wallBoilingSubModels/nucleateFluxModels/exponential/exponential.C @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / 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 . + +\*---------------------------------------------------------------------------*/ + +#include "exponential.H" +#include "addToRunTimeSelectionTable.H" +#include "uniformDimensionedFields.H" +#include "phasePairKey.H" +#include "phaseSystem.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace wallBoilingModels +{ +namespace nucleateFluxModels +{ + defineTypeNameAndDebug(exponential, 0); + addToRunTimeSelectionTable + ( + nucleateFluxModel, + exponential, + dictionary + ); +} +} +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::wallBoilingModels::nucleateFluxModels::exponential::exponential +( + const dictionary& dict +) +: + nucleateFluxModel(), + a_(dict.getOrDefault("a", 6309)), + b_(dict.getOrDefault("b", 2.52)) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp +Foam::wallBoilingModels::nucleateFluxModels::exponential::qNucleate +( + 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]; + + return a_*pow(max((Tw-Tsatw), scalar(0)), b_); +} + + +void Foam::wallBoilingModels::nucleateFluxModels::exponential::write +( + Ostream& os +) const +{ + nucleateFluxModel::write(os); + os.writeEntry("a", a_); + os.writeEntry("b", b_); +} + + +// ************************************************************************* // diff --git a/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/wallBoilingSubModels/nucleateFluxModels/exponential/exponential.H b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/wallBoilingSubModels/nucleateFluxModels/exponential/exponential.H new file mode 100644 index 0000000000..18cec658b3 --- /dev/null +++ b/src/phaseSystemModels/reactingEuler/multiphaseSystem/derivedFvPatchFields/wallBoilingSubModels/nucleateFluxModels/exponential/exponential.H @@ -0,0 +1,158 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / 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 . + +Class + Foam::wallBoilingModels::nucleateFluxModels::exponential + +Description + Nucleate flux sub-cooling correlation + + References: + \verbatim + Frost W. & Dzakowic G. S. (1967) + An extension of the methods of predicting incipient + boiling on commercially finished surfaces. + ASME AIChE Heat Transfer Conf 67-HT-61, Seattle. + + Shirai, Y., Tatsumoto, H., Shiotsu, M., Hata, K., + Kobayashi, H., Naruo, Y., & Inatani, Y. (2010). + Boiling heat transfer from a horizontal flat + plate in a pool of liquid hydrogen. + Cryogenics, 50(6-7), 410-416. + DOI:10.1016/j.cryogenics.2010.04.001 + \endverbatim + +Usage + Example of the model specification: + \verbatim + nucleateFluxModel + { + // Mandatory entries + type exponential; + + // Optional entries + a ; + b ; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Reqd | Deflt + type | Type name: exponential | word | yes | - + a | Pre-factor coefficient | scalar | no | 6309 + b | Exponent coefficient | scalar | no | 2.52 + \endtable + +SourceFiles + exponential.C + +\*---------------------------------------------------------------------------*/ + +#ifndef exponential_H +#define exponential_H + +#include "nucleateFluxModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace wallBoilingModels +{ +namespace nucleateFluxModels +{ + +/*---------------------------------------------------------------------------*\ + Class exponential Declaration +\*---------------------------------------------------------------------------*/ + +class exponential +: + public nucleateFluxModel +{ + // Private Data + + //- Pre-factor coefficient + scalar a_; + + //- Exponent coefficient + scalar b_; + + + // Private Member Functions + + //- No copy construct + exponential(const exponential&) = delete; + + //- No copy assignment + void operator=(const exponential&) = delete; + + +public: + + //- Runtime type information + TypeName("exponential"); + + + // Constructors + + //- Construct from a dictionary + exponential(const dictionary& dict); + + + //- Destructor + virtual ~exponential() = default; + + + // Member Functions + + //- Calculate and return the nucleation-site density + virtual tmp qNucleate + ( + 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 nucleateFluxModels +} // End namespace wallBoilingModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* //