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