mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge branch 'vv-lagrangian-heat-transfer-models' into 'develop'
ENH: CloudFunctionObject: new particle function objects See merge request Development/openfoam!443
This commit is contained in:
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2018-2020 OpenCFD Ltd.
|
Copyright (C) 2018-2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -27,7 +27,7 @@ License
|
|||||||
|
|
||||||
#include "basicHeterogeneousReactingCloud.H"
|
#include "basicHeterogeneousReactingCloud.H"
|
||||||
|
|
||||||
#include "makeParcelCloudFunctionObjects.H"
|
#include "makeReactingParcelCloudFunctionObjects.H"
|
||||||
|
|
||||||
// Kinematic
|
// Kinematic
|
||||||
#include "makeThermoParcelForces.H" // thermo variant
|
#include "makeThermoParcelForces.H" // thermo variant
|
||||||
@ -52,7 +52,7 @@ License
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
makeParcelCloudFunctionObjects(basicHeterogeneousReactingCloud);
|
makeReactingParcelCloudFunctionObjects(basicHeterogeneousReactingCloud);
|
||||||
|
|
||||||
// Kinematic sub-models
|
// Kinematic sub-models
|
||||||
makeThermoParcelForces(basicHeterogeneousReactingCloud);
|
makeThermoParcelForces(basicHeterogeneousReactingCloud);
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2015 OpenFOAM Foundation
|
Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||||
Copyright (C) 2020 OpenCFD Ltd.
|
Copyright (C) 2020-2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -28,7 +28,7 @@ License
|
|||||||
|
|
||||||
#include "basicReactingMultiphaseCloud.H"
|
#include "basicReactingMultiphaseCloud.H"
|
||||||
|
|
||||||
#include "makeReactingParcelCloudFunctionObjects.H" // Reacting variant
|
#include "makeReactingParcelCloudFunctionObjects.H"
|
||||||
|
|
||||||
// Kinematic
|
// Kinematic
|
||||||
#include "makeThermoParcelForces.H" // thermo variant
|
#include "makeThermoParcelForces.H" // thermo variant
|
||||||
@ -56,7 +56,7 @@ License
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
makeParcelCloudFunctionObjects(basicReactingMultiphaseCloud);
|
makeReactingParcelCloudFunctionObjects(basicReactingMultiphaseCloud);
|
||||||
|
|
||||||
// Kinematic sub-models
|
// Kinematic sub-models
|
||||||
makeThermoParcelForces(basicReactingMultiphaseCloud);
|
makeThermoParcelForces(basicReactingMultiphaseCloud);
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2015 OpenFOAM Foundation
|
Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||||
Copyright (C) 2020 OpenCFD Ltd.
|
Copyright (C) 2020-2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -28,7 +28,7 @@ License
|
|||||||
|
|
||||||
#include "basicReactingCloud.H"
|
#include "basicReactingCloud.H"
|
||||||
|
|
||||||
#include "makeReactingParcelCloudFunctionObjects.H" // Reacting variant
|
#include "makeReactingParcelCloudFunctionObjects.H"
|
||||||
|
|
||||||
// Kinematic
|
// Kinematic
|
||||||
#include "makeThermoParcelForces.H" // thermo variant
|
#include "makeThermoParcelForces.H" // thermo variant
|
||||||
@ -52,7 +52,7 @@ License
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
makeParcelCloudFunctionObjects(basicReactingCloud);
|
makeReactingParcelCloudFunctionObjects(basicReactingCloud);
|
||||||
|
|
||||||
// Kinematic sub-models
|
// Kinematic sub-models
|
||||||
makeThermoParcelForces(basicReactingCloud);
|
makeThermoParcelForces(basicReactingCloud);
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2015 OpenFOAM Foundation
|
Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||||
Copyright (C) 2020 OpenCFD Ltd.
|
Copyright (C) 2020-2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -28,7 +28,7 @@ License
|
|||||||
|
|
||||||
#include "basicThermoCloud.H"
|
#include "basicThermoCloud.H"
|
||||||
|
|
||||||
#include "makeParcelCloudFunctionObjects.H"
|
#include "makeThermoParcelCloudFunctionObjects.H"
|
||||||
|
|
||||||
// Kinematic
|
// Kinematic
|
||||||
#include "makeThermoParcelForces.H" // thermo variant
|
#include "makeThermoParcelForces.H" // thermo variant
|
||||||
@ -48,7 +48,7 @@ License
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
makeParcelCloudFunctionObjects(basicThermoCloud);
|
makeThermoParcelCloudFunctionObjects(basicThermoCloud);
|
||||||
|
|
||||||
// Kinematic sub-models
|
// Kinematic sub-models
|
||||||
makeThermoParcelForces(basicThermoCloud);
|
makeThermoParcelForces(basicThermoCloud);
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2018 OpenFOAM Foundation
|
Copyright (C) 2011-2018 OpenFOAM Foundation
|
||||||
Copyright (C) 2020 OpenCFD Ltd.
|
Copyright (C) 2020-2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -42,6 +42,7 @@ License
|
|||||||
#include "PatchParticleHistogram.H"
|
#include "PatchParticleHistogram.H"
|
||||||
#include "RemoveParcels.H"
|
#include "RemoveParcels.H"
|
||||||
#include "VoidFraction.H"
|
#include "VoidFraction.H"
|
||||||
|
#include "KinematicReynoldsNumber.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2018 OpenFOAM Foundation
|
Copyright (C) 2011-2018 OpenFOAM Foundation
|
||||||
Copyright (C) 2020 OpenCFD Ltd.
|
Copyright (C) 2020-2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -42,11 +42,14 @@ License
|
|||||||
#include "PatchParticleHistogram.H"
|
#include "PatchParticleHistogram.H"
|
||||||
#include "RemoveParcels.H"
|
#include "RemoveParcels.H"
|
||||||
#include "VoidFraction.H"
|
#include "VoidFraction.H"
|
||||||
|
#include "NusseltNumber.H"
|
||||||
|
#include "HeatTransferCoeff.H"
|
||||||
|
#include "ThermoReynoldsNumber.H"
|
||||||
#include "WeberNumberReacting.H"
|
#include "WeberNumberReacting.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
#define makeParcelCloudFunctionObjects(CloudType) \
|
#define makeReactingParcelCloudFunctionObjects(CloudType) \
|
||||||
\
|
\
|
||||||
makeCloudFunctionObject(CloudType); \
|
makeCloudFunctionObject(CloudType); \
|
||||||
\
|
\
|
||||||
@ -61,6 +64,9 @@ License
|
|||||||
makeCloudFunctionObjectType(PatchParticleHistogram, CloudType); \
|
makeCloudFunctionObjectType(PatchParticleHistogram, CloudType); \
|
||||||
makeCloudFunctionObjectType(RemoveParcels, CloudType); \
|
makeCloudFunctionObjectType(RemoveParcels, CloudType); \
|
||||||
makeCloudFunctionObjectType(VoidFraction, CloudType); \
|
makeCloudFunctionObjectType(VoidFraction, CloudType); \
|
||||||
|
makeCloudFunctionObjectType(NusseltNumber, CloudType); \
|
||||||
|
makeCloudFunctionObjectType(HeatTransferCoeff, CloudType); \
|
||||||
|
makeCloudFunctionObjectType(ThermoReynoldsNumber, CloudType); \
|
||||||
makeCloudFunctionObjectType(WeberNumberReacting, CloudType);
|
makeCloudFunctionObjectType(WeberNumberReacting, CloudType);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,74 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | www.openfoam.com
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Copyright (C) 2021 OpenCFD Ltd.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef makeThermoParcelCloudFunctionObjects_H
|
||||||
|
#define makeThermoParcelCloudFunctionObjects_H
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#include "FacePostProcessing.H"
|
||||||
|
#include "ParticleCollector.H"
|
||||||
|
#include "ParticleErosion.H"
|
||||||
|
#include "ParticleTracks.H"
|
||||||
|
#include "ParticleTrap.H"
|
||||||
|
#include "PatchCollisionDensity.H"
|
||||||
|
#include "PatchInteractionFields.H"
|
||||||
|
#include "PatchPostProcessing.H"
|
||||||
|
#include "PatchParticleHistogram.H"
|
||||||
|
#include "RemoveParcels.H"
|
||||||
|
#include "VoidFraction.H"
|
||||||
|
#include "NusseltNumber.H"
|
||||||
|
#include "HeatTransferCoeff.H"
|
||||||
|
#include "ThermoReynoldsNumber.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#define makeThermoParcelCloudFunctionObjects(CloudType) \
|
||||||
|
\
|
||||||
|
makeCloudFunctionObject(CloudType); \
|
||||||
|
\
|
||||||
|
makeCloudFunctionObjectType(FacePostProcessing, CloudType); \
|
||||||
|
makeCloudFunctionObjectType(ParticleCollector, CloudType); \
|
||||||
|
makeCloudFunctionObjectType(ParticleErosion, CloudType); \
|
||||||
|
makeCloudFunctionObjectType(ParticleTracks, CloudType); \
|
||||||
|
makeCloudFunctionObjectType(ParticleTrap, CloudType); \
|
||||||
|
makeCloudFunctionObjectType(PatchCollisionDensity, CloudType); \
|
||||||
|
makeCloudFunctionObjectType(PatchInteractionFields, CloudType); \
|
||||||
|
makeCloudFunctionObjectType(PatchPostProcessing, CloudType); \
|
||||||
|
makeCloudFunctionObjectType(PatchParticleHistogram, CloudType); \
|
||||||
|
makeCloudFunctionObjectType(RemoveParcels, CloudType); \
|
||||||
|
makeCloudFunctionObjectType(VoidFraction, CloudType); \
|
||||||
|
makeCloudFunctionObjectType(NusseltNumber, CloudType); \
|
||||||
|
makeCloudFunctionObjectType(HeatTransferCoeff, CloudType); \
|
||||||
|
makeCloudFunctionObjectType(ThermoReynoldsNumber, CloudType);
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,114 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | www.openfoam.com
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Copyright (C) 2021 OpenCFD Ltd.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "HeatTransferCoeff.H"
|
||||||
|
#include "ThermoCloud.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::HeatTransferCoeff<CloudType>::HeatTransferCoeff
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
CloudType& owner,
|
||||||
|
const word& modelName
|
||||||
|
)
|
||||||
|
:
|
||||||
|
CloudFunctionObject<CloudType>(dict, owner, modelName, typeName)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::HeatTransferCoeff<CloudType>::HeatTransferCoeff
|
||||||
|
(
|
||||||
|
const HeatTransferCoeff<CloudType>& htc
|
||||||
|
)
|
||||||
|
:
|
||||||
|
CloudFunctionObject<CloudType>(htc)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
void Foam::HeatTransferCoeff<CloudType>::postEvolve
|
||||||
|
(
|
||||||
|
const typename parcelType::trackingData& td
|
||||||
|
)
|
||||||
|
{
|
||||||
|
auto& c = this->owner();
|
||||||
|
const auto& tc =
|
||||||
|
static_cast<const ThermoCloud<KinematicCloud<Cloud<parcelType>>>&>(c);
|
||||||
|
|
||||||
|
if (!c.template foundObject<IOField<scalar>>("htc"))
|
||||||
|
{
|
||||||
|
auto* htcPtr =
|
||||||
|
new IOField<scalar>
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"htc",
|
||||||
|
c.time().timeName(),
|
||||||
|
c,
|
||||||
|
IOobject::NO_READ
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
htcPtr->store();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto& htc = c.template lookupObjectRef<IOField<scalar>>("htc");
|
||||||
|
htc.setSize(c.size());
|
||||||
|
|
||||||
|
const auto& heatTransfer = tc.heatTransfer();
|
||||||
|
typename parcelType::trackingData& nctd =
|
||||||
|
const_cast<typename parcelType::trackingData&>(td);
|
||||||
|
|
||||||
|
label parceli = 0;
|
||||||
|
forAllConstIters(c, parcelIter)
|
||||||
|
{
|
||||||
|
const parcelType& p = parcelIter();
|
||||||
|
|
||||||
|
scalar Ts, rhos, mus, Pr, kappas;
|
||||||
|
p.template calcSurfaceValues<CloudType>
|
||||||
|
(
|
||||||
|
c, nctd, p.T(), Ts, rhos, mus, Pr, kappas
|
||||||
|
);
|
||||||
|
const scalar Re = p.Re(rhos, p.U(), td.Uc(), p.d(), mus);
|
||||||
|
|
||||||
|
htc[parceli++] = heatTransfer.htc(p.d(), Re, Pr, kappas, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (c.size() && c.time().writeTime())
|
||||||
|
{
|
||||||
|
htc.write();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,154 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | www.openfoam.com
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Copyright (C) 2021 OpenCFD Ltd.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::HeatTransferCoeff
|
||||||
|
|
||||||
|
Group
|
||||||
|
grpLagrangianIntermediateFunctionObjects
|
||||||
|
|
||||||
|
Description
|
||||||
|
Calculates and writes particle heat transfer coefficient field on the cloud.
|
||||||
|
|
||||||
|
Operands:
|
||||||
|
\table
|
||||||
|
Operand | Type | Location
|
||||||
|
input | - | -
|
||||||
|
output file | - | -
|
||||||
|
output field | scalarField | \<time\>/lagrangian/\<cloud\>/htc
|
||||||
|
\endtable
|
||||||
|
|
||||||
|
Usage
|
||||||
|
Minimal example by using \c constant/<CloudProperties>:
|
||||||
|
\verbatim
|
||||||
|
cloudFunctionObjects
|
||||||
|
{
|
||||||
|
HeatTransferCoeff1
|
||||||
|
{
|
||||||
|
// Mandatory entries
|
||||||
|
type HeatTransferCoeff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
where the entries mean:
|
||||||
|
\table
|
||||||
|
Property | Description | Type | Reqd | Deflt
|
||||||
|
type | Type name: HeatTransferCoeff | word | yes | -
|
||||||
|
\endtable
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
HeatTransferCoeff.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef HeatTransferCoeff_H
|
||||||
|
#define HeatTransferCoeff_H
|
||||||
|
|
||||||
|
#include "CloudFunctionObject.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class HeatTransferCoeff Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
class HeatTransferCoeff
|
||||||
|
:
|
||||||
|
public CloudFunctionObject<CloudType>
|
||||||
|
{
|
||||||
|
// Private Data
|
||||||
|
|
||||||
|
// Typedefs
|
||||||
|
|
||||||
|
//- Convenience typedef for parcel type
|
||||||
|
typedef typename CloudType::parcelType parcelType;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("HeatTransferCoeff");
|
||||||
|
|
||||||
|
|
||||||
|
// Generated Methods
|
||||||
|
|
||||||
|
//- No copy assignment
|
||||||
|
void operator=(const HeatTransferCoeff<CloudType>&) = delete;
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from dictionary
|
||||||
|
HeatTransferCoeff
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
CloudType& owner,
|
||||||
|
const word& modelName
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Copy construct
|
||||||
|
HeatTransferCoeff(const HeatTransferCoeff<CloudType>& vf);
|
||||||
|
|
||||||
|
//- Construct and return a clone
|
||||||
|
virtual autoPtr<CloudFunctionObject<CloudType>> clone() const
|
||||||
|
{
|
||||||
|
return autoPtr<CloudFunctionObject<CloudType>>
|
||||||
|
(
|
||||||
|
new HeatTransferCoeff<CloudType>(*this)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~HeatTransferCoeff() = default;
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Post-evolve hook
|
||||||
|
virtual void postEvolve(const typename parcelType::trackingData& td);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#ifdef NoRepository
|
||||||
|
#include "HeatTransferCoeff.C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,100 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | www.openfoam.com
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Copyright (C) 2021 OpenCFD Ltd.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "KinematicReynoldsNumber.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::KinematicReynoldsNumber<CloudType>::KinematicReynoldsNumber
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
CloudType& owner,
|
||||||
|
const word& modelName
|
||||||
|
)
|
||||||
|
:
|
||||||
|
CloudFunctionObject<CloudType>(dict, owner, modelName, typeName)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::KinematicReynoldsNumber<CloudType>::KinematicReynoldsNumber
|
||||||
|
(
|
||||||
|
const KinematicReynoldsNumber<CloudType>& re
|
||||||
|
)
|
||||||
|
:
|
||||||
|
CloudFunctionObject<CloudType>(re)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
void Foam::KinematicReynoldsNumber<CloudType>::postEvolve
|
||||||
|
(
|
||||||
|
const typename parcelType::trackingData& td
|
||||||
|
)
|
||||||
|
{
|
||||||
|
auto& c = this->owner();
|
||||||
|
|
||||||
|
if (!c.template foundObject<IOField<scalar>>("Re"))
|
||||||
|
{
|
||||||
|
auto* RePtr =
|
||||||
|
new IOField<scalar>
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"Re",
|
||||||
|
c.time().timeName(),
|
||||||
|
c,
|
||||||
|
IOobject::NO_READ
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
RePtr->store();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto& Re = c.template lookupObjectRef<IOField<scalar>>("Re");
|
||||||
|
Re.setSize(c.size());
|
||||||
|
|
||||||
|
label parceli = 0;
|
||||||
|
forAllConstIters(c, parcelIter)
|
||||||
|
{
|
||||||
|
const parcelType& p = parcelIter();
|
||||||
|
|
||||||
|
Re[parceli++] = p.Re(td);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (c.size() && c.time().writeTime())
|
||||||
|
{
|
||||||
|
Re.write();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,171 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | www.openfoam.com
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Copyright (C) 2021 OpenCFD Ltd.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::KinematicReynoldsNumber
|
||||||
|
|
||||||
|
Group
|
||||||
|
grpLagrangianIntermediateFunctionObjects
|
||||||
|
|
||||||
|
Description
|
||||||
|
Calculates and writes particle Reynolds number field on the cloud.
|
||||||
|
The normalisation factors are calculated without thermal effects.
|
||||||
|
|
||||||
|
\f[
|
||||||
|
\mathrm{Re}_p =
|
||||||
|
\frac{\rho_c \, | \mathbf{u}_\mathrm{rel} | \, d_p}{\mu_c}
|
||||||
|
\f]
|
||||||
|
|
||||||
|
\vartable
|
||||||
|
\mathrm{Re}_p | Particle Reynolds number
|
||||||
|
d_p | Particle diameter
|
||||||
|
\rho_c | Density of carrier
|
||||||
|
\mu_c | Dynamic viscosity of carrier
|
||||||
|
\mathbf{u}_\mathrm{rel} | Relative velocity between particle and carrier
|
||||||
|
\endvartable
|
||||||
|
|
||||||
|
Operands:
|
||||||
|
\table
|
||||||
|
Operand | Type | Location
|
||||||
|
input | - | -
|
||||||
|
output file | - | -
|
||||||
|
output field | scalarField | \<time\>/lagrangian/\<cloud\>/kinematicRe
|
||||||
|
\endtable
|
||||||
|
|
||||||
|
Usage
|
||||||
|
Minimal example by using \c constant/\<CloudProperties\>:
|
||||||
|
\verbatim
|
||||||
|
cloudFunctions
|
||||||
|
{
|
||||||
|
KinematicReynoldsNumber1
|
||||||
|
{
|
||||||
|
// Mandatory entries
|
||||||
|
type KinematicReynoldsNumber;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
where the entries mean:
|
||||||
|
\table
|
||||||
|
Property | Description | Type | Reqd | Deflt
|
||||||
|
type | Type name: KinematicReynoldsNumber | word | yes | -
|
||||||
|
\endtable
|
||||||
|
|
||||||
|
See also
|
||||||
|
- Foam::ThermoReynoldsNumber
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
KinematicReynoldsNumber.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef KinematicReynoldsNumber_H
|
||||||
|
#define KinematicReynoldsNumber_H
|
||||||
|
|
||||||
|
#include "CloudFunctionObject.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class KinematicReynoldsNumber Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
class KinematicReynoldsNumber
|
||||||
|
:
|
||||||
|
public CloudFunctionObject<CloudType>
|
||||||
|
{
|
||||||
|
// Private Data
|
||||||
|
|
||||||
|
// Typedefs
|
||||||
|
|
||||||
|
//- Convenience typedef for parcel type
|
||||||
|
typedef typename CloudType::parcelType parcelType;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("ReynoldsNumber");
|
||||||
|
|
||||||
|
|
||||||
|
// Generated Methods
|
||||||
|
|
||||||
|
//- No copy assignment
|
||||||
|
void operator=(const KinematicReynoldsNumber<CloudType>&) = delete;
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from dictionary
|
||||||
|
KinematicReynoldsNumber
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
CloudType& owner,
|
||||||
|
const word& modelName
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Copy construct
|
||||||
|
KinematicReynoldsNumber(const KinematicReynoldsNumber<CloudType>& vf);
|
||||||
|
|
||||||
|
//- Construct and return a clone
|
||||||
|
virtual autoPtr<CloudFunctionObject<CloudType>> clone() const
|
||||||
|
{
|
||||||
|
return autoPtr<CloudFunctionObject<CloudType>>
|
||||||
|
(
|
||||||
|
new KinematicReynoldsNumber<CloudType>(*this)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~KinematicReynoldsNumber() = default;
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Post-evolve hook
|
||||||
|
virtual void postEvolve(const typename parcelType::trackingData& td);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#ifdef NoRepository
|
||||||
|
#include "KinematicReynoldsNumber.C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,114 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | www.openfoam.com
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Copyright (C) 2021 OpenCFD Ltd.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "NusseltNumber.H"
|
||||||
|
#include "ThermoCloud.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::NusseltNumber<CloudType>::NusseltNumber
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
CloudType& owner,
|
||||||
|
const word& modelName
|
||||||
|
)
|
||||||
|
:
|
||||||
|
CloudFunctionObject<CloudType>(dict, owner, modelName, typeName)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::NusseltNumber<CloudType>::NusseltNumber
|
||||||
|
(
|
||||||
|
const NusseltNumber<CloudType>& nu
|
||||||
|
)
|
||||||
|
:
|
||||||
|
CloudFunctionObject<CloudType>(nu)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
void Foam::NusseltNumber<CloudType>::postEvolve
|
||||||
|
(
|
||||||
|
const typename parcelType::trackingData& td
|
||||||
|
)
|
||||||
|
{
|
||||||
|
auto& c = this->owner();
|
||||||
|
const auto& tc =
|
||||||
|
static_cast<const ThermoCloud<KinematicCloud<Cloud<parcelType>>>&>(c);
|
||||||
|
|
||||||
|
if (!c.template foundObject<IOField<scalar>>("Nu"))
|
||||||
|
{
|
||||||
|
auto* NuPtr =
|
||||||
|
new IOField<scalar>
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"Nu",
|
||||||
|
c.time().timeName(),
|
||||||
|
c,
|
||||||
|
IOobject::NO_READ
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
NuPtr->store();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto& Nu = c.template lookupObjectRef<IOField<scalar>>("Nu");
|
||||||
|
Nu.setSize(c.size());
|
||||||
|
|
||||||
|
const auto& heatTransfer = tc.heatTransfer();
|
||||||
|
typename parcelType::trackingData& nctd =
|
||||||
|
const_cast<typename parcelType::trackingData&>(td);
|
||||||
|
|
||||||
|
label parceli = 0;
|
||||||
|
forAllConstIters(c, parcelIter)
|
||||||
|
{
|
||||||
|
const parcelType& p = parcelIter();
|
||||||
|
|
||||||
|
scalar Ts, rhos, mus, Pr, kappas;
|
||||||
|
p.template calcSurfaceValues<CloudType>
|
||||||
|
(
|
||||||
|
c, nctd, p.T(), Ts, rhos, mus, Pr, kappas
|
||||||
|
);
|
||||||
|
const scalar Re = p.Re(rhos, p.U(), td.Uc(), p.d(), mus);
|
||||||
|
|
||||||
|
Nu[parceli++] = heatTransfer.Nu(Re, Pr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (c.size() && c.time().writeTime())
|
||||||
|
{
|
||||||
|
Nu.write();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,154 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | www.openfoam.com
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Copyright (C) 2021 OpenCFD Ltd.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::NusseltNumber
|
||||||
|
|
||||||
|
Group
|
||||||
|
grpLagrangianIntermediateFunctionObjects
|
||||||
|
|
||||||
|
Description
|
||||||
|
Calculates and writes particle Nusselt number field on the cloud.
|
||||||
|
|
||||||
|
Operands:
|
||||||
|
\table
|
||||||
|
Operand | Type | Location
|
||||||
|
input | - | -
|
||||||
|
output file | - | -
|
||||||
|
output field | scalarField | \<time\>/lagrangian/\<cloud\>/Nu
|
||||||
|
\endtable
|
||||||
|
|
||||||
|
Usage
|
||||||
|
Minimal example by using \c constant/<CloudProperties>:
|
||||||
|
\verbatim
|
||||||
|
cloudFunctionObjects
|
||||||
|
{
|
||||||
|
NusseltNumber1
|
||||||
|
{
|
||||||
|
// Mandatory entries
|
||||||
|
type NusseltNumber;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
where the entries mean:
|
||||||
|
\table
|
||||||
|
Property | Description | Type | Reqd | Deflt
|
||||||
|
type | Type name: NusseltNumber | word | yes | -
|
||||||
|
\endtable
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
NusseltNumber.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef NusseltNumber_H
|
||||||
|
#define NusseltNumber_H
|
||||||
|
|
||||||
|
#include "CloudFunctionObject.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class NusseltNumber Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
class NusseltNumber
|
||||||
|
:
|
||||||
|
public CloudFunctionObject<CloudType>
|
||||||
|
{
|
||||||
|
// Private Data
|
||||||
|
|
||||||
|
// Typedefs
|
||||||
|
|
||||||
|
//- Convenience typedef for parcel type
|
||||||
|
typedef typename CloudType::parcelType parcelType;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("NusseltNumber");
|
||||||
|
|
||||||
|
|
||||||
|
// Generated Methods
|
||||||
|
|
||||||
|
//- No copy assignment
|
||||||
|
void operator=(const NusseltNumber<CloudType>&) = delete;
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from dictionary
|
||||||
|
NusseltNumber
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
CloudType& owner,
|
||||||
|
const word& modelName
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Copy construct
|
||||||
|
NusseltNumber(const NusseltNumber<CloudType>& vf);
|
||||||
|
|
||||||
|
//- Construct and return a clone
|
||||||
|
virtual autoPtr<CloudFunctionObject<CloudType>> clone() const
|
||||||
|
{
|
||||||
|
return autoPtr<CloudFunctionObject<CloudType>>
|
||||||
|
(
|
||||||
|
new NusseltNumber<CloudType>(*this)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~NusseltNumber() = default;
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Post-evolve hook
|
||||||
|
virtual void postEvolve(const typename parcelType::trackingData& td);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#ifdef NoRepository
|
||||||
|
#include "NusseltNumber.C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,110 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | www.openfoam.com
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Copyright (C) 2021 OpenCFD Ltd.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "ThermoReynoldsNumber.H"
|
||||||
|
#include "ThermoCloud.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::ThermoReynoldsNumber<CloudType>::ThermoReynoldsNumber
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
CloudType& owner,
|
||||||
|
const word& modelName
|
||||||
|
)
|
||||||
|
:
|
||||||
|
CloudFunctionObject<CloudType>(dict, owner, modelName, typeName)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::ThermoReynoldsNumber<CloudType>::ThermoReynoldsNumber
|
||||||
|
(
|
||||||
|
const ThermoReynoldsNumber<CloudType>& re
|
||||||
|
)
|
||||||
|
:
|
||||||
|
CloudFunctionObject<CloudType>(re)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
void Foam::ThermoReynoldsNumber<CloudType>::postEvolve
|
||||||
|
(
|
||||||
|
const typename parcelType::trackingData& td
|
||||||
|
)
|
||||||
|
{
|
||||||
|
auto& c = this->owner();
|
||||||
|
|
||||||
|
if (!c.template foundObject<IOField<scalar>>("Re"))
|
||||||
|
{
|
||||||
|
auto* RePtr =
|
||||||
|
new IOField<scalar>
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"Re",
|
||||||
|
c.time().timeName(),
|
||||||
|
c,
|
||||||
|
IOobject::NO_READ
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
RePtr->store();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto& Re = c.template lookupObjectRef<IOField<scalar>>("Re");
|
||||||
|
Re.setSize(c.size());
|
||||||
|
|
||||||
|
typename parcelType::trackingData& nctd =
|
||||||
|
const_cast<typename parcelType::trackingData&>(td);
|
||||||
|
|
||||||
|
label parceli = 0;
|
||||||
|
forAllConstIters(c, parcelIter)
|
||||||
|
{
|
||||||
|
const parcelType& p = parcelIter();
|
||||||
|
|
||||||
|
scalar Ts, rhos, mus, Pr, kappas;
|
||||||
|
p.template calcSurfaceValues<CloudType>
|
||||||
|
(
|
||||||
|
c, nctd, p.T(), Ts, rhos, mus, Pr, kappas
|
||||||
|
);
|
||||||
|
|
||||||
|
Re[parceli++] = p.Re(rhos, p.U(), td.Uc(), p.d(), mus);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (c.size() && c.time().writeTime())
|
||||||
|
{
|
||||||
|
Re.write();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,177 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | www.openfoam.com
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Copyright (C) 2021 OpenCFD Ltd.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::ThermoReynoldsNumber
|
||||||
|
|
||||||
|
Group
|
||||||
|
grpLagrangianIntermediateFunctionObjects
|
||||||
|
|
||||||
|
Description
|
||||||
|
Calculates and writes particle Reynolds number field on the cloud.
|
||||||
|
The normalisation factors are calculated with thermal effects.
|
||||||
|
|
||||||
|
\f[
|
||||||
|
\mathrm{Re}_p =
|
||||||
|
\frac{\rho_c \, | \mathbf{u}_\mathrm{rel} | \, d_p}{\mu_c}
|
||||||
|
\f]
|
||||||
|
|
||||||
|
\vartable
|
||||||
|
\mathrm{Re}_p | Particle Reynolds number
|
||||||
|
d_p | Particle diameter
|
||||||
|
\rho_c | Density of carrier in the film surrounding particle
|
||||||
|
\mu_c | Dynamic viscosity of carrier in the film surrounding particle
|
||||||
|
\mathbf{u}_\mathrm{rel} | Relative velocity between particle and carrier
|
||||||
|
\endvartable
|
||||||
|
|
||||||
|
Operands:
|
||||||
|
\table
|
||||||
|
Operand | Type | Location
|
||||||
|
input | - | -
|
||||||
|
output file | - | -
|
||||||
|
output field | scalarField | \<time\>/lagrangian/\<cloud\>/thermoRe
|
||||||
|
\endtable
|
||||||
|
|
||||||
|
Usage
|
||||||
|
Minimal example by using \c constant/\<CloudProperties\>:
|
||||||
|
\verbatim
|
||||||
|
cloudFunctions
|
||||||
|
{
|
||||||
|
ThermoReynoldsNumber1
|
||||||
|
{
|
||||||
|
// Mandatory entries
|
||||||
|
type ThermoReynoldsNumber;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
where the entries mean:
|
||||||
|
\table
|
||||||
|
Property | Description | Type | Reqd | Deflt
|
||||||
|
type | Type name: ThermoReynoldsNumber | word | yes | -
|
||||||
|
\endtable
|
||||||
|
|
||||||
|
Note
|
||||||
|
- Normalisation factors \c rhoc and \c muc are based on temperature
|
||||||
|
dependent values calculated inside the film surrounding the particle
|
||||||
|
rather than freestream values; therefore, \c ThermoReynoldsNumber should not
|
||||||
|
be expected to operate with kinematic (non-thermo) applications.
|
||||||
|
|
||||||
|
See also
|
||||||
|
- Foam::KinematicReynoldsNumber
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
ThermoReynoldsNumber.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef ThermoReynoldsNumber_H
|
||||||
|
#define ThermoReynoldsNumber_H
|
||||||
|
|
||||||
|
#include "CloudFunctionObject.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class ThermoReynoldsNumber Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
class ThermoReynoldsNumber
|
||||||
|
:
|
||||||
|
public CloudFunctionObject<CloudType>
|
||||||
|
{
|
||||||
|
// Private Data
|
||||||
|
|
||||||
|
// Typedefs
|
||||||
|
|
||||||
|
//- Convenience typedef for parcel type
|
||||||
|
typedef typename CloudType::parcelType parcelType;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("ReynoldsNumber");
|
||||||
|
|
||||||
|
|
||||||
|
// Generated Methods
|
||||||
|
|
||||||
|
//- No copy assignment
|
||||||
|
void operator=(const ThermoReynoldsNumber<CloudType>&) = delete;
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from dictionary
|
||||||
|
ThermoReynoldsNumber
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
CloudType& owner,
|
||||||
|
const word& modelName
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Copy construct
|
||||||
|
ThermoReynoldsNumber(const ThermoReynoldsNumber<CloudType>& vf);
|
||||||
|
|
||||||
|
//- Construct and return a clone
|
||||||
|
virtual autoPtr<CloudFunctionObject<CloudType>> clone() const
|
||||||
|
{
|
||||||
|
return autoPtr<CloudFunctionObject<CloudType>>
|
||||||
|
(
|
||||||
|
new ThermoReynoldsNumber<CloudType>(*this)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~ThermoReynoldsNumber() = default;
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Post-evolve hook
|
||||||
|
virtual void postEvolve(const typename parcelType::trackingData& td);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#ifdef NoRepository
|
||||||
|
#include "ThermoReynoldsNumber.C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -6,6 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2015 OpenFOAM Foundation
|
Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||||
|
Copyright (C) 2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -46,7 +47,7 @@ Foam::HeatTransferModel<CloudType>::HeatTransferModel
|
|||||||
)
|
)
|
||||||
:
|
:
|
||||||
CloudSubModelBase<CloudType>(owner, dict, typeName, type),
|
CloudSubModelBase<CloudType>(owner, dict, typeName, type),
|
||||||
BirdCorrection_(this->coeffDict().lookup("BirdCorrection"))
|
BirdCorrection_(this->coeffDict().template get<Switch>("BirdCorrection"))
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -61,13 +62,6 @@ Foam::HeatTransferModel<CloudType>::HeatTransferModel
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
template<class CloudType>
|
|
||||||
Foam::HeatTransferModel<CloudType>::~HeatTransferModel()
|
|
||||||
{}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
template<class CloudType>
|
template<class CloudType>
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
Copyright (C) 2020 OpenCFD Ltd.
|
Copyright (C) 2020-2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -31,7 +31,77 @@ Group
|
|||||||
grpLagrangianIntermediateHeatTransferSubModels
|
grpLagrangianIntermediateHeatTransferSubModels
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Templated heat transfer model class
|
Templated class to calculate the fluid-particle heat transfer
|
||||||
|
coefficients based on a specified Nusselt-number model.
|
||||||
|
|
||||||
|
\f[
|
||||||
|
h = \frac{\mathrm{Nu} \, \kappa}{d_p}
|
||||||
|
\f]
|
||||||
|
where
|
||||||
|
|
||||||
|
\vartable
|
||||||
|
h | Convective heat transfer coefficient of the flow
|
||||||
|
\mathrm{Nu} | Nusselt number
|
||||||
|
\kappa | Thermal conductivity of carrier in the film
|
||||||
|
d_p | Particle diameter
|
||||||
|
\endvartable
|
||||||
|
|
||||||
|
Optionally, Bird-Stewart-Lightfoot correction can be applied
|
||||||
|
to correct the heat transfer coefficient for evaporation:
|
||||||
|
|
||||||
|
\f[
|
||||||
|
h_{corr} = h \, \frac{\beta}{ \exp(\beta) + 1 }
|
||||||
|
\f]
|
||||||
|
with
|
||||||
|
|
||||||
|
\f[
|
||||||
|
\beta = \frac{N \, C_p \, W}{h}
|
||||||
|
\f]
|
||||||
|
where
|
||||||
|
|
||||||
|
\vartable
|
||||||
|
\beta | Correction factor
|
||||||
|
N | Molar flux
|
||||||
|
C_p | Specific heat capacity
|
||||||
|
W | Molecular weight
|
||||||
|
\endvartable
|
||||||
|
|
||||||
|
Reference:
|
||||||
|
\verbatim
|
||||||
|
Bird, R. B., Stewart, W. E., & Lightfoot, E. N. (1960).
|
||||||
|
Transport phenomena.
|
||||||
|
John Wiley & Sons., New York.
|
||||||
|
DOI:10.1002/aic.690070245
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
Usage
|
||||||
|
Minimal example by using \c constant/\<CloudProperties\>:
|
||||||
|
\verbatim
|
||||||
|
subModels
|
||||||
|
{
|
||||||
|
heatTransferModel <model>;
|
||||||
|
|
||||||
|
<model>Coeffs
|
||||||
|
{
|
||||||
|
BirdCorrection true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
where the entries mean:
|
||||||
|
\table
|
||||||
|
Property | Description | Type | Reqd | Deflt
|
||||||
|
heatTransferModel | Type name: \<model\> | word | yes | -
|
||||||
|
\<model\>Coeffs | Model properties | dict | cndtnl | -
|
||||||
|
BirdCorrection | Flag to apply Bird-Stewart-Lightfoot's <!--
|
||||||
|
--> correction to the heat transfer coefficient | bool | cndtnl | -
|
||||||
|
\endtable
|
||||||
|
|
||||||
|
Options for the \c \<model\> entry:
|
||||||
|
\verbatim
|
||||||
|
RanzMarshall | Ranz-Marshall correlation for Nusselt number
|
||||||
|
none | No active model
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
HeatTransferModel.C
|
HeatTransferModel.C
|
||||||
@ -63,7 +133,7 @@ class HeatTransferModel
|
|||||||
{
|
{
|
||||||
// Private Data
|
// Private Data
|
||||||
|
|
||||||
//- Apply Bird's correction to the htc
|
//- Flag to apply Bird-Stewart-Lightfoot's correction to the htc
|
||||||
const Switch BirdCorrection_;
|
const Switch BirdCorrection_;
|
||||||
|
|
||||||
|
|
||||||
@ -86,6 +156,12 @@ public:
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Generated Methods
|
||||||
|
|
||||||
|
//- No copy assignment
|
||||||
|
void operator=(const HeatTransferModel<CloudType>&) = delete;
|
||||||
|
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct null from owner
|
//- Construct null from owner
|
||||||
@ -99,7 +175,7 @@ public:
|
|||||||
const word& type
|
const word& type
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct copy
|
//- Copy construct
|
||||||
HeatTransferModel(const HeatTransferModel<CloudType>& htm);
|
HeatTransferModel(const HeatTransferModel<CloudType>& htm);
|
||||||
|
|
||||||
//- Construct and return a clone
|
//- Construct and return a clone
|
||||||
@ -107,7 +183,7 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
//- Destructor
|
//- Destructor
|
||||||
virtual ~HeatTransferModel();
|
virtual ~HeatTransferModel() = default;
|
||||||
|
|
||||||
|
|
||||||
//- Selector
|
//- Selector
|
||||||
@ -121,7 +197,7 @@ public:
|
|||||||
// Member Functions
|
// Member Functions
|
||||||
|
|
||||||
//- The Bird HTC correction flag
|
//- The Bird HTC correction flag
|
||||||
bool BirdCorrection() const
|
bool BirdCorrection() const noexcept
|
||||||
{
|
{
|
||||||
return BirdCorrection_;
|
return BirdCorrection_;
|
||||||
}
|
}
|
||||||
@ -129,7 +205,7 @@ public:
|
|||||||
|
|
||||||
// Evaluation
|
// Evaluation
|
||||||
|
|
||||||
//- Nusselt number
|
//- Return Nusselt number
|
||||||
virtual scalar Nu
|
virtual scalar Nu
|
||||||
(
|
(
|
||||||
const scalar Re,
|
const scalar Re,
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011 OpenFOAM Foundation
|
Copyright (C) 2011 OpenFOAM Foundation
|
||||||
|
Copyright (C) 2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -50,38 +51,4 @@ Foam::NoHeatTransfer<CloudType>::NoHeatTransfer
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
template<class CloudType>
|
|
||||||
Foam::NoHeatTransfer<CloudType>::~NoHeatTransfer()
|
|
||||||
{}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
template<class CloudType>
|
|
||||||
bool Foam::NoHeatTransfer<CloudType>::active() const
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class CloudType>
|
|
||||||
Foam::scalar Foam::NoHeatTransfer<CloudType>::Nu
|
|
||||||
(
|
|
||||||
const scalar,
|
|
||||||
const scalar
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
return 0.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class CloudType>
|
|
||||||
Foam::scalar Foam::NoHeatTransfer<CloudType>::Pr() const
|
|
||||||
{
|
|
||||||
return 1.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
|
Copyright (C) 2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -30,7 +31,26 @@ Group
|
|||||||
grpLagrangianIntermediateHeatTransferSubModels
|
grpLagrangianIntermediateHeatTransferSubModels
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Dummy heat transfer model for 'none'
|
Nusselt-number model providing an interface to the
|
||||||
|
properties of \c HeatTransferModel without any active model.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
Minimal example by using \c constant/\<CloudProperties\>:
|
||||||
|
\verbatim
|
||||||
|
subModels
|
||||||
|
{
|
||||||
|
heatTransferModel none;
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
where the entries mean:
|
||||||
|
\table
|
||||||
|
Property | Description | Type | Reqd | Deflt
|
||||||
|
heatTransferModel | Type name: none | word | yes | -
|
||||||
|
\endtable
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
NoHeatTransfer.C
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
@ -59,12 +79,18 @@ public:
|
|||||||
TypeName("none");
|
TypeName("none");
|
||||||
|
|
||||||
|
|
||||||
|
// Generated Methods
|
||||||
|
|
||||||
|
//- No copy assignment
|
||||||
|
void operator=(const NoHeatTransfer&) = delete;
|
||||||
|
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from dictionary
|
//- Construct from dictionary
|
||||||
NoHeatTransfer(const dictionary&, CloudType& owner);
|
NoHeatTransfer(const dictionary&, CloudType& owner);
|
||||||
|
|
||||||
//- Construct copy
|
//- Copy construct
|
||||||
NoHeatTransfer(const NoHeatTransfer<CloudType>& im);
|
NoHeatTransfer(const NoHeatTransfer<CloudType>& im);
|
||||||
|
|
||||||
//- Construct and return a clone
|
//- Construct and return a clone
|
||||||
@ -78,19 +104,31 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
//- Destructor
|
//- Destructor
|
||||||
virtual ~NoHeatTransfer();
|
virtual ~NoHeatTransfer() = default;
|
||||||
|
|
||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
||||||
|
|
||||||
//- Flag to indicate whether model activates heat transfer model
|
//- Flag to indicate whether model activates heat transfer model
|
||||||
virtual bool active() const;
|
virtual bool active() const
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
//- Nusselt number
|
|
||||||
virtual scalar Nu(const scalar, const scalar) const;
|
|
||||||
|
|
||||||
//- Prandtl number
|
// Evaluation
|
||||||
virtual scalar Pr() const;
|
|
||||||
|
//- Return Nusselt number
|
||||||
|
virtual scalar Nu(const scalar Re, const scalar Pr) const
|
||||||
|
{
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return Prandtl number
|
||||||
|
virtual scalar Pr() const
|
||||||
|
{
|
||||||
|
return 1.0;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011 OpenFOAM Foundation
|
Copyright (C) 2011 OpenFOAM Foundation
|
||||||
|
Copyright (C) 2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -36,21 +37,22 @@ Foam::RanzMarshall<CloudType>::RanzMarshall
|
|||||||
CloudType& cloud
|
CloudType& cloud
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
HeatTransferModel<CloudType>(dict, cloud, typeName)
|
HeatTransferModel<CloudType>(dict, cloud, typeName),
|
||||||
|
a_(this->coeffDict().template getOrDefault<scalar>("a", 2.0)),
|
||||||
|
b_(this->coeffDict().template getOrDefault<scalar>("b", 0.6)),
|
||||||
|
m_(this->coeffDict().template getOrDefault<scalar>("m", 1.0/2.0)),
|
||||||
|
n_(this->coeffDict().template getOrDefault<scalar>("n", 1.0/3.0))
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
template<class CloudType>
|
template<class CloudType>
|
||||||
Foam::RanzMarshall<CloudType>::RanzMarshall(const RanzMarshall<CloudType>& htm)
|
Foam::RanzMarshall<CloudType>::RanzMarshall(const RanzMarshall<CloudType>& htm)
|
||||||
:
|
:
|
||||||
HeatTransferModel<CloudType>(htm)
|
HeatTransferModel<CloudType>(htm),
|
||||||
{}
|
a_(htm.a_),
|
||||||
|
b_(htm.b_),
|
||||||
|
m_(htm.m_),
|
||||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
n_(htm.n_)
|
||||||
|
|
||||||
template<class CloudType>
|
|
||||||
Foam::RanzMarshall<CloudType>::~RanzMarshall()
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -63,7 +65,8 @@ Foam::scalar Foam::RanzMarshall<CloudType>::Nu
|
|||||||
const scalar Pr
|
const scalar Pr
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
return 2.0 + 0.6*sqrt(Re)*cbrt(Pr);
|
// (AOB:p. 18 below Eq. 42)
|
||||||
|
return a_ + b_*pow(Re, m_)*pow(Pr, n_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
|
Copyright (C) 2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -30,7 +31,90 @@ Group
|
|||||||
grpLagrangianIntermediateHeatTransferSubModels
|
grpLagrangianIntermediateHeatTransferSubModels
|
||||||
|
|
||||||
Description
|
Description
|
||||||
The Ranz-Marshall correlation for heat transfer
|
Nusselt-number model using the empirical Ranz-Marshall correlation
|
||||||
|
to be used in modelling of the fluid-particle heat transfer coefficient:
|
||||||
|
|
||||||
|
\f[
|
||||||
|
\mathrm{Nu} = a + b \, \mathrm{Re}_p^{m} \, \mathrm{Pr}^{n}
|
||||||
|
\f]
|
||||||
|
with
|
||||||
|
|
||||||
|
\f[
|
||||||
|
\mathrm{Re}_p =
|
||||||
|
\frac{\rho_c \, | \mathbf{u}_\mathrm{rel} | \, d_p}{\mu_c}
|
||||||
|
\f]
|
||||||
|
|
||||||
|
\f[
|
||||||
|
\mathrm{Pr} = \frac{ C_p \, \mu_c }{ \kappa_c }
|
||||||
|
\f]
|
||||||
|
where
|
||||||
|
|
||||||
|
\vartable
|
||||||
|
\mathrm{Nu} | Nusselt number
|
||||||
|
\mathrm{Re}_p | Particle Reynolds number
|
||||||
|
\mathrm{Pr} | Prandtl number
|
||||||
|
d_p | Particle diameter
|
||||||
|
\rho_c | Density of carrier in the film surrounding particle
|
||||||
|
\mu_c | Dynamic viscosity of carrier in the film surrounding particle
|
||||||
|
\mathbf{u}_\mathrm{rel} | Relative velocity between particle and carrier
|
||||||
|
a | Correlation coefficient
|
||||||
|
b | Correlation coefficient
|
||||||
|
m | Correlation exponent of particle Reynolds number
|
||||||
|
n | Correlation exponent of Prandtl number
|
||||||
|
C_p | Specific heat capacity
|
||||||
|
\kappa_c | Thermal conductivity of carrier in the film
|
||||||
|
\endvartable
|
||||||
|
|
||||||
|
Reference:
|
||||||
|
\verbatim
|
||||||
|
Standard model:
|
||||||
|
Ranz, W. E., & Marshall, W. R. (1952).
|
||||||
|
Evaporation from drops - part 1.
|
||||||
|
Chem. Eng. Prog, 48, 22, pp. 141-146.
|
||||||
|
|
||||||
|
Ranz, W. E., & Marshall, W. R. (1952).
|
||||||
|
Evaporation from drops - part 2.
|
||||||
|
Chem. Eng. Prog, 48, 4, pp. 173-180.
|
||||||
|
|
||||||
|
Expressions (tag:AOB), p. 18:
|
||||||
|
Amsden, A. A., O'Rourke, P. J., & Butler, T. D. (1989).
|
||||||
|
KIVA-II: A computer program for chemically
|
||||||
|
reactive flows with sprays (No. LA-11560-MS).
|
||||||
|
Los Alamos National Lab.(LANL), Los Alamos, NM (United States).
|
||||||
|
DOI:10.2172/6228444
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
Usage
|
||||||
|
Minimal example by using \c constant/\<CloudProperties\>:
|
||||||
|
\verbatim
|
||||||
|
subModels
|
||||||
|
{
|
||||||
|
// Mandatory entries
|
||||||
|
heatTransferModel RanzMarshall;
|
||||||
|
|
||||||
|
// Optional entries
|
||||||
|
RanzMarshallCoeffs
|
||||||
|
{
|
||||||
|
a 2.0;
|
||||||
|
b 0.6;
|
||||||
|
m 0.5;
|
||||||
|
n 0.66666;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
where the entries mean:
|
||||||
|
\table
|
||||||
|
Property | Description | Type | Reqd | Deflt
|
||||||
|
heatTransferModel | Type name: RanzMarshall | word | yes | -
|
||||||
|
a | Correlation coefficient | scalar | no | 2.0
|
||||||
|
b | Correlation coefficient | scalar | no | 0.6
|
||||||
|
m | Correlation exponent of particle Reynolds number | scalar | no | 0.5
|
||||||
|
n | Correlation exponent of Prandtl number | scalar | no | 1.0/3.0
|
||||||
|
\endtable
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
RanzMarshall.C
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
@ -53,6 +137,20 @@ class RanzMarshall
|
|||||||
:
|
:
|
||||||
public HeatTransferModel<CloudType>
|
public HeatTransferModel<CloudType>
|
||||||
{
|
{
|
||||||
|
// Private Data
|
||||||
|
|
||||||
|
//- Correlation coefficient
|
||||||
|
const scalar a_;
|
||||||
|
|
||||||
|
//- Correlation coefficient
|
||||||
|
const scalar b_;
|
||||||
|
|
||||||
|
//- Correlation exponent of particle Reynolds number
|
||||||
|
const scalar m_;
|
||||||
|
|
||||||
|
//- Correlation exponent of Prandtl number
|
||||||
|
const scalar n_;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -60,12 +158,18 @@ public:
|
|||||||
TypeName("RanzMarshall");
|
TypeName("RanzMarshall");
|
||||||
|
|
||||||
|
|
||||||
|
// Generated Methods
|
||||||
|
|
||||||
|
//- No copy assignment
|
||||||
|
void operator=(const RanzMarshall&) = delete;
|
||||||
|
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from dictionary
|
//- Construct from dictionary
|
||||||
RanzMarshall(const dictionary& dict, CloudType& cloud);
|
RanzMarshall(const dictionary& dict, CloudType& cloud);
|
||||||
|
|
||||||
//- Construct copy
|
//- Copy construct
|
||||||
RanzMarshall(const RanzMarshall<CloudType>& im);
|
RanzMarshall(const RanzMarshall<CloudType>& im);
|
||||||
|
|
||||||
//- Construct and return a clone
|
//- Construct and return a clone
|
||||||
@ -79,14 +183,14 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
//- Destructor
|
//- Destructor
|
||||||
virtual ~RanzMarshall();
|
virtual ~RanzMarshall() = default;
|
||||||
|
|
||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
||||||
|
|
||||||
// Evaluation
|
// Evaluation
|
||||||
|
|
||||||
//- Nusselt number
|
//- Return Nusselt number
|
||||||
virtual scalar Nu
|
virtual scalar Nu
|
||||||
(
|
(
|
||||||
const scalar Re,
|
const scalar Re,
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2015 OpenFOAM Foundation
|
Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||||
Copyright (C) 2020 OpenCFD Ltd.
|
Copyright (C) 2020-2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -28,7 +28,7 @@ License
|
|||||||
|
|
||||||
#include "basicSprayCloud.H"
|
#include "basicSprayCloud.H"
|
||||||
|
|
||||||
#include "makeReactingParcelCloudFunctionObjects.H" // Reacting variant
|
#include "makeReactingParcelCloudFunctionObjects.H"
|
||||||
|
|
||||||
// Kinematic
|
// Kinematic
|
||||||
#include "makeThermoParcelForces.H" // thermo variant
|
#include "makeThermoParcelForces.H" // thermo variant
|
||||||
@ -59,7 +59,7 @@ License
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
makeParcelCloudFunctionObjects(basicSprayCloud);
|
makeReactingParcelCloudFunctionObjects(basicSprayCloud);
|
||||||
|
|
||||||
// Kinematic sub-models
|
// Kinematic sub-models
|
||||||
makeThermoParcelForces(basicSprayCloud);
|
makeThermoParcelForces(basicSprayCloud);
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||||
Copyright (C) 2020 OpenCFD Ltd.
|
Copyright (C) 2020-2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -199,6 +199,18 @@ makeThermos
|
|||||||
specie
|
specie
|
||||||
);
|
);
|
||||||
|
|
||||||
|
makeThermos
|
||||||
|
(
|
||||||
|
rhoThermo,
|
||||||
|
heRhoThermo,
|
||||||
|
pureMixture,
|
||||||
|
tabulatedTransport,
|
||||||
|
sensibleEnthalpy,
|
||||||
|
hPolynomialThermo,
|
||||||
|
icoPolynomial,
|
||||||
|
specie
|
||||||
|
);
|
||||||
|
|
||||||
makeThermos
|
makeThermos
|
||||||
(
|
(
|
||||||
rhoThermo,
|
rhoThermo,
|
||||||
@ -563,6 +575,18 @@ makeThermos
|
|||||||
specie
|
specie
|
||||||
);
|
);
|
||||||
|
|
||||||
|
makeThermos
|
||||||
|
(
|
||||||
|
rhoThermo,
|
||||||
|
heRhoThermo,
|
||||||
|
pureMixture,
|
||||||
|
tabulatedTransport,
|
||||||
|
sensibleInternalEnergy,
|
||||||
|
hPolynomialThermo,
|
||||||
|
icoPolynomial,
|
||||||
|
specie
|
||||||
|
);
|
||||||
|
|
||||||
makeThermos
|
makeThermos
|
||||||
(
|
(
|
||||||
rhoThermo,
|
rhoThermo,
|
||||||
|
|||||||
8
tutorials/lagrangian/sprayFoam/aachenBomb/Allclean
Executable file
8
tutorials/lagrangian/sprayFoam/aachenBomb/Allclean
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
cd "${0%/*}" || exit # Run from this directory
|
||||||
|
. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions # Tutorial clean functions
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
cleanCase0
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
12
tutorials/lagrangian/sprayFoam/aachenBomb/Allrun
Executable file
12
tutorials/lagrangian/sprayFoam/aachenBomb/Allrun
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
cd "${0%/*}" || exit # Run from this directory
|
||||||
|
. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
restore0Dir
|
||||||
|
|
||||||
|
runApplication blockMesh
|
||||||
|
|
||||||
|
runApplication $(getApplication)
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
@ -232,6 +232,21 @@ cloudFunctions
|
|||||||
{
|
{
|
||||||
type WeberNumber;
|
type WeberNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ReynoldsNumber1
|
||||||
|
{
|
||||||
|
type ReynoldsNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
NusseltNumber1
|
||||||
|
{
|
||||||
|
type NusseltNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
HeatTransferCoeff1
|
||||||
|
{
|
||||||
|
type HeatTransferCoeff;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user