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 -------------------------------------------------------------------------------
11 License
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 
27 Class
28  Foam::WenYuDragForce
29 
30 Group
31  grpLagrangianIntermediateForceSubModels
32 
33 Description
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 
101 Usage
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 
123 Note
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 
128 SourceFiles
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 
141 namespace Foam
142 {
143 
144 /*---------------------------------------------------------------------------*\
145  Class WenYuDragForce Declaration
146 \*---------------------------------------------------------------------------*/
147 
148 template<class CloudType>
149 class 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 
165 public:
166 
167  //- Runtime type information
168  TypeName("WenYuDrag");
169 
170 
171  // Constructors
172 
173  //- Construct from mesh
175  (
176  CloudType& owner,
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 
217 
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 // ************************************************************************* //
dictionary dict
TypeName("WenYuDrag")
Runtime type information.
WenYuDragForce(CloudType &owner, const fvMesh &mesh, const dictionary &dict)
Construct from mesh.
DSMCCloud< dsmcParcel > CloudType
Particle-drag model wherein drag forces (per unit carrier-fluid velocity) are dynamically computed ba...
Forwards and collection of common volume field types.
virtual autoPtr< ParticleForce< CloudType > > clone() const
Construct and return a clone.
Helper container for force Su and Sp terms.
Definition: forceSuSp.H:60
const fvMesh & mesh() const noexcept
Return the mesh database.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Definition: volFieldsFwd.H:81
ParcelType parcelType
Type of parcel the cloud was instantiated for.
Definition: DSMCCloud.H:290
scalarField Re(const UList< complex > &cmplx)
Extract real component.
Definition: complexField.C:207
const CloudType & owner() const noexcept
Return const access to the cloud owner.
virtual ~WenYuDragForce()=default
Destructor.
void operator=(const WenYuDragForce< CloudType > &)=delete
No copy assignment.
volScalarField & p
Namespace for OpenFOAM.
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.