TomiyamaDragForce.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) 2024 OpenCFD Ltd.
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::TomiyamaDragForce
28 
29 Group
30  grpLagrangianIntermediateForceSubModels
31 
32 Description
33  Particle-drag model wherein drag forces (per unit carrier-fluid
34  velocity) are dynamically computed using empirical expressions based on
35  their level of contamination.
36 
37  \f[
38  \mathrm{F}_\mathrm{D} =
39  \frac{3}{4}
40  \frac{\mu_c\,\mathrm{C}_\mathrm{D}\,\mathrm{Re}_p}{\rho_p \, d_p^2}
41  \f]
42 
43  For pure systems:
44  \f[
45  \mathrm{C}_\mathrm{D} =
46  \max\left[
47  \min\left(\frac{16}{Re}(1+0.15Re^{0.687}), \frac{48}{Re}\right),
48  \frac{8}{3}\frac{Eo}{Eo+4}
49  \right]
50  \f]
51 
52  For slightly contaminated systems:
53  \f[
54  \mathrm{C}_\mathrm{D} =
55  \max\left[
56  \min\left(\frac{24}{Re}(1+0.15Re^{0.687}), \frac{72}{Re}\right),
57  \frac{8}{3}\frac{Eo}{Eo+4}
58  \right]
59  \f]
60 
61  For fully contaminated systems:
62  \f[
63  \mathrm{C}_\mathrm{D} =
64  \max\left[
65  \frac{24}{Re}(1+0.15Re^{0.687}),
66  \frac{8}{3}\frac{Eo}{Eo+4}
67  \right]
68  \f]
69 
70  where
71  \vartable
72  \mathrm{F}_\mathrm{D} | Drag force per carrier-fluid velocity [kg/s]
73  \mathrm{C}_\mathrm{D} | Particle drag coefficient
74  \mathrm{Re}_p | Particle Reynolds number
75  \rho_p | Particle mass density
76  \mu_c | Dynamic viscosity of carrier at the cell occupying particle
77  d_p | Particle diameter
78  \rho_c | Density of carrier at the cell occupying particle
79  \mathbf{u}_\mathrm{rel} | Relative velocity between particle and carrier
80  Eo | Eotvos number
81  \endvartable
82 
83  Constraints:
84  - Applicable to bubbles with a spatially homogeneous distribution.
85 
86  References:
87  \verbatim
88  Tomiyama, A., Kataoka, I., Zun, I., & Sakaguchi, T. (1998).
89  Drag coefficients of single bubbles under normal and micro gravity
90  conditions.
91  JSME International Journal Series B
92  Fluids and Thermal Engineering, 41(2), 472-479.
93  \endverbatim
94 
95 Usage
96  Minimal example by using \c constant/<CloudProperties>:
97  \verbatim
98  subModels
99  {
100  particleForces
101  {
102  tomiyamaDrag
103  {
104  // Mandatory entries
105  sigma <scalar>;
106  contamination <word>; // pure | slight | full
107  }
108  }
109  }
110  \endverbatim
111 
112  where the entries mean:
113  \table
114  Property | Description | Type | Reqd | Deflt
115  type | Type name: tomiyamaDrag | word | yes | -
116  sigma | Surface tension | scalar | yes | -
117  contamination | Contamination type | word | yes | -
118  \endtable
119 
120  Options for the \c contamination entry:
121  \verbatim
122  pure | Pure systems
123  slight | Slightly contaminated systems
124  full | Fully contaminated systems
125  \endverbatim
126 
127 Note
128  - \f$\mathrm{F}_\mathrm{D}\f$ is weighted with the particle mass/density
129  at the stage of a function return, so that it can later be normalised
130  with the effective mass, if necessary (e.g. when using virtual-mass forces).
131 
132 SourceFiles
133  TomiyamaDragForce.C
134 
135 \*---------------------------------------------------------------------------*/
136 
137 #ifndef TomiyamaDragForce_H
138 #define TomiyamaDragForce_H
139 
140 #include "ParticleForce.H"
141 #include "Enum.H"
142 
143 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
144 
145 namespace Foam
146 {
147 /*---------------------------------------------------------------------------*\
148  Class TomiyamaDragForce Declaration
149 \*---------------------------------------------------------------------------*/
150 
151 template<class CloudType>
152 class TomiyamaDragForce
153 :
154  public ParticleForce<CloudType>
155 {
156 public:
157 
158  // Public Enumerations
159 
160  //- Options for the contamination types
161  enum contaminationType : char
162  {
163  PURE = 0,
164  SLIGHT,
165  FULL
166  };
167 
168  //- Names for the contaminationType options
169  static const Enum<contaminationType> contaminationTypeNames;
170 
171 
172 private:
173 
174  // Private Data
175 
176  //- Surface tension
177  const scalar sigma_;
178 
179  //- Contamination type option
180  const contaminationType contaminationType_;
181 
182 
183  // Private Member Functions
184 
185  //- Drag coefficient multiplied by Reynolds number
186  scalar CdRe(const scalar Re) const;
187 
188 
189 public:
190 
191  //- Runtime type information
192  TypeName("TomiyamaDrag");
193 
194 
195  // Constructors
196 
197  //- Construct from mesh
199  (
200  CloudType& owner,
201  const fvMesh& mesh,
202  const dictionary& dict
203  );
204 
205  //- Copy construct
206  TomiyamaDragForce(const TomiyamaDragForce<CloudType>& df);
208  //- Construct and return a clone
209  virtual autoPtr<ParticleForce<CloudType>> clone() const
210  {
212  (
214  );
215  }
216 
217  //- No copy assignment
219 
221  //- Destructor
222  virtual ~TomiyamaDragForce() = default;
223 
224 
225  // Member Functions
226 
227  // Evaluation
229  //- Calculate the coupled force
230  virtual forceSuSp calcCoupled
231  (
232  const typename CloudType::parcelType& p,
233  const typename CloudType::parcelType::trackingData& td,
234  const scalar dt,
235  const scalar mass,
236  const scalar Re,
237  const scalar muc
238  ) const;
239 };
240 
241 
242 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
243 
244 } // End namespace Foam
245 
246 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
247 
248 #ifdef NoRepository
249  #include "TomiyamaDragForce.C"
250 #endif
251 
252 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
253 
254 #endif
255 
256 // ************************************************************************* //
dictionary dict
DSMCCloud< dsmcParcel > CloudType
wallPoints::trackData td(isBlockedFace, regionToBlockSize)
TomiyamaDragForce(CloudType &owner, const fvMesh &mesh, const dictionary &dict)
Construct from mesh.
"Fully contaminated systems"
Helper container for force Su and Sp terms.
Definition: forceSuSp.H:60
const fvMesh & mesh() const noexcept
Return the mesh database.
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.
void operator=(const TomiyamaDragForce< CloudType > &)=delete
No copy assignment.
TypeName("TomiyamaDrag")
Runtime type information.
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
Particle-drag model wherein drag forces (per unit carrier-fluid velocity) are dynamically computed us...
const CloudType & owner() const noexcept
Return const access to the cloud owner.
virtual autoPtr< ParticleForce< CloudType > > clone() const
Construct and return a clone.
contaminationType
Options for the contamination types.
static const Enum< contaminationType > contaminationTypeNames
Names for the contaminationType options.
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
Definition: HashPtrTable.H:48
volScalarField & p
virtual ~TomiyamaDragForce()=default
Destructor.
Namespace for OpenFOAM.
"Slightly contaminated systems"