ErgunWenYuDragForce.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) 2013-2017 OpenFOAM Foundation
9 Copyright (C) 2021 OpenCFD Ltd.
10-------------------------------------------------------------------------------
11License
12 This file is part of OpenFOAM.
13
14 OpenFOAM is free software: you can redistribute it and/or modify it
15 under the terms of the GNU General Public License as published by
16 the Free Software Foundation, either version 3 of the License, or
17 (at your option) any later version.
18
19 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22 for more details.
23
24 You should have received a copy of the GNU General Public License
25 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26
27Class
28 Foam::ErgunWenYuDragForce
29
30Group
31 grpLagrangianIntermediateForceSubModels
32
33Description
34 Particle-drag model wherein drag forces (per unit carrier-fluid
35 velocity) are dynamically computed based on the Gidaspow drag model
36 which is a switch-like combination of the Wen-Yu and Ergun drag models.
37
38 \f[
39 \mathrm{F}_{\mathrm{D}, Wen-Yu} =
40 \frac{3}{4}
41 \frac{(1 - \alpha_c) \, \mu_c \, \alpha_c \, \mathrm{Re}_p }{d_p^2}
42 \mathrm{C}_\mathrm{D} \, \alpha_c^{-2.65}
43 \f]
44
45 \f[
46 \mathrm{F}_{\mathrm{D}, Ergun} =
47 \left(150 \frac{1-\alpha_c}{\alpha_c} + 1.75 \mathrm{Re}_p \right)
48 \frac{(1-\alpha_c) \, \mu_c}{d_p^2}
49 \f]
50
51 \f[
52 \mathrm{F}_\mathrm{D} = \mathrm{F}_{\mathrm{D}, Wen-Yu}
53 \quad \mathrm{if} \quad \alpha_c \geq 0.8
54 \f]
55
56 \f[
57 \mathrm{F}_\mathrm{D} = \mathrm{F}_{\mathrm{D}, Ergun}
58 \quad \mathrm{if} \quad \alpha_c < 0.8
59 \f]
60 with
61
62 \f[
63 \mathrm{Re}_p =
64 \frac{\rho_c \, | \mathbf{u}_\mathrm{rel} | \, d_p}{\mu_c}
65 \f]
66
67 where
68 \vartable
69 \mathrm{F}_\mathrm{D} | Drag force per carrier-fluid velocity [kg/s]
70 \mathrm{C}_\mathrm{D} | Particle drag coefficient
71 \mathrm{Re}_p | Particle Reynolds number
72 \mu_c | Dynamic viscosity of carrier at the cell occupying particle
73 d_p | Particle diameter
74 \rho_c | Density of carrier at the cell occupying particle
75 \mathbf{u}_\mathrm{rel} | Relative velocity between particle and carrier
76 \alpha_c | Volume fraction of carrier fluid
77 \endvartable
78
79 References:
80 \verbatim
81 Standard model (tag:G):
82 Gidaspow, D. (1994).
83 Multiphase flow and fluidization:
84 continuum and kinetic theory descriptions.
85 Academic press.
86
87 Drag-coefficient model:
88 Schiller, L., & Naumann, A. (1935).
89 Über die grundlegenden Berechnungen bei der Schwerkraftaufbereitung.
90 Z. Ver. Dtsch. Ing., 77: 318–326.
91
92 Expressions (tags:ZZB, GLSLR), (Eq.16-18, Table 3):
93 Zhou, L., Zhang, L., Bai, L., Shi, W.,
94 Li, W., Wang, C., & Agarwal, R. (2017).
95 Experimental study and transient CFD/DEM simulation in
96 a fluidized bed based on different drag models.
97 RSC advances, 7(21), 12764-12774.
98 DOI:10.1039/C6RA28615A
99
100 Gao, X., Li, T., Sarkar, A., Lu, L., & Rogers, W. A. (2018).
101 Development and validation of an enhanced filtered drag model
102 for simulating gas-solid fluidization of Geldart A particles
103 in all flow regimes.
104 Chemical Engineering Science, 184, 33-51.
105 DOI:10.1016/j.ces.2018.03.038
106 \endverbatim
107
108Usage
109 Minimal example by using \c constant/<CloudProperties>:
110 \verbatim
111 subModels
112 {
113 particleForces
114 {
115 ErgunWenYuDrag
116 {
117 alphac <alphacName>; // e.g. alpha.air
118 }
119 }
120 }
121 \endverbatim
122
123 where the entries mean:
124 \table
125 Property | Description | Type | Reqd | Deflt
126 type | Type name: ErgunWenYuDrag | word | yes | -
127 alphac | Name of carrier fluid | word | yes | -
128 \endtable
129
130Note
131 - \f$\mathrm{F}_\mathrm{D}\f$ is weighted with the particle mass/density
132 at the stage of a function return, so that it can later be normalised
133 with the effective mass, if necessary (e.g. when using virtual-mass forces).
134
135See also
136 - Foam::WenYuDragForce
137
138SourceFiles
139 ErgunWenYuDragForce.C
140
141\*---------------------------------------------------------------------------*/
142
143#ifndef ErgunWenYuDragForce_H
144#define ErgunWenYuDragForce_H
145
146#include "ParticleForce.H"
147#include "volFieldsFwd.H"
148
149// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
150
151namespace Foam
152{
153
154/*---------------------------------------------------------------------------*\
155 Class ErgunWenYuDragForce Declaration
156\*---------------------------------------------------------------------------*/
157
158template<class CloudType>
159class ErgunWenYuDragForce
160:
161 public ParticleForce<CloudType>
162{
163 // Private Data
164
165 //- Reference to the carrier volume fraction field
166 const volScalarField& alphac_;
167
168
169 // Private Member Functions
170
171 //- Drag coefficient multiplied by volume fraction and Reynolds number
172 scalar CdRe(const scalar alphacRe) const;
173
174
175public:
176
177 //- Runtime type information
178 TypeName("ErgunWenYuDrag");
179
180
181 // Constructors
182
183 //- Construct from mesh
185 (
187 const fvMesh& mesh,
188 const dictionary& dict
189 );
190
191 //- Construct copy
192 ErgunWenYuDragForce(const ErgunWenYuDragForce<CloudType>& df);
193
194 //- Construct and return a clone
195 virtual autoPtr<ParticleForce<CloudType>> clone() const
196 {
197 return autoPtr<ParticleForce<CloudType>>
198 (
199 new ErgunWenYuDragForce<CloudType>(*this)
200 );
201 }
202
203 //- No copy assignment
204 void operator=(const ErgunWenYuDragForce<CloudType>&) = delete;
205
206
207 //- Destructor
208 virtual ~ErgunWenYuDragForce() = default;
209
210
211 // Member Functions
212
213 // Evaluation
214
215 //- Calculate the coupled force
216 virtual forceSuSp calcCoupled
217 (
218 const typename CloudType::parcelType& p,
219 const typename CloudType::parcelType::trackingData& td,
220 const scalar dt,
221 const scalar mass,
222 const scalar Re,
223 const scalar muc
224 ) const;
225};
226
228// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
229
230} // End namespace Foam
231
232// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
233
234#ifdef NoRepository
235 #include "ErgunWenYuDragForce.C"
236#endif
237
238// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
239
240#endif
241
242// ************************************************************************* //
Templated base class for dsmc cloud.
Definition: DSMCCloud.H:75
ParcelType parcelType
Type of parcel the cloud was instantiated for.
Definition: DSMCCloud.H:220
Particle-drag model wherein drag forces (per unit carrier-fluid velocity) are dynamically computed ba...
virtual autoPtr< ParticleForce< CloudType > > clone() const
Construct and return a clone.
void operator=(const ErgunWenYuDragForce< CloudType > &)=delete
No copy assignment.
TypeName("ErgunWenYuDrag")
Runtime type information.
ErgunWenYuDragForce(CloudType &owner, const fvMesh &mesh, const dictionary &dict)
Construct from mesh.
virtual ~ErgunWenYuDragForce()=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.
Abstract base class for particle forces.
Definition: ParticleForce.H:60
const CloudType & owner() const
Return const access to the cloud owner.
const fvMesh & mesh() const
Return the mesh database.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: autoPtr.H:66
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:126
Class used to pass data into container.
Helper container for force Su and Sp terms.
Definition: forceSuSp.H:67
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:91
volScalarField & p
Namespace for OpenFOAM.
DSMCCloud< dsmcParcel > CloudType
scalarField Re(const UList< complex > &cf)
Extract real component.
Definition: complexField.C:159
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Definition: volFieldsFwd.H:82
dictionary dict
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition: typeInfo.H:73