NonSphereDragForce.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 | Copyright (C) 2011-2016 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 Class
25  Foam::NonSphereDragForce
26 
27 Description
28  Drag model for non-spherical particles.
29 
30  Takes the form of
31 
32  24.0/Re*(1.0 + a_*pow(Re, b_)) + Re*c_/(Re + d_);
33 
34  Where a(phi), b(phi), c(phi) and d(phi) are model coefficients, with phi
35  defined as:
36 
37  area of sphere with same volume as particle
38  phi = -------------------------------------------
39  actual particle area
40 
41  Equation used is Eqn (11) of reference below - good to within 2 to 4 % of
42  RMS values from experiment.
43 
44  H and L also give a simplified model with greater error compared to
45  results from experiment - Eqn 12 - but since phi is presumed
46  constant, it offers little benefit.
47 
48  Reference:
49  \verbatim
50  "Drag coefficient and terminal velocity of spherical and nonspherical
51  particles"
52  A. Haider and O. Levenspiel,
53  Powder Technology
54  Volume 58, Issue 1, May 1989, Pages 63-70
55  \endverbatim
56 
57 
58 \*---------------------------------------------------------------------------*/
59 
60 #ifndef NonSphereDragForce_H
61 #define NonSphereDragForce_H
62 
63 #include "ParticleForce.H"
64 
65 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
66 
67 namespace Foam
68 {
69 /*---------------------------------------------------------------------------*\
70  Class NonSphereDragForce Declaration
71 \*---------------------------------------------------------------------------*/
72 
73 template<class CloudType>
75 :
76  public ParticleForce<CloudType>
77 {
78 protected:
79 
80  // Protected Data
81 
82  //- Ratio of surface of sphere having same volume as particle to
83  // actual surface area of particle (0 < phi <= 1)
84  scalar phi_;
85 
86 
87  // Model coefficients
88 
89  scalar a_;
90 
91  scalar b_;
92 
93  scalar c_;
94 
95  scalar d_;
96 
97 
98  // Private Member Functions
99 
100  //- Drag coefficient multiplied by Reynolds number
101  scalar CdRe(const scalar Re) const;
102 
103 
104 public:
105 
106  //- Runtime type information
107  TypeName("nonSphereDrag");
108 
109 
110  // Constructors
111 
112  //- Construct from mesh
114  (
115  CloudType& owner,
116  const fvMesh& mesh,
117  const dictionary& dict
118  );
119 
120  //- Construct copy
122 
123  //- Construct and return a clone
124  virtual autoPtr<ParticleForce<CloudType>> clone() const
125  {
127  (
129  );
130  }
131 
132 
133  //- Destructor
134  virtual ~NonSphereDragForce();
135 
136 
137  // Member Functions
138 
139  // Evaluation
140 
141  //- Calculate the non-coupled force
142  virtual forceSuSp calcCoupled
143  (
144  const typename CloudType::parcelType& p,
145  const scalar dt,
146  const scalar mass,
147  const scalar Re,
148  const scalar muc
149  ) const;
150 };
151 
152 
153 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
154 
155 } // End namespace Foam
156 
157 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
158 
159 #ifdef NoRepository
160  #include "NonSphereDragForce.C"
161 #endif
162 
163 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
164 
165 #endif
166 
167 // ************************************************************************* //
dictionary dict
A list of keyword definitions, which are a keyword followed by any number of values (e...
Definition: dictionary.H:137
virtual forceSuSp calcCoupled(const typename CloudType::parcelType &p, const scalar dt, const scalar mass, const scalar Re, const scalar muc) const
Calculate the non-coupled force.
scalar phi_
Ratio of surface of sphere having same volume as particle to.
const fvMesh & mesh() const
Return the mesh database.
Abstract base class for particle forces.
Definition: ParticleForce.H:53
const CloudType & owner() const
Return const access to the cloud owner.
virtual autoPtr< ParticleForce< CloudType > > clone() const
Construct and return a clone.
Helper container for force Su and Sp terms.
Definition: forceSuSp.H:61
TypeName("nonSphereDrag")
Runtime type information.
ParcelType parcelType
Type of parcel the cloud was instantiated for.
Definition: DSMCCloud.H:218
virtual ~NonSphereDragForce()
Destructor.
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:78
scalar CdRe(const scalar Re) const
Drag coefficient multiplied by Reynolds number.
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
Definition: PtrList.H:52
volScalarField & p
Drag model for non-spherical particles.
Templated base class for dsmc cloud.
Definition: DSMCCloud.H:69
scalarField Re(const UList< complex > &cf)
Definition: complexFields.C:97
NonSphereDragForce(CloudType &owner, const fvMesh &mesh, const dictionary &dict)
Construct from mesh.
Namespace for OpenFOAM.