WenYuDragForce.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::WenYuDragForce
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 Wen-Yu drag model.
36
37 \f[
38 \mathrm{F}_\mathrm{D} =
39 \frac{3}{4}
40 \frac{(1 - \alpha_c) \, \mu_c \, \alpha_c \, \mathrm{Re}_p }{d_p^2}
41 \mathrm{C}_\mathrm{D} \, \alpha_c^{-2.65}
42 \f]
43 with
44
45 \f[
46 \mathrm{C}_\mathrm{D} =
47 \frac{24}{\alpha_c \, \mathrm{Re}_p}
48 \left(1 + \frac{1}{6}(\alpha_c \, \mathrm{Re}_p)^{2/3} \right)
49 \quad \mathrm{if} \quad \alpha_c \, \mathrm{Re}_p < 1000
50 \f]
51 \f[
52 \mathrm{C}_\mathrm{D} =
53 0.44 \quad \mathrm{if} \quad \alpha_c \, \mathrm{Re}_p \geq 1000
54 \f]
55 and
56 \f[
57 \mathrm{Re}_p =
58 \frac{\rho_c \, | \mathbf{u}_\mathrm{rel} | \, d_p}{\mu_c}
59 \f]
60
61 where
62 \vartable
63 \mathrm{F}_\mathrm{D} | Drag force per carrier-fluid velocity [kg/s]
64 \mathrm{C}_\mathrm{D} | Particle drag coefficient
65 \mathrm{Re}_p | Particle Reynolds number
66 \mu_c | Dynamic viscosity of carrier at the cell occupying particle
67 d_p | Particle diameter
68 \rho_c | Density of carrier at the cell occupying particle
69 \mathbf{u}_\mathrm{rel} | Relative velocity between particle and carrier
70 \alpha_c | Volume fraction of the carrier fluid
71 \endvartable
72
73 References:
74 \verbatim
75 Standard model:
76 Wen, C. Y., & Yu, Y. H., (1966).
77 Mechanics of fluidization.
78 Chem. Eng. Prog. Symp. Ser. 62, 100-111.
79
80 Drag-coefficient model:
81 Schiller, L., & Naumann, A. (1935).
82 Über die grundlegenden Berechnungen bei der Schwerkraftaufbereitung.
83 Z. Ver. Dtsch. Ing., 77: 318–326.
84
85 Expressions (tags:ZZB, GLSLR), (Eq.13-14, Table 3):
86 Zhou, L., Zhang, L., Bai, L., Shi, W.,
87 Li, W., Wang, C., & Agarwal, R. (2017).
88 Experimental study and transient CFD/DEM simulation in
89 a fluidized bed based on different drag models.
90 RSC advances, 7(21), 12764-12774.
91 DOI:10.1039/C6RA28615A
92
93 Gao, X., Li, T., Sarkar, A., Lu, L., & Rogers, W. A. (2018).
94 Development and validation of an enhanced filtered drag model
95 for simulating gas-solid fluidization of Geldart A particles
96 in all flow regimes.
97 Chemical Engineering Science, 184, 33-51.
98 DOI:10.1016/j.ces.2018.03.038
99 \endverbatim
100
101Usage
102 Minimal example by using \c constant/<CloudProperties>:
103 \verbatim
104 subModels
105 {
106 particleForces
107 {
108 WenYuDrag
109 {
110 alphac <alphacName>; // e.g. alpha.air
111 }
112 }
113 }
114 \endverbatim
115
116 where the entries mean:
117 \table
118 Property | Description | Type | Reqd | Deflt
119 type | Type name: WenYuDrag | word | yes | -
120 alphac | Name of carrier fluid | word | yes | -
121 \endtable
122
123Note
124 - \f$\mathrm{F}_\mathrm{D}\f$ is weighted with the particle mass/density
125 at the stage of a function return, so that it can later be normalised
126 with the effective mass, if necessary (e.g. when using virtual-mass forces).
127
128SourceFiles
129 WenYuDragForce.C
130
131\*---------------------------------------------------------------------------*/
132
133#ifndef WenYuDragForce_H
134#define WenYuDragForce_H
135
136#include "ParticleForce.H"
137#include "volFieldsFwd.H"
138
139// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
140
141namespace Foam
142{
143
144/*---------------------------------------------------------------------------*\
145 Class WenYuDragForce Declaration
146\*---------------------------------------------------------------------------*/
147
148template<class CloudType>
149class WenYuDragForce
150:
151 public ParticleForce<CloudType>
152{
153 // Private Data
154
155 //- Reference to the carrier volume fraction field
156 const volScalarField& alphac_;
157
158
159 // Private Member Functions
160
161 //- Drag coefficient multiplied by volume fraction and Reynolds number
162 scalar CdRe(const scalar alphacRe) const;
163
164
165public:
166
167 //- Runtime type information
168 TypeName("WenYuDrag");
169
170
171 // Constructors
172
173 //- Construct from mesh
175 (
177 const fvMesh& mesh,
178 const dictionary& dict
179 );
180
181 //- Construct copy
182 WenYuDragForce(const WenYuDragForce<CloudType>& df);
183
184 //- Construct and return a clone
185 virtual autoPtr<ParticleForce<CloudType>> clone() const
186 {
187 return autoPtr<ParticleForce<CloudType>>
188 (
189 new WenYuDragForce<CloudType>(*this)
190 );
191 }
192
193 //- No copy assignment
194 void operator=(const WenYuDragForce<CloudType>&) = delete;
195
196
197 //- Destructor
198 virtual ~WenYuDragForce() = default;
199
200
201 // Member Functions
202
203 // Evaluation
204
205 //- Calculate the coupled force
206 virtual forceSuSp calcCoupled
207 (
208 const typename CloudType::parcelType& p,
209 const typename CloudType::parcelType::trackingData& td,
210 const scalar dt,
211 const scalar mass,
212 const scalar Re,
213 const scalar muc
214 ) const;
215};
216
218// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
219
220} // End namespace Foam
221
222// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
223
224#ifdef NoRepository
225 #include "WenYuDragForce.C"
226#endif
227
228// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
229
230#endif
231
232// ************************************************************************* //
Templated base class for dsmc cloud.
Definition: DSMCCloud.H:75
ParcelType parcelType
Type of parcel the cloud was instantiated for.
Definition: DSMCCloud.H:220
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.
Particle-drag model wherein drag forces (per unit carrier-fluid velocity) are dynamically computed ba...
WenYuDragForce(CloudType &owner, const fvMesh &mesh, const dictionary &dict)
Construct from mesh.
void operator=(const WenYuDragForce< CloudType > &)=delete
No copy assignment.
virtual autoPtr< ParticleForce< CloudType > > clone() const
Construct and return a clone.
TypeName("WenYuDrag")
Runtime type information.
virtual ~WenYuDragForce()=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.
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