DistortedSphereDragForce.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) 2014-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::DistortedSphereDragForce
29 
30 Group
31  grpLagrangianIntermediateForceSubModels
32 
33 Description
34  Particle-drag model wherein drag forces (per unit carrier-fluid velocity)
35  are dynamically computed by using \c sphereDrag model; however, are
36  corrected for particle distortion by linearly varying the drag between of
37  a sphere (i.e. \c sphereDrag) and a value of 1.54 corresponding to a disk.
38 
39  \f[
40  \mathrm{F}_\mathrm{D} =
41  \frac{3}{4}
42  \frac{\mu_c\,\mathrm{C}_\mathrm{D}\,\mathrm{Re}_p}{\rho_p \, d_p^2}
43  \f]
44  with
45 
46  \f[
47  \mathrm{C}_\mathrm{D} =
48  \mathrm{C}_{\mathrm{D, sphere}} \left( 1 + 2.632 y \right)
49  \f]
50 
51  where
52  \vartable
53  \mathrm{F}_\mathrm{D} | Drag force per carrier-fluid velocity [kg/s]
54  \mathrm{C}_\mathrm{D} | Particle drag coefficient
55  \mathrm{C}_{\mathrm{D, sphere}} | Sphere drag coefficient
56  \mathrm{Re}_p | Particle Reynolds number
57  \rho_p | Particle mass density
58  d_p | Particle diameter
59  y | Level of distortion determined by other models internally
60  \endvartable
61 
62  Constraints:
63  - Applicable to particles with a spatially homogeneous distribution.
64  - \f$ 1 \geq y \geq 0 \f$
65 
66  References:
67  \verbatim
68  Standard model:
69  Putnam, A. (1961).
70  Integratable form of droplet drag coefficient.
71  ARS Journal, 31(10), 1467-1468.
72 
73  Standard model (tag:AOB):
74  Amsden, A. A., O'Rourke, P. J., & Butler, T. D. (1989).
75  KIVA-II: A computer program for chemically
76  reactive flows with sprays (No. LA-11560-MS).
77  Los Alamos National Lab.(LANL), Los Alamos, NM (United States).
78  DOI:10.2172/6228444
79 
80  Expression correcting drag for particle distortion (tag:LMR):
81  Liu, A. B., Mather, D., & Reitz, R. D. (1993).
82  Modeling the effects of drop drag
83  and breakup on fuel sprays.
84  SAE Transactions, 83-95.
85  DOI:10.4271/930072
86  \endverbatim
87 
88 Usage
89  Minimal example by using \c constant/<CloudProperties>:
90  \verbatim
91  subModels
92  {
93  particleForces
94  {
95  distortedSphereDrag;
96  }
97  }
98  \endverbatim
99 
100  where the entries mean:
101  \table
102  Property | Description | Type | Reqd | Deflt
103  type | Type name: distortedSphereDrag | word | yes | -
104  \endtable
105 
106 Note
107  - \f$\mathrm{F}_\mathrm{D}\f$ is weighted with the particle mass
108  at the stage of a function return, so that it can later be normalised
109  with the effective mass, if necessary (e.g. when using virtual-mass forces).
110 
111 See also
112  - Foam::SphereDragForce
113 
114 SourceFiles
115  DistortedSphereDragForce.C
116 
117 \*---------------------------------------------------------------------------*/
118 
119 #ifndef DistortedSphereDragForce_H
120 #define DistortedSphereDragForce_H
121 
122 #include "ParticleForce.H"
123 
124 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
125 
126 namespace Foam
127 {
128 /*---------------------------------------------------------------------------*\
129  Class DistortedSphereDragForce Declaration
130 \*---------------------------------------------------------------------------*/
131 
132 template<class CloudType>
133 class DistortedSphereDragForce
134 :
135  public ParticleForce<CloudType>
136 {
137  // Private Member Functions
138 
139  //- Drag coefficient multiplied by Reynolds number
140  scalar CdRe(const scalar Re) const;
141 
142 
143 public:
144 
145  //- Runtime type information
146  TypeName("distortedSphereDrag");
147 
148 
149  // Constructors
150 
151  //- Construct from mesh
153  (
154  CloudType& owner,
155  const fvMesh& mesh,
156  const dictionary& dict
157  );
158 
159  //- Construct copy
160  DistortedSphereDragForce(const DistortedSphereDragForce<CloudType>& df);
161 
162  //- Construct and return a clone
163  virtual autoPtr<ParticleForce<CloudType>> clone() const
164  {
165  return autoPtr<ParticleForce<CloudType>>
166  (
167  new DistortedSphereDragForce<CloudType>(*this)
168  );
169  }
170 
171  //- No copy assignment
172  void operator=(const DistortedSphereDragForce<CloudType>&) = delete;
173 
174 
175  //- Destructor
176  virtual ~DistortedSphereDragForce() = default;
177 
178 
179  // Member Functions
180 
181  // Evaluation
182 
183  //- Calculate the coupled force
184  virtual forceSuSp calcCoupled
185  (
186  const typename CloudType::parcelType& p,
187  const typename CloudType::parcelType::trackingData& td,
188  const scalar dt,
189  const scalar mass,
190  const scalar Re,
191  const scalar muc
192  ) const;
193 };
194 
195 
196 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
197 
198 } // End namespace Foam
199 
200 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
201 
202 #ifdef NoRepository
203  #include "DistortedSphereDragForce.C"
204 #endif
205 
206 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
207 
208 #endif
209 
210 // ************************************************************************* //
dictionary dict
DSMCCloud< dsmcParcel > CloudType
void operator=(const DistortedSphereDragForce< CloudType > &)=delete
No copy assignment.
DistortedSphereDragForce(CloudType &owner, const fvMesh &mesh, const dictionary &dict)
Construct from mesh.
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.
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.
Particle-drag model wherein drag forces (per unit carrier-fluid velocity) are dynamically computed by...
TypeName("distortedSphereDrag")
Runtime type information.
ParcelType parcelType
Type of parcel the cloud was instantiated for.
Definition: DSMCCloud.H:290
virtual ~DistortedSphereDragForce()=default
Destructor.
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.
volScalarField & p
Namespace for OpenFOAM.