From 0e9a699c1fedc234d0dc45a5dc83565a747fdd06 Mon Sep 17 00:00:00 2001 From: sergio <s.ferraris@opencfd.co.uk> Date: Mon, 1 Jun 2020 12:53:30 -0700 Subject: [PATCH] COM: Speratation of htc FO from general FO and reactingEuler solvers. The phase systems tables for multiphase solver create conflict between each other as they are defined in the same namespace and using similar class names. Thereforer a special htc FO for reactingEulerSolver was added named 'reactingEulerHtcModel' to the FO located in phaseSystemModels/reactingEulerFoam/functionObjects/ This commit does the following: 1) Change functionObjects for solvers/reactingEulerFoam to src/phaseSystemModels 2) Delete links for fieldFunctionObect to multiphase libs to avoid conflicts 3) Create a new FO for htc for reactingEulerFoam called reactingEulerHtcMode --- .../multiphase/reactingEulerFoam/Allwclean | 1 - .../multiphase/reactingEulerFoam/Allwmake | 1 - src/Allwmake | 3 +- src/functionObjects/field/Make/options | 4 +- .../heatTransferCoeff/heatTransferCoeff.C | 2 +- .../ReynoldsAnalogy/ReynoldsAnalogy.C | 6 +- .../ReynoldsAnalogy/ReynoldsAnalogy.H | 6 +- .../fixedReferenceTemperature.C | 7 +- .../fixedReferenceTemperature.H | 6 +- .../heatTransferCoeffModel.C | 31 +-- .../heatTransferCoeffModel.H | 24 ++- .../localReferenceTemperature.C | 7 +- .../localReferenceTemperature.H | 6 +- src/phaseSystemModels/Allwclean | 1 + src/phaseSystemModels/Allwmake | 2 + .../functionObjects/Make/files | 1 + .../functionObjects/Make/options | 0 .../functionObjects/phaseForces/phaseForces.C | 0 .../functionObjects/phaseForces/phaseForces.H | 0 .../reactingEulerHtcModel.C | 182 ++++++++++++++++++ .../reactingEulerHtcModel.H | 128 ++++++++++++ .../sizeDistribution/sizeDistribution.C | 0 .../sizeDistribution/sizeDistribution.H | 0 .../hotRoom/system/controlDict | 15 ++ .../solidQuenching2D/system/controlDict | 10 +- 25 files changed, 392 insertions(+), 51 deletions(-) rename {applications/solvers/multiphase => src/phaseSystemModels}/reactingEulerFoam/functionObjects/Make/files (72%) rename {applications/solvers/multiphase => src/phaseSystemModels}/reactingEulerFoam/functionObjects/Make/options (100%) rename {applications/solvers/multiphase => src/phaseSystemModels}/reactingEulerFoam/functionObjects/phaseForces/phaseForces.C (100%) rename {applications/solvers/multiphase => src/phaseSystemModels}/reactingEulerFoam/functionObjects/phaseForces/phaseForces.H (100%) create mode 100644 src/phaseSystemModels/reactingEulerFoam/functionObjects/reactingEulerHtcModel/reactingEulerHtcModel.C create mode 100644 src/phaseSystemModels/reactingEulerFoam/functionObjects/reactingEulerHtcModel/reactingEulerHtcModel.H rename {applications/solvers/multiphase => src/phaseSystemModels}/reactingEulerFoam/functionObjects/sizeDistribution/sizeDistribution.C (100%) rename {applications/solvers/multiphase => src/phaseSystemModels}/reactingEulerFoam/functionObjects/sizeDistribution/sizeDistribution.H (100%) diff --git a/applications/solvers/multiphase/reactingEulerFoam/Allwclean b/applications/solvers/multiphase/reactingEulerFoam/Allwclean index 2fe4eb69c0e..4ac3e56e70a 100755 --- a/applications/solvers/multiphase/reactingEulerFoam/Allwclean +++ b/applications/solvers/multiphase/reactingEulerFoam/Allwclean @@ -3,6 +3,5 @@ cd "${0%/*}" || exit # Run from this directory wclean reactingTwoPhaseEulerFoam wclean reactingMultiphaseEulerFoam -wclean libso functionObjects #------------------------------------------------------------------------------ diff --git a/applications/solvers/multiphase/reactingEulerFoam/Allwmake b/applications/solvers/multiphase/reactingEulerFoam/Allwmake index 22b8bfef5ce..afb6570f3af 100755 --- a/applications/solvers/multiphase/reactingEulerFoam/Allwmake +++ b/applications/solvers/multiphase/reactingEulerFoam/Allwmake @@ -16,6 +16,5 @@ esac reactingTwoPhaseEulerFoam/Allwmake $targetType $* reactingMultiphaseEulerFoam/Allwmake $targetType $* -wmake $targetType functionObjects #------------------------------------------------------------------------------ diff --git a/src/Allwmake b/src/Allwmake index 812b206ecbf..1bcafada44b 100755 --- a/src/Allwmake +++ b/src/Allwmake @@ -100,8 +100,9 @@ wmake $targetType engine conversion/Allwmake $targetType $* -phaseSystemModels/Allwmake $targetType $* functionObjects/Allwmake $targetType $* +phaseSystemModels/Allwmake $targetType $* + wmake $targetType lumpedPointMotion wmake $targetType sixDoFRigidBodyMotion diff --git a/src/functionObjects/field/Make/options b/src/functionObjects/field/Make/options index 03f219f2604..c24acfb6320 100644 --- a/src/functionObjects/field/Make/options +++ b/src/functionObjects/field/Make/options @@ -38,6 +38,4 @@ LIB_LIBS = \ -lcompressibleTurbulenceModels \ -lchemistryModel \ -lreactionThermophysicalModels \ - -lpairPatchAgglomeration \ - -ltwoPhaseReactingTurbulenceModels \ - -lreactingPhaseSystem + -lpairPatchAgglomeration diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.C index 9f66f0a86c6..6a37e30b5a9 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.C +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.C @@ -47,7 +47,7 @@ bool Foam::functionObjects::heatTransferCoeff::calc() { volScalarField& htc = mesh_.lookupObjectRef<volScalarField>(resultName_); - htcModelPtr_->calc(htc); + htcModelPtr_->calc(htc, htcModelPtr_->q()); return true; } diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.C index 3cd1f326428..a32e632c384 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.C +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.C @@ -243,7 +243,11 @@ bool Foam::heatTransferCoeffModels::ReynoldsAnalogy::read } -void Foam::heatTransferCoeffModels::ReynoldsAnalogy::htc(volScalarField& htc) +void Foam::heatTransferCoeffModels::ReynoldsAnalogy::htc +( + volScalarField& htc, + const FieldField<Field, scalar>& q +) { const FieldField<Field, scalar> CfBf(Cf()); const scalar magU = mag(URef_); diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.H b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.H index 3e9b463622d..1f227dd7769 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.H +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/ReynoldsAnalogy/ReynoldsAnalogy.H @@ -131,7 +131,11 @@ protected: tmp<FieldField<Field, scalar>> Cf() const; //- Set the heat transfer coefficient - virtual void htc(volScalarField& htc); + virtual void htc + ( + volScalarField& htc, + const FieldField<Field, scalar>& q + ); //- No copy construct diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.C index d2bd89459aa..e7f8b7a72ea 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.C +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.C @@ -81,10 +81,11 @@ bool Foam::heatTransferCoeffModels::fixedReferenceTemperature::read void Foam::heatTransferCoeffModels::fixedReferenceTemperature::htc ( - volScalarField& htc + volScalarField& htc, + const FieldField<Field, scalar>& q ) { - const FieldField<Field, scalar> qBf(q()); + //const FieldField<Field, scalar> qBf(q()); const volScalarField& T = mesh_.lookupObject<volScalarField>(TName_); const volScalarField::Boundary& Tbf = T.boundaryField(); const scalar eps = ROOTVSMALL; @@ -92,7 +93,7 @@ void Foam::heatTransferCoeffModels::fixedReferenceTemperature::htc volScalarField::Boundary& htcBf = htc.boundaryFieldRef(); for (const label patchi : patchSet_) { - htcBf[patchi] = qBf[patchi]/(TRef_ - Tbf[patchi] + eps); + htcBf[patchi] = q[patchi]/(TRef_ - Tbf[patchi] + eps); } } diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.H b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.H index e5f17ea8da0..589c48b7a3f 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.H +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/fixedReferenceTemperature/fixedReferenceTemperature.H @@ -94,7 +94,11 @@ protected: // Protected Member Functions //- Set the heat transfer coefficient - virtual void htc(volScalarField& htc); + virtual void htc + ( + volScalarField& htc, + const FieldField<Field, scalar>& q + ); //- No copy construct fixedReferenceTemperature(const fixedReferenceTemperature&) = delete; diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.C index 0e078a8d784..8f1d013e65a 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.C +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.C @@ -30,7 +30,6 @@ License #include "fluidThermo.H" #include "turbulentTransportModel.H" #include "turbulentFluidThermoModel.H" -#include "phaseSystem.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -91,28 +90,6 @@ Foam::heatTransferCoeffModel::q() const q[patchi] = alphabf[patchi]*hebf[patchi].snGrad(); } } - else if (mesh_.foundObject<phaseSystem>("phaseProperties")) - { - const phaseSystem& fluid = - ( - mesh_.lookupObject<phaseSystem>("phaseProperties") - ); - - for (label patchi : patchSet_) - { - forAll(fluid.phases(), phasei) - { - const phaseModel& phase = fluid.phases()[phasei]; - const fvPatchScalarField& alpha = - phase.boundaryField()[patchi]; - const volScalarField& he = phase.thermo().he(); - const volScalarField::Boundary& hebf = he.boundaryField(); - - q[patchi] += - alpha*phase.alphaEff(patchi)()*hebf[patchi].snGrad(); - } - } - } else { FatalErrorInFunction @@ -170,9 +147,13 @@ bool Foam::heatTransferCoeffModel::read(const dictionary& dict) } -bool Foam::heatTransferCoeffModel::calc(volScalarField& result) +bool Foam::heatTransferCoeffModel::calc +( + volScalarField& result, + const FieldField<Field, scalar>& q +) { - htc(result); + htc(result, q); return true; } diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.H b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.H index d9e9ec13b6f..35ca55a042d 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.H +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.H @@ -64,9 +64,10 @@ class fvMesh; class heatTransferCoeffModel { -protected: - // Protected Data +public: + + // Public Data //- Mesh reference const fvMesh& mesh_; @@ -81,12 +82,17 @@ protected: word qrName_; +protected: + // Protected Member Functions - tmp<FieldField<Field, scalar>> q() const; //- Set the heat transfer coefficient - virtual void htc(volScalarField& htc) = 0; + virtual void htc + ( + volScalarField& htc, + const FieldField<Field, scalar>& q + ) = 0; //- No copy construct heatTransferCoeffModel(const heatTransferCoeffModel&) = delete; @@ -148,7 +154,15 @@ public: //- Read from dictionary virtual bool read(const dictionary& dict); - virtual bool calc(volScalarField& result); + virtual bool calc + ( + volScalarField& result, + const FieldField<Field, scalar>& q + ); + + //- Return q + tmp<FieldField<Field, scalar>> q() const; + }; diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/localReferenceTemperature/localReferenceTemperature.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/localReferenceTemperature/localReferenceTemperature.C index b26f01502eb..841d011d497 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/localReferenceTemperature/localReferenceTemperature.C +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/localReferenceTemperature/localReferenceTemperature.C @@ -74,10 +74,11 @@ bool Foam::heatTransferCoeffModels::localReferenceTemperature::read void Foam::heatTransferCoeffModels::localReferenceTemperature::htc ( - volScalarField& htc + volScalarField& htc, + const FieldField<Field, scalar>& q ) { - const FieldField<Field, scalar> qBf(q()); + //const FieldField<Field, scalar> qBf(q()); const volScalarField& T = mesh_.lookupObject<volScalarField>(TName_); const volScalarField::Boundary& Tbf = T.boundaryField(); const scalar eps = ROOTVSMALL; @@ -87,7 +88,7 @@ void Foam::heatTransferCoeffModels::localReferenceTemperature::htc for (const label patchi : patchSet_) { const scalarField Tc(Tbf[patchi].patchInternalField()); - htcBf[patchi] = qBf[patchi]/(Tc - Tbf[patchi] + eps); + 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 f7578eec4d9..77f2f7b980e 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/localReferenceTemperature/localReferenceTemperature.H +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/localReferenceTemperature/localReferenceTemperature.H @@ -95,7 +95,11 @@ protected: // Protected Member Functions //- Set the heat transfer coefficient - virtual void htc(volScalarField& htc); + virtual void htc + ( + volScalarField& htc, + const FieldField<Field, scalar>& q + ); public: diff --git a/src/phaseSystemModels/Allwclean b/src/phaseSystemModels/Allwclean index ab4d65ca035..cc8f941470c 100755 --- a/src/phaseSystemModels/Allwclean +++ b/src/phaseSystemModels/Allwclean @@ -11,5 +11,6 @@ wclean libso reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseCompressibl wclean libso reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem wclean libso reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels +wclean libso reactingEulerFoam/functionObjects #------------------------------------------------------------------------------ diff --git a/src/phaseSystemModels/Allwmake b/src/phaseSystemModels/Allwmake index 686604a701f..c4a18999fbf 100755 --- a/src/phaseSystemModels/Allwmake +++ b/src/phaseSystemModels/Allwmake @@ -28,4 +28,6 @@ wmake $targetType reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressi wmake $targetType reactingEulerFoam/phaseSystems +wmake $targetType reactingEulerFoam/functionObjects + #------------------------------------------------------------------------------ diff --git a/applications/solvers/multiphase/reactingEulerFoam/functionObjects/Make/files b/src/phaseSystemModels/reactingEulerFoam/functionObjects/Make/files similarity index 72% rename from applications/solvers/multiphase/reactingEulerFoam/functionObjects/Make/files rename to src/phaseSystemModels/reactingEulerFoam/functionObjects/Make/files index ca7d02162db..567c9619ea0 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/functionObjects/Make/files +++ b/src/phaseSystemModels/reactingEulerFoam/functionObjects/Make/files @@ -1,4 +1,5 @@ sizeDistribution/sizeDistribution.C phaseForces/phaseForces.C +reactingEulerHtcModel/reactingEulerHtcModel.C LIB = $(FOAM_LIBBIN)/libreactingEulerFoamFunctionObjects diff --git a/applications/solvers/multiphase/reactingEulerFoam/functionObjects/Make/options b/src/phaseSystemModels/reactingEulerFoam/functionObjects/Make/options similarity index 100% rename from applications/solvers/multiphase/reactingEulerFoam/functionObjects/Make/options rename to src/phaseSystemModels/reactingEulerFoam/functionObjects/Make/options diff --git a/applications/solvers/multiphase/reactingEulerFoam/functionObjects/phaseForces/phaseForces.C b/src/phaseSystemModels/reactingEulerFoam/functionObjects/phaseForces/phaseForces.C similarity index 100% rename from applications/solvers/multiphase/reactingEulerFoam/functionObjects/phaseForces/phaseForces.C rename to src/phaseSystemModels/reactingEulerFoam/functionObjects/phaseForces/phaseForces.C diff --git a/applications/solvers/multiphase/reactingEulerFoam/functionObjects/phaseForces/phaseForces.H b/src/phaseSystemModels/reactingEulerFoam/functionObjects/phaseForces/phaseForces.H similarity index 100% rename from applications/solvers/multiphase/reactingEulerFoam/functionObjects/phaseForces/phaseForces.H rename to src/phaseSystemModels/reactingEulerFoam/functionObjects/phaseForces/phaseForces.H diff --git a/src/phaseSystemModels/reactingEulerFoam/functionObjects/reactingEulerHtcModel/reactingEulerHtcModel.C b/src/phaseSystemModels/reactingEulerFoam/functionObjects/reactingEulerHtcModel/reactingEulerHtcModel.C new file mode 100644 index 00000000000..c6012464ad8 --- /dev/null +++ b/src/phaseSystemModels/reactingEulerFoam/functionObjects/reactingEulerHtcModel/reactingEulerHtcModel.C @@ -0,0 +1,182 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | www.openfoam.com + \\/ M anipulation | +------------------------------------------------------------------------------- + Copyright (C) 2020 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 "reactingEulerHtcModel.H" +#include "phaseSystem.H" +#include "addToRunTimeSelectionTable.H" +#include "dictionary.H" + + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace functionObjects +{ + defineTypeNameAndDebug(reactingEulerHtcModel, 0); + addToRunTimeSelectionTable + (functionObject, reactingEulerHtcModel, dictionary); +} +} + +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + + +Foam::tmp<Foam::FieldField<Foam::Field, Foam::scalar>> +Foam::functionObjects::reactingEulerHtcModel::q() const +{ + + const fvMesh& mesh = htcModelPtr_->mesh_; + + const volScalarField& T = + mesh.lookupObject<volScalarField>(htcModelPtr_->TName_); + + const volScalarField::Boundary& Tbf = T.boundaryField(); + + auto tq = tmp<FieldField<Field, scalar>>::New(Tbf.size()); + auto& q = tq.ref(); + + forAll(q, patchi) + { + q.set(patchi, new Field<scalar>(Tbf[patchi].size(), Zero)); + } + + if (mesh.foundObject<phaseSystem>("phaseProperties")) + { + const phaseSystem& fluid = + ( + mesh.lookupObject<phaseSystem>("phaseProperties") + ); + + for (label patchi : htcModelPtr_->patchSet_) + { + forAll(fluid.phases(), phasei) + { + const phaseModel& phase = fluid.phases()[phasei]; + const fvPatchScalarField& alpha = + phase.boundaryField()[patchi]; + const volScalarField& he = phase.thermo().he(); + const volScalarField::Boundary& hebf = he.boundaryField(); + + q[patchi] += + alpha*phase.alphaEff(patchi)()*hebf[patchi].snGrad(); + } + } + } + else + { + FatalErrorInFunction + << "Unable to find a valid phaseSystem to evaluate q" + << exit(FatalError); + } + + // Add radiative heat flux contribution if present + + const volScalarField* qrPtr = + mesh.cfindObject<volScalarField>(htcModelPtr_->qrName_); + + if (qrPtr) + { + const volScalarField::Boundary& qrbf = qrPtr->boundaryField(); + + for (const label patchi : htcModelPtr_->patchSet_) + { + q[patchi] += qrbf[patchi]; + } + } + + return tq; +} + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +bool Foam::functionObjects::reactingEulerHtcModel::calc() +{ + volScalarField& htc = + htcModelPtr_->mesh_.lookupObjectRef<volScalarField>(resultName_); + + htcModelPtr_->calc(htc, q()); + + return true; +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::functionObjects::reactingEulerHtcModel::reactingEulerHtcModel +( + const word& name, + const Time& runTime, + const dictionary& dict +) +: + fieldExpression(name, runTime, dict), + htcModelPtr_() +{ + read(dict); + + setResultName(typeName, name + ":htc:" + htcModelPtr_->type()); + + volScalarField* heatTransferCoeffPtr + ( + new volScalarField + ( + IOobject + ( + resultName_, + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh_, + dimensionedScalar(dimPower/dimArea/dimTemperature, Zero) + ) + ); + + mesh_.objectRegistry::store(heatTransferCoeffPtr); +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +bool Foam::functionObjects::reactingEulerHtcModel::read(const dictionary& dict) +{ + if (fieldExpression::read(dict)) + { + htcModelPtr_ = + heatTransferCoeffModel::New(dict, mesh_, fieldName_); + + htcModelPtr_->read(dict); + + return true; + } + + return false; +} + +// ************************************************************************* // diff --git a/src/phaseSystemModels/reactingEulerFoam/functionObjects/reactingEulerHtcModel/reactingEulerHtcModel.H b/src/phaseSystemModels/reactingEulerFoam/functionObjects/reactingEulerHtcModel/reactingEulerHtcModel.H new file mode 100644 index 00000000000..e989b2ef909 --- /dev/null +++ b/src/phaseSystemModels/reactingEulerFoam/functionObjects/reactingEulerHtcModel/reactingEulerHtcModel.H @@ -0,0 +1,128 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | www.openfoam.com + \\/ M anipulation | +------------------------------------------------------------------------------- + Copyright (C) 2020 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/>. + +Namespace + Foam::reactingEulerHtcModel + +Description + A heat transfer coefficient for reactingEuler solvers + +Class + Foam::reactingEulerHtcModel + +SourceFiles + reactingEulerHtcModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef reactingEulerHtcModel_H +#define reactingEulerHtcModel_H + +#include "HashSet.H" +#include "volFields.H" +#include "fieldExpression.H" +#include "runTimeSelectionTables.H" +#include "heatTransferCoeffModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +namespace functionObjects +{ + +/*---------------------------------------------------------------------------*\ + Class reactingEulerHtcModel Declaration +\*---------------------------------------------------------------------------*/ + +class reactingEulerHtcModel +: + public fieldExpression +{ +private: + + //- Heat transfer coefficient model + autoPtr<heatTransferCoeffModel> htcModelPtr_; + + + // Private Member Functions + + //- No copy construct + reactingEulerHtcModel(const reactingEulerHtcModel&) = delete; + + //- No copy assignment + void operator=(const reactingEulerHtcModel&) = delete; + + +protected: + + //- Calculate the heat transfer coefficient field and return true + // if successful + virtual bool calc(); + + //- Calculate heat flux + tmp<FieldField<Field, scalar>> q() const; + + + +public: + + //- Runtime type information + TypeName("reactingEulerHtcModel"); + + + // Constructors + + //- Construct from components + reactingEulerHtcModel + ( + const word& name, + const Time& runTime, + const dictionary& dict + ); + + + //- Destructor + virtual ~reactingEulerHtcModel() = default; + + // Member Functions + + //- Read the heatTransferCoeff data + virtual bool read(const dictionary&); + +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace functionObjects +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingEulerFoam/functionObjects/sizeDistribution/sizeDistribution.C b/src/phaseSystemModels/reactingEulerFoam/functionObjects/sizeDistribution/sizeDistribution.C similarity index 100% rename from applications/solvers/multiphase/reactingEulerFoam/functionObjects/sizeDistribution/sizeDistribution.C rename to src/phaseSystemModels/reactingEulerFoam/functionObjects/sizeDistribution/sizeDistribution.C diff --git a/applications/solvers/multiphase/reactingEulerFoam/functionObjects/sizeDistribution/sizeDistribution.H b/src/phaseSystemModels/reactingEulerFoam/functionObjects/sizeDistribution/sizeDistribution.H similarity index 100% rename from applications/solvers/multiphase/reactingEulerFoam/functionObjects/sizeDistribution/sizeDistribution.H rename to src/phaseSystemModels/reactingEulerFoam/functionObjects/sizeDistribution/sizeDistribution.H diff --git a/tutorials/heatTransfer/buoyantPimpleFoam/hotRoom/system/controlDict b/tutorials/heatTransfer/buoyantPimpleFoam/hotRoom/system/controlDict index eb8dd8a8e64..13683da17de 100644 --- a/tutorials/heatTransfer/buoyantPimpleFoam/hotRoom/system/controlDict +++ b/tutorials/heatTransfer/buoyantPimpleFoam/hotRoom/system/controlDict @@ -49,4 +49,19 @@ adjustTimeStep no; maxCo 0.5; +functions +{ + htc + { + type heatTransferCoeff; + libs (fieldFunctionObjects); + field T; + writeControl outputTime; + writeInterval 1; + htcModel fixedReferenceTemperature; + patches (ceiling); + TRef 373; + } +} + // ************************************************************************* // diff --git a/tutorials/heatTransfer/chtMultiRegionTwoPhaseEulerFoam/solidQuenching2D/system/controlDict b/tutorials/heatTransfer/chtMultiRegionTwoPhaseEulerFoam/solidQuenching2D/system/controlDict index 9434d196ca6..bf2aa073505 100644 --- a/tutorials/heatTransfer/chtMultiRegionTwoPhaseEulerFoam/solidQuenching2D/system/controlDict +++ b/tutorials/heatTransfer/chtMultiRegionTwoPhaseEulerFoam/solidQuenching2D/system/controlDict @@ -34,7 +34,7 @@ deltaT 1e-6; writeControl adjustable; -writeInterval 0.1; +writeInterval 0.01; purgeWrite 0; @@ -63,8 +63,8 @@ functions { htc { - type heatTransferCoeff; - libs (fieldFunctionObjects); + type reactingEulerHtcModel; + libs (reactingEulerFoamFunctionObjects); region water; field T.liquid; writeControl outputTime; @@ -74,6 +74,7 @@ functions TRef 373; } + htcSurfaceFieldValue { type surfaceFieldValue; @@ -94,8 +95,9 @@ functions operation areaAverage; - fields ( heatTransferCoeff(T.liquid) ); + fields ( reactingEulerHtcModel(T.liquid) ); } + } // ************************************************************************* // -- GitLab