diff --git a/src/functionObjects/field/Make/files b/src/functionObjects/field/Make/files index bc8fe9634f..da6a530727 100644 --- a/src/functionObjects/field/Make/files +++ b/src/functionObjects/field/Make/files @@ -32,6 +32,7 @@ heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoe heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModelNew.C heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.C heatTransferCoeff/heatTransferCoeffModels/localReferenceTemperature/localReferenceTemperature.C +heatTransferCoeff/heatTransferCoeffModels/faceZoneReferenceTemperature/faceZoneReferenceTemperature.C heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.C heatTransferCoeff/reactingEulerHtcModel/reactingEulerHtcModel.C heatTransferCoeff/multiphaseInterHtcModel/multiphaseInterHtcModel.C diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.C index 16e0e78e85..dbc80d2ec7 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.C +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2017-2020 OpenCFD Ltd. + Copyright (C) 2017-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -26,7 +26,6 @@ License \*---------------------------------------------------------------------------*/ #include "heatTransferCoeff.H" -#include "dictionary.H" #include "heatTransferCoeffModel.H" #include "addToRunTimeSelectionTable.H" @@ -41,7 +40,8 @@ namespace functionObjects } } -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // bool Foam::functionObjects::heatTransferCoeff::calc() { @@ -67,7 +67,7 @@ Foam::functionObjects::heatTransferCoeff::heatTransferCoeff fieldExpression(name, runTime, dict), L_(1), kappa_(1), - htcModelPtr_(nullptr) + htcModelPtr_(heatTransferCoeffModel::New(dict, mesh_, fieldName_)) { read(dict); @@ -96,7 +96,7 @@ Foam::functionObjects::heatTransferCoeff::heatTransferCoeff bool Foam::functionObjects::heatTransferCoeff::read(const dictionary& dict) { - if (!fieldExpression::read(dict)) + if (!fieldExpression::read(dict) || !htcModelPtr_->read(dict)) { return false; } @@ -104,9 +104,6 @@ bool Foam::functionObjects::heatTransferCoeff::read(const dictionary& dict) L_ = dict.getCheckOrDefault("L", 1, scalarMinMax::ge(0)); kappa_ = dict.getCheckOrDefault("kappa", 1, scalarMinMax::ge(SMALL)); - htcModelPtr_ = heatTransferCoeffModel::New(dict, mesh_, fieldName_); - - htcModelPtr_->read(dict); return true; } diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.H b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.H index 5df94c31a9..cc27400762 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.H +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2017-2020 OpenCFD Ltd. + Copyright (C) 2017-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -30,9 +30,13 @@ Group grpFieldFunctionObjects Description - Computes the heat transfer coefficient [W/(m2 K)] + Computes the heat transfer coefficient [W/(m^2 K)] as a \c volScalarField for a given set of patches. + The heat transfer coefficient is definition dependent; + therefore, different coefficient values could be + obtained based on different definitions. + Optionally, the Nusselt number (i.e. the ratio of convective to conductive heat transfer at a boundary in a fluid) can be output: @@ -43,7 +47,7 @@ Description where \vartable Nu | Nusselt number - h | Convective heat transfer coefficient of the flow + h | Heat transfer coefficient L | Characteristic length that defines the scale of the physical system \kappa | Thermal conductivity of the fluid \endvartable @@ -53,7 +57,7 @@ Description Operand | Type | Location input | - | - output file | - | - - output field | volScalarField | $FOAM_CASE/\/\ + output field | volScalarField | \/\ \endtable Usage @@ -61,39 +65,37 @@ Usage \verbatim heatTransferCoeff1 { - // Mandatory entries (unmodifiable) + // Mandatory entries type heatTransferCoeff; libs (fieldFunctionObjects); - // Mandatory (inherited) entries (runtime modifiable) - field ; - patches ( ... ); - htcModel ; + field ; + patches (); + htcModel ; - // Optional entries (runtime modifable) - qr ; - L 1.0; - kappa 1.0; + // Optional entries + qr ; + L ; + kappa ; - // Conditional mandatory and optional - // entries based on selected (runtime modifiable) + // Conditional entries based on selected ... - // Optional (inherited) entries + // Inherited entries ... } \endverbatim where the entries mean: \table - Property | Description | Type | Reqd | Dflt + Property | Description | Type | Reqd | Deflt type | Type name: heatTransferCoeff | word | yes | - libs | Library name: fieldFunctionObjects | word | yes | - - field | Name of the operand field | word | yes | - + field | Name of operand field | word | yes | - patches | Names of operand patches | wordRes | yes | - htcModel | Heat transfer coefficient model - see below | word | yes | - - qr | Name of radiative heat flux | word | no | qr + qr | Name of radiative heat flux field | word | no | qr L | Characteristic length that defines the scale of the physical system | scalar | no | 1 kappa | Thermal conductivity of fluid | scalar | no | 1 @@ -108,19 +110,10 @@ Usage \verbatim ReynoldsAnalogy | Reynold's analogy localReferenceTemperature | Local reference temperature - fixedReferenceTemperature | Specified reference temperature + fixedReferenceTemperature | Fixed reference temperature + faceZoneReferenceTemperature | Face-zone reference temperature \endverbatim - Usage by the \c postProcess utility is not available. - -See also - - Foam::functionObject - - Foam::functionObjects::fieldExpression - - Foam::heatTransferCoeffModels::fixedReferenceTemperature - - Foam::heatTransferCoeffModels::localReferenceTemperature - - Foam::heatTransferCoeffModels::ReynoldsAnalogy - - ExtendedCodeGuide::functionObjects::field::heatTransferCoeff - SourceFiles heatTransferCoeff.C @@ -177,11 +170,7 @@ public: // Constructors - //- No default construct - heatTransferCoeff() = delete; - - //- Construct for given objectRegistry and dictionary. - // Allow the possibility to load fields from files + //- Construct from Time and dictionary heatTransferCoeff ( const word& name, @@ -202,7 +191,7 @@ public: // Member Functions - //- Read the heatTransferCoeff data + //- Read the top-level dictionary virtual bool read(const dictionary& dict); }; diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.C index 1f866fd812..237cff487f 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.C +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2017-2020 OpenCFD Ltd. + Copyright (C) 2017-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -50,13 +50,13 @@ namespace heatTransferCoeffModels // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // -Foam::tmp> +Foam::tmp Foam::heatTransferCoeffModels::ReynoldsAnalogy::rho(const label patchi) const { if (rhoName_ == "rhoInf") { const label n = mesh_.boundary()[patchi].size(); - return tmp>::New(n, rhoRef_); + return tmp::New(n, rhoRef_); } else if (mesh_.foundObject(rhoName_, false)) { @@ -72,13 +72,13 @@ Foam::heatTransferCoeffModels::ReynoldsAnalogy::rho(const label patchi) const } -Foam::tmp> +Foam::tmp Foam::heatTransferCoeffModels::ReynoldsAnalogy::Cp(const label patchi) const { if (CpName_ == "CpInf") { const label n = mesh_.boundary()[patchi].size(); - return tmp>::New(n, CpRef_); + return tmp::New(n, CpRef_); } else if (mesh_.foundObject(fluidThermo::dictName)) { @@ -114,7 +114,7 @@ Foam::heatTransferCoeffModels::ReynoldsAnalogy::devReff() const } else if (mesh_.foundObject(icoTurbModel::propertiesName)) { - const incompressible::turbulenceModel& turb = + const auto& turb = mesh_.lookupObject(icoTurbModel::propertiesName); return turb.devReff(); @@ -180,17 +180,38 @@ Foam::heatTransferCoeffModels::ReynoldsAnalogy::Cf() const const symmTensorField& Rp = Rbf[patchi]; - const vectorField nHat(Up.patch().nf()); + tmp tnHat = Up.patch().nf(); - const scalarField tauByRhop(mag(nHat & Rp)); + tmp ttauByRhop = mag(tnHat & Rp); - Cf[patchi] = 2*tauByRhop/magSqr(URef_); + Cf[patchi] = 2*ttauByRhop/magSqr(URef_); } return tCf; } +void Foam::heatTransferCoeffModels::ReynoldsAnalogy::htc +( + volScalarField& htc, + const FieldField& q +) +{ + const FieldField CfBf(Cf()); + const scalar magU = mag(URef_); + + volScalarField::Boundary& htcBf = htc.boundaryFieldRef(); + + for (const label patchi : patchSet_) + { + tmp trhop = rho(patchi); + tmp tCpp = Cp(patchi); + + htcBf[patchi] = 0.5*trhop*tCpp*magU*CfBf[patchi]; + } +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::heatTransferCoeffModels::ReynoldsAnalogy::ReynoldsAnalogy @@ -219,47 +240,27 @@ bool Foam::heatTransferCoeffModels::ReynoldsAnalogy::read const dictionary& dict ) { - if (heatTransferCoeffModel::read(dict)) + if (!heatTransferCoeffModel::read(dict)) { - dict.readEntry("UInf", URef_); - - dict.readIfPresent("Cp", CpName_); - if (CpName_ == "CpInf") - { - dict.readEntry("CpInf", CpRef_); - } - - dict.readIfPresent("rho", rhoName_); - if (rhoName_ == "rhoInf") - { - dict.readEntry("rhoInf", rhoRef_); - } - - return true; + return false; } - return false; -} + dict.readIfPresent("U", UName_); + dict.readEntry("UInf", URef_); - -void Foam::heatTransferCoeffModels::ReynoldsAnalogy::htc -( - volScalarField& htc, - const FieldField& q -) -{ - const FieldField CfBf(Cf()); - const scalar magU = mag(URef_); - - volScalarField::Boundary& htcBf = htc.boundaryFieldRef(); - - for (const label patchi : patchSet_) + dict.readIfPresent("Cp", CpName_); + if (CpName_ == "CpInf") { - const scalarField rhop(rho(patchi)); - const scalarField Cpp(Cp(patchi)); - - htcBf[patchi] = 0.5*rhop*Cpp*magU*CfBf[patchi]; + dict.readEntry("CpInf", CpRef_); } + + dict.readIfPresent("rho", rhoName_); + if (rhoName_ == "rhoInf") + { + dict.readEntry("rhoInf", rhoRef_); + } + + return true; } diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.H b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.H index 9d2be94d2c..a22210c4aa 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.H +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2017-2020 OpenCFD Ltd. + Copyright (C) 2017-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -34,23 +34,23 @@ Description from the skin friction coefficient: \f[ - C_f = \frac{\tau_w}{0.5 \rho_\infty |U|^2} + C_f = \frac{\tau_w}{0.5 \rho_{ref} |U|^2} \f] as: \f[ - h = 0.5 \rho_\infty c_{p,\infty} |U_{\infty}| C_f + h = 0.5 \rho_{ref} c_{p,ref} |U_{ref}| C_f \f] where \vartable - h | Convective heat transfer coefficient of the flow - \rho_\infty | Reference fluid density - c_{p,\infty} | Reference specific heat capacity at constant pressure - U_{\infty} | Reference velocity - C_f | Skin friction coefficient - \tau_w | Wall shear stress + h | Heat transfer coefficient [W/m^2/K] + \rho_{ref} | Reference fluid density [kg/m^3] + c_{p,ref} | Reference specific heat capacity at constant pressure [J/kg/K] + U_{ref} | Reference velocity [m/s] + C_f | Skin friction coefficient [-] + \tau_w | Wall shear stress [m^2/s^2] \endvartable Usage @@ -58,44 +58,43 @@ Usage \verbatim heatTransferCoeff1 { - // Mandatory and other optional entries + // Inherited entries ... + + // Mandatory entries htcModel ReynoldsAnalogy; + UInf ; - // Conditional mandatory entries (runtime modifiable) - UInf (10 0 0); + // Optional entries + U ; + Cp ; + rho ; - // Conditional optional entries (runtime modifiable) - Cp ; - rho ; + // Conditional mandatory entries - // mandatory if Cp == CpInf - CpInf 1005; + // when Cp == CpInf + CpInf ; - // mandatory if rho == rhoInf - rhoInf 1; + // when rho == rhoInf + rhoInf ; } \endverbatim where the entries mean: \table - Property | Description | Type | Reqd | Dflt - type | Model name: ReynoldsAnalogy | word | yes | - - UInf | Reference velocity | scalar | yes | - + Property | Description | Type | Reqd | Deflt + type | Model name: ReynoldsAnalogy | word | yes | - + UInf | Reference velocity | vector | yes | - + U | Name of velocity field | word | no | U Cp | Name of reference specific heat capacity | word | no | Cp - CpInf | Reference specific heat capacity value | scalar | cndtnl | - - rho | Name of reference fluid density | word | no | rho - rhoInf | Reference fluid density value | scalar | cndtnl | - + CpInf | Reference specific heat capacity value | scalar | choice | - + rho | Name of fluid density field | word | no | rho + rhoInf | Reference fluid density value | scalar | choice | - \endtable Note - - to use a reference \c Cp, set \c Cp to \c CpInf - - to use a reference \c rho, set \c rho to \c rhoInf - -See also - - Foam::heatTransferCoeffModel - - Foam::heatTransferCoeffModels::fixedReferenceTemperature - - Foam::heatTransferCoeffModels::localReferenceTemperature + - In order to use a reference \c Cp, set \c Cp to \c CpInf. + - In order to use a reference \c rho, set \c rho to \c rhoInf. SourceFiles ReynoldsAnalogy.C @@ -115,7 +114,7 @@ namespace heatTransferCoeffModels { /*---------------------------------------------------------------------------*\ - Class ReynoldsAnalogy Declaration + Class ReynoldsAnalogy Declaration \*---------------------------------------------------------------------------*/ class ReynoldsAnalogy @@ -132,10 +131,10 @@ protected: //- Reference velocity vector URef_; - //- Name of density field + //- Name of fluid density field word rhoName_; - //- Reference density + //- Reference fluid density scalar rhoRef_; //- Name of specific heat capacity field @@ -147,12 +146,16 @@ protected: // Protected Member Functions - virtual tmp> rho(const label patchi) const; + //- Return fluid density field [kg/m^3] + virtual tmp rho(const label patchi) const; - virtual tmp> Cp(const label patchi) const; + //- Return heat capacity at constant pressure [J/kg/K] + virtual tmp Cp(const label patchi) const; + //- Return the effective stress tensor including the laminar stress virtual tmp devReff() const; + //- Return skin friction coefficient field [-] tmp> Cf() const; //- Set the heat transfer coefficient diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/faceZoneReferenceTemperature/faceZoneReferenceTemperature.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/faceZoneReferenceTemperature/faceZoneReferenceTemperature.C new file mode 100644 index 0000000000..4cd8854a94 --- /dev/null +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/faceZoneReferenceTemperature/faceZoneReferenceTemperature.C @@ -0,0 +1,234 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | www.openfoam.com + \\/ M anipulation | +------------------------------------------------------------------------------- + Copyright (C) 2022 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 "faceZoneReferenceTemperature.H" +#include "surfaceInterpolate.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace heatTransferCoeffModels +{ + defineTypeNameAndDebug(faceZoneReferenceTemperature, 0); + addToRunTimeSelectionTable + ( + heatTransferCoeffModel, + faceZoneReferenceTemperature, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +void Foam::heatTransferCoeffModels::faceZoneReferenceTemperature:: +setFaceZoneFaces(const dictionary& dict) +{ + const auto& mesh = + mesh_.objectRegistry::db().lookupObject(refRegionName_); + + const word faceZoneName(dict.get("referenceFaceZone")); + + faceZonei_ = mesh.faceZones().findZoneID(faceZoneName); + + if (faceZonei_ < 0) + { + FatalIOErrorInFunction(dict) + << "referenceFaceZone: " << faceZoneName + << " does not exist in referenceRegion: " << refRegionName_ + << exit(FatalIOError); + } + + const faceZone& fZone = mesh.faceZones()[faceZonei_]; + + label numFaces = fZone.size(); + + if (!returnReduce(bool(numFaces), orOp())) + { + FatalIOErrorInFunction(dict) + << "referenceFaceZone: " << faceZoneName + << " contains no faces." + << exit(FatalIOError); + } + + faceId_.resize(numFaces); + facePatchId_.resize(numFaces); + + numFaces = 0; + + forAll(fZone, i) + { + const label meshFacei = fZone[i]; + + // Internal faces + label faceId = meshFacei; + label facePatchId = -1; + + // Boundary faces + if (!mesh.isInternalFace(meshFacei)) + { + facePatchId = mesh.boundaryMesh().whichPatch(meshFacei); + const polyPatch& pp = mesh.boundaryMesh()[facePatchId]; + const auto* cpp = isA(pp); + + if (cpp) + { + faceId = (cpp->owner() ? pp.whichFace(meshFacei) : -1); + } + else if (!isA(pp)) + { + faceId = pp.whichFace(meshFacei); + } + else + { + faceId = -1; + facePatchId = -1; + } + } + + if (faceId >= 0) + { + faceId_[numFaces] = faceId; + facePatchId_[numFaces] = facePatchId; + + ++numFaces; + } + } +} + + +Foam::scalar Foam::heatTransferCoeffModels::faceZoneReferenceTemperature:: +faceZoneAverageTemperature() +{ + const auto& mesh = + mesh_.objectRegistry::db().lookupObject(refRegionName_); + + const auto& T = mesh.lookupObject(TName_); + const surfaceScalarField Tf(fvc::interpolate(T)); + + const surfaceScalarField& magSf = mesh.magSf(); + + scalar Tmean = 0; + scalar sumMagSf = 0; + + forAll(faceId_, i) + { + const label facei = faceId_[i]; + if (facePatchId_[i] != -1) + { + const label patchi = facePatchId_[i]; + const scalar sf = magSf.boundaryField()[patchi][facei]; + + Tmean += Tf.boundaryField()[patchi][facei]*sf; + sumMagSf += sf; + } + else + { + const scalar sf = magSf[facei]; + Tmean += Tf[facei]*sf; + sumMagSf += sf; + } + } + reduce(Tmean, sumOp()); + reduce(sumMagSf, sumOp()); + + Tmean /= sumMagSf; + + return Tmean; +} + + +void Foam::heatTransferCoeffModels::faceZoneReferenceTemperature::htc +( + volScalarField& htc, + const FieldField& q +) +{ + // Retrieve temperature boundary fields for current region + const auto& T = mesh_.lookupObject(TName_); + const volScalarField::Boundary& Tbf = T.boundaryField(); + + // Retrieve heat-transfer coefficient boundary fields for current region + volScalarField::Boundary& htcBf = htc.boundaryFieldRef(); + + // Calculate area-averaged temperature field + // for the reference face zone and region + // (reference region can be different from current region) + const scalar Tref = faceZoneAverageTemperature(); + + // Calculate heat-transfer coefficient boundary fields for current region + for (const label patchi : patchSet_) + { + htcBf[patchi] = q[patchi]/(Tref - Tbf[patchi] + ROOTVSMALL); + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::heatTransferCoeffModels::faceZoneReferenceTemperature:: +faceZoneReferenceTemperature +( + const dictionary& dict, + const fvMesh& mesh, + const word& TName +) +: + heatTransferCoeffModel(dict, mesh, TName), + faceZonei_(-1), + refRegionName_(polyMesh::defaultRegion), + faceId_(), + facePatchId_() +{ + read(dict); +} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +bool Foam::heatTransferCoeffModels::faceZoneReferenceTemperature::read +( + const dictionary& dict +) +{ + if (!heatTransferCoeffModel::read(dict)) + { + return false; + } + + dict.readIfPresent("referenceRegion", refRegionName_); + + setFaceZoneFaces(dict); + + return true; +} + + +// ************************************************************************* // diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/faceZoneReferenceTemperature/faceZoneReferenceTemperature.H b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/faceZoneReferenceTemperature/faceZoneReferenceTemperature.H new file mode 100644 index 0000000000..617b0dfc0e --- /dev/null +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/faceZoneReferenceTemperature/faceZoneReferenceTemperature.H @@ -0,0 +1,172 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | www.openfoam.com + \\/ M anipulation | +------------------------------------------------------------------------------- + Copyright (C) 2022 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::heatTransferCoeffModels::faceZoneReferenceTemperature + +Description + Heat transfer coefficient calculation that employs the area-average + temperature of a specified face zone as the reference temperature. + + The heat transfer coefficient is calculated by: + + \f[ + h = \frac{q}{T_{ref} - T_p} + \f] + + where + \vartable + h | Heat transfer coefficient [W/m^2/K] + q | Heat flux [W/m^2] + T_{ref} | Area average of reference face zone temperature [K] + T_p | Temperature field of current patch [K] + \endvartable + +Usage + Minimal example by using \c system/controlDict.functions: + \verbatim + heatTransferCoeff1 + { + // Inherited entries + ... + + // Mandatory entries + htcModel faceZoneReferenceTemperature; + referenceFaceZone ; + + // Optional entries + referenceRegion ; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Reqd | Deflt + htcModel | Model name: faceZoneReferenceTemperature | word | yes | - + referenceFaceZone | Name of reference face zone | word | yes | - + referenceRegion | Name of region that reference face zone resides | word | no | region0 + \endtable + +SourceFiles + faceZoneReferenceTemperature.C + +\*---------------------------------------------------------------------------*/ + +#ifndef heatTransferCoeffModels_faceZoneReferenceTemperature_H +#define heatTransferCoeffModels_faceZoneReferenceTemperature_H + +#include "heatTransferCoeffModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace heatTransferCoeffModels +{ + +/*---------------------------------------------------------------------------*\ + Class faceZoneReferenceTemperature Declaration +\*---------------------------------------------------------------------------*/ + +class faceZoneReferenceTemperature +: + public heatTransferCoeffModel +{ + // Private Data + + //- Patch index of reference face zone + label faceZonei_; + + //- Name of region that the reference face zone resides + word refRegionName_; + + //- Local list of face IDs + labelList faceId_; + + //- Local list of patch ID per face + labelList facePatchId_; + + + // Private Member Functions + + //- Set faces to evaluate based on a face zone + void setFaceZoneFaces(const dictionary& dict); + + //- Return area average of face-zone temperature field + scalar faceZoneAverageTemperature(); + + //- Set the heat transfer coefficient + virtual void htc + ( + volScalarField& htc, + const FieldField& q + ); + + +public: + + //- Runtime type information + TypeName("faceZoneReferenceTemperature"); + + + // Constructors + + //- Construct from components + faceZoneReferenceTemperature + ( + const dictionary& dict, + const fvMesh& mesh, + const word& TName + ); + + //- No copy construct + faceZoneReferenceTemperature(const faceZoneReferenceTemperature&) = delete; + + //- No copy assignment + void operator=(const faceZoneReferenceTemperature&) = delete; + + + //- Destructor + virtual ~faceZoneReferenceTemperature() = default; + + + // Member Functions + + //- Read from dictionary + virtual bool read(const dictionary& dict); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace heatTransferCoeffModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.C index 4c069e552c..f37ce5b5ff 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.C +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2017-2020 OpenCFD Ltd. + Copyright (C) 2017-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -44,6 +44,27 @@ namespace heatTransferCoeffModels } } + +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +void Foam::heatTransferCoeffModels::fixedReferenceTemperature::htc +( + volScalarField& htc, + const FieldField& q +) +{ + const auto& T = mesh_.lookupObject(TName_); + const volScalarField::Boundary& Tbf = T.boundaryField(); + const scalar eps = ROOTVSMALL; + + volScalarField::Boundary& htcBf = htc.boundaryFieldRef(); + for (const label patchi : patchSet_) + { + htcBf[patchi] = q[patchi]/(TRef_ - Tbf[patchi] + eps); + } +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::heatTransferCoeffModels::fixedReferenceTemperature:: @@ -68,32 +89,14 @@ bool Foam::heatTransferCoeffModels::fixedReferenceTemperature::read const dictionary& dict ) { - if (heatTransferCoeffModel::read(dict)) + if (!heatTransferCoeffModel::read(dict)) { - dict.readEntry("TRef", TRef_); - - return true; + return false; } - return false; -} + dict.readEntry("TRef", TRef_); - -void Foam::heatTransferCoeffModels::fixedReferenceTemperature::htc -( - volScalarField& htc, - const FieldField& q -) -{ - const auto& T = mesh_.lookupObject(TName_); - const volScalarField::Boundary& Tbf = T.boundaryField(); - const scalar eps = ROOTVSMALL; - - volScalarField::Boundary& htcBf = htc.boundaryFieldRef(); - for (const label patchi : patchSet_) - { - htcBf[patchi] = q[patchi]/(TRef_ - Tbf[patchi] + eps); - } + return true; } diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.H b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.H index 7d095e35dc..2df573e0aa 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.H +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2017-2020 OpenCFD Ltd. + Copyright (C) 2017-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -30,18 +30,18 @@ Description Heat transfer coefficient calculation that employs a fixed reference temperature. - The heat transfer coefficient is specified by: + The heat transfer coefficient is calculated by: \f[ - h = \frac{q}{T_{ref} - T_w} + h = \frac{q}{T_{ref} - T_p} \f] where \vartable - h | Convective heat transfer coefficient of the flow [W/(m2 K)] - q | Heat flux [W/m2] - T_{ref} | Reference temperature of surrounding fluid [K] - T_w | Patch temperature [K] + h | Heat transfer coefficient [W/m^2/K] + q | Heat flux [W/m^2] + T_{ref} | User-specified reference temperature [K] + T_p | Patch temperature field [K] \endvartable Usage @@ -49,27 +49,22 @@ Usage \verbatim heatTransferCoeff1 { - // Mandatory and other optional entries + // Inherited entries ... - htcModel fixedReferenceTemperature; - // Conditional mandatory entries (runtime modifiable) - Tref 0; + // Mandatory entries + htcModel fixedReferenceTemperature; + Tref ; } \endverbatim where the entries mean: \table - Property | Description | Type | Reqd | Dflt + Property | Description | Type | Reqd | Deflt type | Model name: fixedReferenceTemperature | word | yes | - - Tref | Reference temperature of surrounding fluid | scalar | yes | - + Tref | User-specied reference temperature | scalar | yes | - \endtable -See also - - Foam::heatTransferCoeffModel - - Foam::heatTransferCoeffModels::localReferenceTemperature - - Foam::heatTransferCoeffModels::ReynoldsAnalogy - SourceFiles fixedReferenceTemperature.C @@ -99,7 +94,7 @@ protected: // Protected Data - //- Reference temperature + //- Reference temperature [K] scalar TRef_; diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.C index 92e5965493..b5d342465c 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.C +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.C @@ -40,7 +40,23 @@ namespace Foam } -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::heatTransferCoeffModel::heatTransferCoeffModel +( + const dictionary& dict, + const fvMesh& mesh, + const word& TName +) +: + mesh_(mesh), + patchSet_(), + TName_(TName), + qrName_("qr") +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // Foam::tmp> Foam::heatTransferCoeffModel::q() const @@ -118,34 +134,6 @@ Foam::heatTransferCoeffModel::q() const } -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::heatTransferCoeffModel::heatTransferCoeffModel -( - const dictionary& dict, - const fvMesh& mesh, - const word& TName -) -: - mesh_(mesh), - patchSet_(), - TName_(TName), - qrName_("qr") -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -bool Foam::heatTransferCoeffModel::read(const dictionary& dict) -{ - patchSet_ = mesh_.boundaryMesh().patchSet(dict.get("patches")); - - dict.readIfPresent("qr", qrName_); - - return true; -} - - bool Foam::heatTransferCoeffModel::calc ( volScalarField& result, @@ -158,4 +146,14 @@ bool Foam::heatTransferCoeffModel::calc } +bool Foam::heatTransferCoeffModel::read(const dictionary& dict) +{ + patchSet_ = mesh_.boundaryMesh().patchSet(dict.get("patches")); + + dict.readIfPresent("qr", qrName_); + + return true; +} + + // ************************************************************************* // diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.H b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.H index 467a98f862..a3abbb91ce 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.H +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2017-2020 OpenCFD Ltd. + Copyright (C) 2017-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -33,44 +33,18 @@ Class Foam::heatTransferCoeffModel Description - An abstract base class for heat transfer coeffcient models. - -Usage - Minimal example by using \c system/controlDict.functions: - \verbatim - heatTransferCoeff1 - { - // Mandatory and other optional entries - ... - - // Mandatory (inherited) entries (runtime modifiable) - patches ( ... ); - - // Optional (inherited) entries (runtime modifiable) - qr ; - } - \endverbatim - - where the entries mean: - \table - Property | Description | Type | Reqd | Dflt - patches | Names of operand patches | wordRes | yes | - - qr | Name of radiative heat flux | word | no | qr - \endtable + A base class for heat transfer coefficient models. SourceFiles - - heatTransferCoeffModel.C - - heatTransferCoeffModelNew.C + heatTransferCoeffModel.C + heatTransferCoeffModelNew.C \*---------------------------------------------------------------------------*/ -#ifndef heatTransferCoeffModel_H -#define heatTransferCoeffModel_H +#ifndef Foam_heatTransferCoeffModel_H +#define Foam_heatTransferCoeffModel_H -#include "dictionary.H" -#include "HashSet.H" #include "volFields.H" -#include "runTimeSelectionTables.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -90,16 +64,16 @@ protected: // Protected Data - //- Mesh reference + //- Const reference to the mesh const fvMesh& mesh_; - //- Optional list of (wall) patches to process + //- List of (wall) patches to process labelHashSet patchSet_; - //- Temperature name + //- Name of temperature field const word TName_; - //- Name of radiative heat flux + //- Name of radiative heat flux field word qrName_; @@ -169,41 +143,51 @@ public: // Member Functions - //- The mesh reference - const fvMesh& mesh() const + // Access + + //- Return const reference to the mesh + const fvMesh& mesh() const noexcept { return mesh_; } - //- Wall patches to process - const labelHashSet& patchSet() const + //- Return const reference to wall patches to process + const labelHashSet& patchSet() const noexcept { return patchSet_; } - //- Temperature name - const word& TName() const + //- Return const reference to name of temperature field + const word& TName() const noexcept { return TName_; } - //- Name of radiative heat flux - const word& qrName() const + //- Return const reference to name of radiative heat-flux field + const word& qrName() const noexcept { return qrName_; } - //- Read from dictionary - virtual bool read(const dictionary& dict); + // Evaluation + + //- Return boundary fields of heat-flux field + tmp> q() const; + + //- Calculate the heat transfer coefficient field and return true + //- if successful virtual bool calc ( volScalarField& result, const FieldField& q ); - //- Return q boundary fields - tmp> q() const; + + // I-O + + //- Read from dictionary + virtual bool read(const dictionary& dict); }; diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/localReferenceTemperature/localReferenceTemperature.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/localReferenceTemperature/localReferenceTemperature.C index ee7f0c26a5..5810a00083 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/localReferenceTemperature/localReferenceTemperature.C +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/localReferenceTemperature/localReferenceTemperature.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2017-2020 OpenCFD Ltd. + Copyright (C) 2017-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -45,6 +45,28 @@ namespace heatTransferCoeffModels } +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +void Foam::heatTransferCoeffModels::localReferenceTemperature::htc +( + volScalarField& htc, + const FieldField& q +) +{ + const auto& T = mesh_.lookupObject(TName_); + const volScalarField::Boundary& Tbf = T.boundaryField(); + const scalar eps = ROOTVSMALL; + + volScalarField::Boundary& htcBf = htc.boundaryFieldRef(); + + for (const label patchi : patchSet_) + { + tmp tTc = Tbf[patchi].patchInternalField(); + htcBf[patchi] = q[patchi]/(tTc - Tbf[patchi] + eps); + } +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::heatTransferCoeffModels::localReferenceTemperature:: @@ -72,24 +94,4 @@ bool Foam::heatTransferCoeffModels::localReferenceTemperature::read } -void Foam::heatTransferCoeffModels::localReferenceTemperature::htc -( - volScalarField& htc, - const FieldField& q -) -{ - const auto& T = mesh_.lookupObject(TName_); - const volScalarField::Boundary& Tbf = T.boundaryField(); - const scalar eps = ROOTVSMALL; - - volScalarField::Boundary& htcBf = htc.boundaryFieldRef(); - - for (const label patchi : patchSet_) - { - const scalarField Tc(Tbf[patchi].patchInternalField()); - htcBf[patchi] = q[patchi]/(Tc - Tbf[patchi] + eps); - } -} - - // ************************************************************************* // diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/localReferenceTemperature/localReferenceTemperature.H b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/localReferenceTemperature/localReferenceTemperature.H index 938188ec23..36df6e3f19 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/localReferenceTemperature/localReferenceTemperature.H +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/localReferenceTemperature/localReferenceTemperature.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2017-2020 OpenCFD Ltd. + Copyright (C) 2017-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -30,18 +30,18 @@ Description Heat transfer coefficient calculation that employs the patch internal field as the reference temperature. - The heat transfer coefficient is specified by: + The heat transfer coefficient is calculated by: \f[ - h = \frac{q}{T_c - T_w} + h = \frac{q}{T_c - T_p} \f] where \vartable - h | Convective heat transfer coefficient of the flow [W/(m2 K)] - q | Heat flux [W/m2] - T_{ref} | Reference temperature of patch internal field [K] - T_w | Patch temperature [K] + h | Heat transfer coefficient [W/m^2/K] + q | Heat flux [W/m^2] + T_c | Patch internal temperature field [K] + T_p | Patch temperature [K] \endvartable Usage @@ -49,23 +49,20 @@ Usage \verbatim heatTransferCoeff1 { - // Mandatory and other optional entries + // Inherited entries ... + + // Mandatory entries htcModel localReferenceTemperature; } \endverbatim where the entries mean: \table - Property | Description | Type | Reqd | Dflt + Property | Description | Type | Reqd | Deflt type | Model name: localReferenceTemperature | word | yes | - \endtable -See also - - Foam::heatTransferCoeffModel - - Foam::heatTransferCoeffModels::fixedReferenceTemperature - - Foam::heatTransferCoeffModels::ReynoldsAnalogy - SourceFiles localReferenceTemperature.C diff --git a/src/functionObjects/field/heatTransferCoeff/multiphaseInterHtcModel/multiphaseInterHtcModel.C b/src/functionObjects/field/heatTransferCoeff/multiphaseInterHtcModel/multiphaseInterHtcModel.C index 108b4d473a..0c76e09930 100644 --- a/src/functionObjects/field/heatTransferCoeff/multiphaseInterHtcModel/multiphaseInterHtcModel.C +++ b/src/functionObjects/field/heatTransferCoeff/multiphaseInterHtcModel/multiphaseInterHtcModel.C @@ -26,9 +26,9 @@ License \*---------------------------------------------------------------------------*/ #include "multiphaseInterHtcModel.H" +#include "heatTransferCoeffModel.H" #include "multiphaseInterSystem.H" #include "addToRunTimeSelectionTable.H" -#include "dictionary.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -49,6 +49,17 @@ namespace functionObjects // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // +bool Foam::functionObjects::multiphaseInterHtcModel::calc() +{ + auto& htc = + htcModelPtr_->mesh().lookupObjectRef(resultName_); + + htcModelPtr_->calc(htc, q()); + + return true; +} + + Foam::tmp> Foam::functionObjects::multiphaseInterHtcModel::q() const { @@ -102,19 +113,6 @@ Foam::functionObjects::multiphaseInterHtcModel::q() const } -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -bool Foam::functionObjects::multiphaseInterHtcModel::calc() -{ - auto& htc = - htcModelPtr_->mesh().lookupObjectRef(resultName_); - - htcModelPtr_->calc(htc, q()); - - return true; -} - - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::functionObjects::multiphaseInterHtcModel::multiphaseInterHtcModel @@ -125,7 +123,7 @@ Foam::functionObjects::multiphaseInterHtcModel::multiphaseInterHtcModel ) : fieldExpression(name, runTime, dict), - htcModelPtr_(nullptr) + htcModelPtr_(heatTransferCoeffModel::New(dict, mesh_, fieldName_)) { read(dict); @@ -157,15 +155,11 @@ bool Foam::functionObjects::multiphaseInterHtcModel::read const dictionary& dict ) { - if (!fieldExpression::read(dict)) + if (!fieldExpression::read(dict) || !htcModelPtr_->read(dict)) { return false; } - htcModelPtr_ = heatTransferCoeffModel::New(dict, mesh_, fieldName_); - - htcModelPtr_->read(dict); - return true; } diff --git a/src/functionObjects/field/heatTransferCoeff/multiphaseInterHtcModel/multiphaseInterHtcModel.H b/src/functionObjects/field/heatTransferCoeff/multiphaseInterHtcModel/multiphaseInterHtcModel.H index 1e8645b8b9..c196a37daf 100644 --- a/src/functionObjects/field/heatTransferCoeff/multiphaseInterHtcModel/multiphaseInterHtcModel.H +++ b/src/functionObjects/field/heatTransferCoeff/multiphaseInterHtcModel/multiphaseInterHtcModel.H @@ -28,7 +28,56 @@ Class Description A heat transfer coefficient for multiphase inter solvers - (i.e. icoReactingMultiphaseFoam). + (e.g. icoReactingMultiphaseFoam). + +Usage + Minimal example by using \c system/controlDict.functions: + \verbatim + multiphaseInterHtcModel1 + { + // Mandatory entries + type multiphaseInterHtcModel; + libs (fieldFunctionObjects); + + field ; + patches (); + htcModel ; + + // Optional entries + qr ; + + // Conditional entries based on selected + ... + + // Inherited entries + ... + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Reqd | Deflt + type | Type name: multiphaseInterHtcModel | word | yes | - + libs | Library name: fieldFunctionObjects | word | yes | - + field | Name of operand field | word | yes | - + patches | Names of operand patches | wordRes | yes | - + htcModel | Heat transfer coefficient model - see below | word | yes | - + qr | Name of radiative heat flux field | word | no | qr + \endtable + + The inherited entries are elaborated in: + - \link functionObject.H \endlink + - \link fieldExpression.H \endlink + - \link heatTransferCoeffModel.H \endlink + + Options for the \c htcModel entry: + \verbatim + ReynoldsAnalogy | Reynold's analogy + localReferenceTemperature | Local reference temperature + fixedReferenceTemperature | Fixed reference temperature + faceZoneReferenceTemperature | Face-zone reference temperature + \endverbatim SourceFiles multiphaseInterHtcModel.C @@ -38,16 +87,16 @@ SourceFiles #ifndef Foam_functionObjects_multiphaseInterHtcModel_H #define Foam_functionObjects_multiphaseInterHtcModel_H -#include "HashSet.H" -#include "volFields.H" #include "fieldExpression.H" -#include "runTimeSelectionTables.H" -#include "heatTransferCoeffModel.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { + +// Forward Declarations +class heatTransferCoeffModel; + namespace functionObjects { diff --git a/src/functionObjects/field/heatTransferCoeff/reactingEulerHtcModel/reactingEulerHtcModel.C b/src/functionObjects/field/heatTransferCoeff/reactingEulerHtcModel/reactingEulerHtcModel.C index 9360972ded..9b4267bf42 100644 --- a/src/functionObjects/field/heatTransferCoeff/reactingEulerHtcModel/reactingEulerHtcModel.C +++ b/src/functionObjects/field/heatTransferCoeff/reactingEulerHtcModel/reactingEulerHtcModel.C @@ -26,9 +26,9 @@ License \*---------------------------------------------------------------------------*/ #include "reactingEulerHtcModel.H" +#include "heatTransferCoeffModel.H" #include "phaseSystem.H" #include "addToRunTimeSelectionTable.H" -#include "dictionary.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -49,6 +49,17 @@ namespace functionObjects // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // +bool Foam::functionObjects::reactingEulerHtcModel::calc() +{ + auto& htc = + htcModelPtr_->mesh().lookupObjectRef(resultName_); + + htcModelPtr_->calc(htc, q()); + + return true; +} + + Foam::tmp> Foam::functionObjects::reactingEulerHtcModel::q() const { @@ -110,18 +121,6 @@ Foam::functionObjects::reactingEulerHtcModel::q() const return tq; } -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -bool Foam::functionObjects::reactingEulerHtcModel::calc() -{ - auto& htc = - htcModelPtr_->mesh().lookupObjectRef(resultName_); - - htcModelPtr_->calc(htc, q()); - - return true; -} - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // @@ -133,7 +132,7 @@ Foam::functionObjects::reactingEulerHtcModel::reactingEulerHtcModel ) : fieldExpression(name, runTime, dict), - htcModelPtr_(nullptr) + htcModelPtr_(heatTransferCoeffModel::New(dict, mesh_, fieldName_)) { read(dict); @@ -162,16 +161,12 @@ Foam::functionObjects::reactingEulerHtcModel::reactingEulerHtcModel bool Foam::functionObjects::reactingEulerHtcModel::read(const dictionary& dict) { - if (fieldExpression::read(dict)) + if (!fieldExpression::read(dict) || htcModelPtr_->read(dict)) { - htcModelPtr_ = heatTransferCoeffModel::New(dict, mesh_, fieldName_); - - htcModelPtr_->read(dict); - - return true; + return false; } - return false; + return true; } diff --git a/src/functionObjects/field/heatTransferCoeff/reactingEulerHtcModel/reactingEulerHtcModel.H b/src/functionObjects/field/heatTransferCoeff/reactingEulerHtcModel/reactingEulerHtcModel.H index 72fd176724..4582a47015 100644 --- a/src/functionObjects/field/heatTransferCoeff/reactingEulerHtcModel/reactingEulerHtcModel.H +++ b/src/functionObjects/field/heatTransferCoeff/reactingEulerHtcModel/reactingEulerHtcModel.H @@ -27,7 +27,56 @@ Class Foam::functionObjects::reactingEulerHtcModel Description - A heat transfer coefficient for reactingEuler solvers + A heat transfer coefficient for reactingEuler solvers. + +Usage + Minimal example by using \c system/controlDict.functions: + \verbatim + reactingEulerHtcModel1 + { + // Mandatory entries + type reactingEulerHtcModel; + libs (fieldFunctionObjects); + + field ; + patches (); + htcModel ; + + // Optional entries + qr ; + + // Conditional entries based on selected + ... + + // Inherited entries + ... + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Reqd | Deflt + type | Type name: reactingEulerHtcModel | word | yes | - + libs | Library name: fieldFunctionObjects | word | yes | - + field | Name of operand field | word | yes | - + patches | Names of operand patches | wordRes | yes | - + htcModel | Heat transfer coefficient model - see below | word | yes | - + qr | Name of radiative heat flux field | word | no | qr + \endtable + + The inherited entries are elaborated in: + - \link functionObject.H \endlink + - \link fieldExpression.H \endlink + - \link heatTransferCoeffModel.H \endlink + + Options for the \c htcModel entry: + \verbatim + ReynoldsAnalogy | Reynold's analogy + localReferenceTemperature | Local reference temperature + fixedReferenceTemperature | Fixed reference temperature + faceZoneReferenceTemperature | Face-zone reference temperature + \endverbatim SourceFiles reactingEulerHtcModel.C @@ -37,16 +86,16 @@ SourceFiles #ifndef Foam_functionObjects_reactingEulerHtcModel_H #define Foam_functionObjects_reactingEulerHtcModel_H -#include "HashSet.H" -#include "volFields.H" #include "fieldExpression.H" -#include "runTimeSelectionTables.H" -#include "heatTransferCoeffModel.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { + +// Forward Declarations +class heatTransferCoeffModel; + namespace functionObjects { diff --git a/tutorials/heatTransfer/chtMultiRegionTwoPhaseEulerFoam/solidQuenching2D/system/controlDict b/tutorials/heatTransfer/chtMultiRegionTwoPhaseEulerFoam/solidQuenching2D/system/controlDict index 3200a0e0ce..5be794ab22 100644 --- a/tutorials/heatTransfer/chtMultiRegionTwoPhaseEulerFoam/solidQuenching2D/system/controlDict +++ b/tutorials/heatTransfer/chtMultiRegionTwoPhaseEulerFoam/solidQuenching2D/system/controlDict @@ -63,7 +63,7 @@ functions htc { type reactingEulerHtcModel; - libs (reactingEulerFoamFunctionObjects); + libs (fieldFunctionObjects); region water; field T.liquid; writeControl writeTime;