Loading...
Searching...
No Matches
TomiyamaDragForce.H
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2024 OpenCFD Ltd.
9-------------------------------------------------------------------------------
10License
11 This file is part of OpenFOAM.
12
13 OpenFOAM is free software: you can redistribute it and/or modify it
14 under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25
26Class
27 Foam::TomiyamaDragForce
28
29Group
30 grpLagrangianIntermediateForceSubModels
31
32Description
33 Particle-drag model wherein drag forces (per unit carrier-fluid
34 velocity) are dynamically computed using empirical expressions based on
35 their level of contamination.
36
37 \f[
38 \mathrm{F}_\mathrm{D} =
39 \frac{3}{4}
40 \frac{\mu_c\,\mathrm{C}_\mathrm{D}\,\mathrm{Re}_p}{\rho_p \, d_p^2}
41 \f]
42
43 For pure systems:
44 \f[
45 \mathrm{C}_\mathrm{D} =
46 \max\left[
47 \min\left(\frac{16}{Re}(1+0.15Re^{0.687}), \frac{48}{Re}\right),
48 \frac{8}{3}\frac{Eo}{Eo+4}
49 \right]
50 \f]
51
52 For slightly contaminated systems:
53 \f[
54 \mathrm{C}_\mathrm{D} =
55 \max\left[
56 \min\left(\frac{24}{Re}(1+0.15Re^{0.687}), \frac{72}{Re}\right),
57 \frac{8}{3}\frac{Eo}{Eo+4}
58 \right]
59 \f]
60
61 For fully contaminated systems:
62 \f[
63 \mathrm{C}_\mathrm{D} =
64 \max\left[
65 \frac{24}{Re}(1+0.15Re^{0.687}),
66 \frac{8}{3}\frac{Eo}{Eo+4}
67 \right]
68 \f]
69
70 where
71 \vartable
72 \mathrm{F}_\mathrm{D} | Drag force per carrier-fluid velocity [kg/s]
73 \mathrm{C}_\mathrm{D} | Particle drag coefficient
74 \mathrm{Re}_p | Particle Reynolds number
75 \rho_p | Particle mass density
76 \mu_c | Dynamic viscosity of carrier at the cell occupying particle
77 d_p | Particle diameter
78 \rho_c | Density of carrier at the cell occupying particle
79 \mathbf{u}_\mathrm{rel} | Relative velocity between particle and carrier
80 Eo | Eotvos number
81 \endvartable
82
83 Constraints:
84 - Applicable to bubbles with a spatially homogeneous distribution.
85
86 References:
87 \verbatim
88 Tomiyama, A., Kataoka, I., Zun, I., & Sakaguchi, T. (1998).
89 Drag coefficients of single bubbles under normal and micro gravity
90 conditions.
91 JSME International Journal Series B
92 Fluids and Thermal Engineering, 41(2), 472-479.
93 \endverbatim
94
95Usage
96 Minimal example by using \c constant/<CloudProperties>:
97 \verbatim
98 subModels
99 {
100 particleForces
101 {
102 tomiyamaDrag
103 {
104 // Mandatory entries
105 sigma <scalar>;
106 contamination <word>; // pure | slight | full
107 }
108 }
109 }
110 \endverbatim
111
112 where the entries mean:
113 \table
114 Property | Description | Type | Reqd | Deflt
115 type | Type name: tomiyamaDrag | word | yes | -
116 sigma | Surface tension | scalar | yes | -
117 contamination | Contamination type | word | yes | -
118 \endtable
119
120 Options for the \c contamination entry:
121 \verbatim
122 pure | Pure systems
123 slight | Slightly contaminated systems
124 full | Fully contaminated systems
125 \endverbatim
126
127Note
128 - \f$\mathrm{F}_\mathrm{D}\f$ is weighted with the particle mass/density
129 at the stage of a function return, so that it can later be normalised
130 with the effective mass, if necessary (e.g. when using virtual-mass forces).
131
132SourceFiles
133 TomiyamaDragForce.C
134
135\*---------------------------------------------------------------------------*/
136
137#ifndef TomiyamaDragForce_H
138#define TomiyamaDragForce_H
139
140#include "ParticleForce.H"
141#include "Enum.H"
142
143// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
144
145namespace Foam
146{
147/*---------------------------------------------------------------------------*\
148 Class TomiyamaDragForce Declaration
149\*---------------------------------------------------------------------------*/
150
151template<class CloudType>
153:
154 public ParticleForce<CloudType>
155{
156public:
157
158 // Public Enumerations
159
160 //- Options for the contamination types
161 enum contaminationType : char
162 {
163 PURE = 0,
164 SLIGHT,
165 FULL
166 };
167
168 //- Names for the contaminationType options
169 static const Enum<contaminationType> contaminationTypeNames;
170
171
172private:
173
174 // Private Data
175
176 //- Surface tension
177 const scalar sigma_;
178
179 //- Contamination type option
180 const contaminationType contaminationType_;
181
182
183 // Private Member Functions
184
185 //- Drag coefficient multiplied by Reynolds number
186 scalar CdRe(const scalar Re) const;
187
188
189public:
190
191 //- Runtime type information
192 TypeName("TomiyamaDrag");
193
194
195 // Constructors
196
197 //- Construct from mesh
199 (
201 const fvMesh& mesh,
202 const dictionary& dict
203 );
204
205 //- Copy construct
208 //- Construct and return a clone
210 {
212 (
214 );
215 }
216
217 //- No copy assignment
219
221 //- Destructor
222 virtual ~TomiyamaDragForce() = default;
223
224
225 // Member Functions
226
227 // Evaluation
229 //- Calculate the coupled force
230 virtual forceSuSp calcCoupled
231 (
232 const typename CloudType::parcelType& p,
233 const typename CloudType::parcelType::trackingData& td,
234 const scalar dt,
235 const scalar mass,
236 const scalar Re,
237 const scalar muc
238 ) const;
239};
240
241
242// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
243
244} // End namespace Foam
245
246// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
247
248#ifdef NoRepository
249 #include "TomiyamaDragForce.C"
250#endif
251
252// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
253
254#endif
255
256// ************************************************************************* //
Enum is a wrapper around a list of names/values that represent particular enumeration (or int) values...
Definition Enum.H:57
Abstract base class for particle forces.
const fvMesh & mesh() const noexcept
Return the mesh database.
const CloudType & owner() const noexcept
Return const access to the cloud owner.
ParticleForce(CloudType &owner, const fvMesh &mesh, const dictionary &dict, const word &forceType, const bool readCoeffs)
Construct from mesh.
Particle-drag model wherein drag forces (per unit carrier-fluid velocity) are dynamically computed us...
TomiyamaDragForce(CloudType &owner, const fvMesh &mesh, const dictionary &dict)
Construct from mesh.
virtual autoPtr< ParticleForce< CloudType > > clone() const
Construct and return a clone.
TypeName("TomiyamaDrag")
Runtime type information.
static const Enum< contaminationType > contaminationTypeNames
Names for the contaminationType options.
contaminationType
Options for the contamination types.
@ SLIGHT
"Slightly contaminated systems"
@ FULL
"Fully contaminated systems"
virtual ~TomiyamaDragForce()=default
Destructor.
virtual forceSuSp calcCoupled(const typename CloudType::parcelType &p, const typename CloudType::parcelType::trackingData &td, const scalar dt, const scalar mass, const scalar Re, const scalar muc) const
Calculate the coupled force.
void operator=(const TomiyamaDragForce< CloudType > &)=delete
No copy assignment.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition autoPtr.H:65
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
Helper container for force Su and Sp terms.
Definition forceSuSp.H:63
Mesh data needed to do the Finite Volume discretisation.
Definition fvMesh.H:85
volScalarField & p
wallPoints::trackData td(isBlockedFace, regionToBlockSize)
Namespace for OpenFOAM.
DSMCCloud< dsmcParcel > CloudType
scalarField Re(const UList< complex > &cmplx)
Extract real component.
dictionary dict
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition typeInfo.H:68