PlessisMasliyahDragForce.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::PlessisMasliyahDragForce
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 Du Plessis-Masliyah
36  drag model.
37 
38  \f[
39  \mathrm{F}_\mathrm{D} =
40  \left(\mathrm{A}\, (1-\alpha_c) + \mathrm{B}\, \mathrm{Re}\right)
41  \frac{(1-\alpha_c)\, \mu_c}{\alpha_c^2\, d_p^2}
42  \f]
43  with
44 
45  \f[
46  A = \frac{26.8\, \alpha_c^2}
47  {
48  \alpha_p^{2/3}
49  (1 - \alpha_p^{1/3})
50  (1 - \alpha_p^{2/3})
51  }
52  \f]
53 
54  \f[
55  \mathrm{B} = \frac{\alpha_c^2}{\left( 1 - \alpha_p^{2/3} \right)^2}
56  \f]
57 
58  \f[
59  \mathrm{Re}_p =
60  \frac{\rho_c \, | \mathbf{u}_\mathrm{rel} | \, d_p}{\mu_c}
61  \f]
62 
63  where
64  \vartable
65  \mathrm{F}_\mathrm{D} | Drag force per carrier-fluid velocity [kg/s]
66  \mathrm{Re}_p | Particle Reynolds number
67  \mu_c | Dynamic viscosity of carrier at the cell occupying particle
68  d_p | Particle diameter
69  \rho_c | Density of carrier at the cell occupying particle
70  \mathbf{u}_\mathrm{rel} | Relative velocity between particle and carrier
71  \alpha_c | Volume fraction of carrier fluid
72  \alpha_p | Volume fraction of particles
73  \endvartable
74 
75  References:
76  \verbatim
77  Standard model (tag:P), (Eq. 34-36):
78  Du Plessis, J. P. (1994).
79  Analytical quantification of coefficients in the
80  Ergun equation for fluid friction in a packed bed.
81  Transport in porous media, 16(2), 189-207.
82  DOI:10.1007/BF00617551
83  \endverbatim
84 
85 Usage
86  Minimal example by using \c constant/<CloudProperties>:
87  \verbatim
88  subModels
89  {
90  particleForces
91  {
92  PlessisMasliyahDrag
93  {
94  alphac <alphacName>; // e.g. alpha.air
95  }
96  }
97  }
98  \endverbatim
99 
100  where the entries mean:
101  \table
102  Property | Description | Type | Reqd | Deflt
103  type | Type name: PlessisMasliyahDrag | word | yes | -
104  alphac | Name of carrier fluid | word | yes | -
105  \endtable
106 
107 Note
108  - \f$\mathrm{F}_\mathrm{D}\f$ is weighted with the particle mass/density
109  at the stage of a function return, so that it can later be normalised
110  with the effective mass, if necessary (e.g. when using virtual-mass forces).
111 
112 SourceFiles
113  PlessisMasliyahDragForce.C
114 
115 \*---------------------------------------------------------------------------*/
116 
117 #ifndef PlessisMasliyahDragForce_H
118 #define PlessisMasliyahDragForce_H
119 
120 #include "ParticleForce.H"
121 #include "volFieldsFwd.H"
122 
123 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
124 
125 namespace Foam
126 {
127 
128 /*---------------------------------------------------------------------------*\
129  Class PlessisMasliyahDragForce Declaration
130 \*---------------------------------------------------------------------------*/
131 
132 template<class CloudType>
133 class PlessisMasliyahDragForce
134 :
135  public ParticleForce<CloudType>
136 {
137  // Private Data
138 
139  //- Reference to the carrier volume fraction field
140  const volScalarField& alphac_;
141 
142 
143 public:
144 
145  //- Runtime type information
146  TypeName("PlessisMasliyahDrag");
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  PlessisMasliyahDragForce(const PlessisMasliyahDragForce<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 PlessisMasliyahDragForce<CloudType>(*this)
168  );
169  }
170 
171  //- No copy assignment
172  void operator=(const PlessisMasliyahDragForce<CloudType>&) = delete;
173 
174 
175  //- Destructor
176  virtual ~PlessisMasliyahDragForce() = default;
177 
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 "PlessisMasliyahDragForce.C"
204 #endif
205 
206 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
207 
208 #endif
209 
210 // ************************************************************************* //
dictionary dict
DSMCCloud< dsmcParcel > CloudType
Forwards and collection of common volume field types.
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
void operator=(const PlessisMasliyahDragForce< CloudType > &)=delete
No copy assignment.
virtual ~PlessisMasliyahDragForce()=default
Destructor.
TypeName("PlessisMasliyahDrag")
Runtime type information.
PlessisMasliyahDragForce(CloudType &owner, const fvMesh &mesh, const dictionary &dict)
Construct from mesh.
ParcelType parcelType
Type of parcel the cloud was instantiated for.
Definition: DSMCCloud.H:290
virtual autoPtr< ParticleForce< CloudType > > clone() const
Construct and return a clone.
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.
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.