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:
Andrew Heather
2021-06-08 20:35:30 +00:00
36 changed files with 1506 additions and 90 deletions

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2018-2020 OpenCFD Ltd.
Copyright (C) 2018-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -27,7 +27,7 @@ License
#include "basicHeterogeneousReactingCloud.H"
#include "makeParcelCloudFunctionObjects.H"
#include "makeReactingParcelCloudFunctionObjects.H"
// Kinematic
#include "makeThermoParcelForces.H" // thermo variant
@ -52,7 +52,7 @@ License
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
makeParcelCloudFunctionObjects(basicHeterogeneousReactingCloud);
makeReactingParcelCloudFunctionObjects(basicHeterogeneousReactingCloud);
// Kinematic sub-models
makeThermoParcelForces(basicHeterogeneousReactingCloud);

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -28,7 +28,7 @@ License
#include "basicReactingMultiphaseCloud.H"
#include "makeReactingParcelCloudFunctionObjects.H" // Reacting variant
#include "makeReactingParcelCloudFunctionObjects.H"
// Kinematic
#include "makeThermoParcelForces.H" // thermo variant
@ -56,7 +56,7 @@ License
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
makeParcelCloudFunctionObjects(basicReactingMultiphaseCloud);
makeReactingParcelCloudFunctionObjects(basicReactingMultiphaseCloud);
// Kinematic sub-models
makeThermoParcelForces(basicReactingMultiphaseCloud);

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -28,7 +28,7 @@ License
#include "basicReactingCloud.H"
#include "makeReactingParcelCloudFunctionObjects.H" // Reacting variant
#include "makeReactingParcelCloudFunctionObjects.H"
// Kinematic
#include "makeThermoParcelForces.H" // thermo variant
@ -52,7 +52,7 @@ License
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
makeParcelCloudFunctionObjects(basicReactingCloud);
makeReactingParcelCloudFunctionObjects(basicReactingCloud);
// Kinematic sub-models
makeThermoParcelForces(basicReactingCloud);

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -28,7 +28,7 @@ License
#include "basicThermoCloud.H"
#include "makeParcelCloudFunctionObjects.H"
#include "makeThermoParcelCloudFunctionObjects.H"
// Kinematic
#include "makeThermoParcelForces.H" // thermo variant
@ -48,7 +48,7 @@ License
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
makeParcelCloudFunctionObjects(basicThermoCloud);
makeThermoParcelCloudFunctionObjects(basicThermoCloud);
// Kinematic sub-models
makeThermoParcelForces(basicThermoCloud);

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2018 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -42,6 +42,7 @@ License
#include "PatchParticleHistogram.H"
#include "RemoveParcels.H"
#include "VoidFraction.H"
#include "KinematicReynoldsNumber.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2018 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -42,11 +42,14 @@ License
#include "PatchParticleHistogram.H"
#include "RemoveParcels.H"
#include "VoidFraction.H"
#include "NusseltNumber.H"
#include "HeatTransferCoeff.H"
#include "ThermoReynoldsNumber.H"
#include "WeberNumberReacting.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#define makeParcelCloudFunctionObjects(CloudType) \
#define makeReactingParcelCloudFunctionObjects(CloudType) \
\
makeCloudFunctionObject(CloudType); \
\
@ -61,6 +64,9 @@ License
makeCloudFunctionObjectType(PatchParticleHistogram, CloudType); \
makeCloudFunctionObjectType(RemoveParcels, CloudType); \
makeCloudFunctionObjectType(VoidFraction, CloudType); \
makeCloudFunctionObjectType(NusseltNumber, CloudType); \
makeCloudFunctionObjectType(HeatTransferCoeff, CloudType); \
makeCloudFunctionObjectType(ThermoReynoldsNumber, CloudType); \
makeCloudFunctionObjectType(WeberNumberReacting, CloudType);

View File

@ -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
// ************************************************************************* //

View File

@ -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();
}
}
// ************************************************************************* //

View File

@ -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
// ************************************************************************* //

View File

@ -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();
}
}
// ************************************************************************* //

View File

@ -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
// ************************************************************************* //

View File

@ -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();
}
}
// ************************************************************************* //

View File

@ -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
// ************************************************************************* //

View File

@ -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();
}
}
// ************************************************************************* //

View File

@ -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
// ************************************************************************* //

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -46,7 +47,7 @@ Foam::HeatTransferModel<CloudType>::HeatTransferModel
)
:
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 * * * * * * * * * * * * * //
template<class CloudType>

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -31,7 +31,77 @@ Group
grpLagrangianIntermediateHeatTransferSubModels
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
HeatTransferModel.C
@ -63,7 +133,7 @@ class HeatTransferModel
{
// Private Data
//- Apply Bird's correction to the htc
//- Flag to apply Bird-Stewart-Lightfoot's correction to the htc
const Switch BirdCorrection_;
@ -86,6 +156,12 @@ public:
);
// Generated Methods
//- No copy assignment
void operator=(const HeatTransferModel<CloudType>&) = delete;
// Constructors
//- Construct null from owner
@ -99,7 +175,7 @@ public:
const word& type
);
//- Construct copy
//- Copy construct
HeatTransferModel(const HeatTransferModel<CloudType>& htm);
//- Construct and return a clone
@ -107,7 +183,7 @@ public:
//- Destructor
virtual ~HeatTransferModel();
virtual ~HeatTransferModel() = default;
//- Selector
@ -121,7 +197,7 @@ public:
// Member Functions
//- The Bird HTC correction flag
bool BirdCorrection() const
bool BirdCorrection() const noexcept
{
return BirdCorrection_;
}
@ -129,7 +205,7 @@ public:
// Evaluation
//- Nusselt number
//- Return Nusselt number
virtual scalar Nu
(
const scalar Re,

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011 OpenFOAM Foundation
Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
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;
}
// ************************************************************************* //

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -30,7 +31,26 @@ Group
grpLagrangianIntermediateHeatTransferSubModels
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");
// Generated Methods
//- No copy assignment
void operator=(const NoHeatTransfer&) = delete;
// Constructors
//- Construct from dictionary
NoHeatTransfer(const dictionary&, CloudType& owner);
//- Construct copy
//- Copy construct
NoHeatTransfer(const NoHeatTransfer<CloudType>& im);
//- Construct and return a clone
@ -78,19 +104,31 @@ public:
//- Destructor
virtual ~NoHeatTransfer();
virtual ~NoHeatTransfer() = default;
// Member Functions
//- 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
virtual scalar Pr() const;
// Evaluation
//- 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;
}
};

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011 OpenFOAM Foundation
Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -36,21 +37,22 @@ Foam::RanzMarshall<CloudType>::RanzMarshall
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>
Foam::RanzMarshall<CloudType>::RanzMarshall(const RanzMarshall<CloudType>& htm)
:
HeatTransferModel<CloudType>(htm)
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
template<class CloudType>
Foam::RanzMarshall<CloudType>::~RanzMarshall()
HeatTransferModel<CloudType>(htm),
a_(htm.a_),
b_(htm.b_),
m_(htm.m_),
n_(htm.n_)
{}
@ -63,7 +65,8 @@ Foam::scalar Foam::RanzMarshall<CloudType>::Nu
const scalar Pr
) 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_);
}

View File

@ -6,6 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -30,7 +31,90 @@ Group
grpLagrangianIntermediateHeatTransferSubModels
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>
{
// 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:
@ -60,12 +158,18 @@ public:
TypeName("RanzMarshall");
// Generated Methods
//- No copy assignment
void operator=(const RanzMarshall&) = delete;
// Constructors
//- Construct from dictionary
RanzMarshall(const dictionary& dict, CloudType& cloud);
//- Construct copy
//- Copy construct
RanzMarshall(const RanzMarshall<CloudType>& im);
//- Construct and return a clone
@ -79,14 +183,14 @@ public:
//- Destructor
virtual ~RanzMarshall();
virtual ~RanzMarshall() = default;
// Member Functions
// Evaluation
//- Nusselt number
//- Return Nusselt number
virtual scalar Nu
(
const scalar Re,

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -28,7 +28,7 @@ License
#include "basicSprayCloud.H"
#include "makeReactingParcelCloudFunctionObjects.H" // Reacting variant
#include "makeReactingParcelCloudFunctionObjects.H"
// Kinematic
#include "makeThermoParcelForces.H" // thermo variant
@ -59,7 +59,7 @@ License
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
makeParcelCloudFunctionObjects(basicSprayCloud);
makeReactingParcelCloudFunctionObjects(basicSprayCloud);
// Kinematic sub-models
makeThermoParcelForces(basicSprayCloud);

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -199,6 +199,18 @@ makeThermos
specie
);
makeThermos
(
rhoThermo,
heRhoThermo,
pureMixture,
tabulatedTransport,
sensibleEnthalpy,
hPolynomialThermo,
icoPolynomial,
specie
);
makeThermos
(
rhoThermo,
@ -563,6 +575,18 @@ makeThermos
specie
);
makeThermos
(
rhoThermo,
heRhoThermo,
pureMixture,
tabulatedTransport,
sensibleInternalEnergy,
hPolynomialThermo,
icoPolynomial,
specie
);
makeThermos
(
rhoThermo,

View File

@ -0,0 +1,8 @@
#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions # Tutorial clean functions
#------------------------------------------------------------------------------
cleanCase0
#------------------------------------------------------------------------------

View 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)
#------------------------------------------------------------------------------

View File

@ -232,6 +232,21 @@ cloudFunctions
{
type WeberNumber;
}
ReynoldsNumber1
{
type ReynoldsNumber;
}
NusseltNumber1
{
type NusseltNumber;
}
HeatTransferCoeff1
{
type HeatTransferCoeff;
}
}