diff --git a/applications/solvers/multiphase/reactingEulerFoam/Allwclean b/applications/solvers/multiphase/reactingEulerFoam/Allwclean index 2fe4eb69c0e1a0f2a1959bc866580af9971686aa..4ac3e56e70a6c5b6ce27eaafdf2595162746148f 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 22b8bfef5ce1dc9b924b11849fe4c2c8b331a18f..afb6570f3afccad85b3fbdd5080f7e0343c72ed1 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 812b206ecbfb6a699863635518ba16684e76b6c3..1bcafada44b4e1712650607d67d289244d40078d 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 03f219f2604201beea9b231148617c8ef13b4342..c24acfb63201d0ff95ac4e860474a2a9bb544fe1 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 9f66f0a86c6eb17eeaab813c873afae19871f99c..6a37e30b5a91432df3606ba485d5a984793997f7 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 3cd1f32642828098d68c9133e8bd6c4fab312a78..a32e632c384d234bcfebcd8e5d0f571ac47ee90d 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 3e9b463622dae95eb6e91bc148c4fca462677346..1f227dd77696f57972266452667ed80b2623666e 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 d2bd89459aa596930477cb296e4e6b87733ba922..e7f8b7a72ea54539502b0aadd6b4e360bb23a40d 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 e5f17ea8da0547b0404c10733f7bf936ee8003e0..589c48b7a3f080af7065eba619abe56800ebea4f 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 0e078a8d784f11bb210b4bfb963b72041a564978..8f1d013e65a7d99bfcf730acb13eec0ca74f76c9 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 d9e9ec13b6f8cf5db686ddd4a78c6bc0c851624b..35ca55a042de5725796b44e610298338895b5891 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 b26f01502eb7c5e96287984b2ede80bbe227ef13..841d011d497fcf82771a116370067b8ae540f5c1 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 f7578eec4d98b09280ace3eedce0fb4147b1ad46..77f2f7b980e0b6642f638c2d16ace0008ce5d960 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 ab4d65ca0355012639caaaac67fb7badde8bea01..cc8f941470c33b473e1a9edcfaa31965b31e6fe8 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 686604a701fcdf2f2aea66116ec7b4f736e64608..c4a18999fbf43a0bbad85b683126d09f9b0dd1c7 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 ca7d02162dbd5f5feb601c39c9fae101549aa696..567c9619ea0ba90bf3f7aef88cb3150f079ee723 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 0000000000000000000000000000000000000000..c6012464ad8f3db28049bdf884862e0268bf9452 --- /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 0000000000000000000000000000000000000000..e989b2ef909dc06f81c3e154a954c6bfb42a07cd --- /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 eb8dd8a8e6405de9a2fda71346753983372f1b68..13683da17deedf67a6991cf80f5b3135af6f74bf 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 9434d196ca6415a0bdf64953cc9176f042e0ccf6..bf2aa0735055959b6800045c1ee469eb5bd83ac7 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) ); } + } // ************************************************************************* //