dispersedDragModel.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2011-2023 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 \*---------------------------------------------------------------------------*/
25 
26 #include "dispersedDragModel.H"
27 #include "phaseSystem.H"
28 #include "noSwarm.H"
29 
30 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
31 
33 (
34  const dictionary& dict,
35  const phaseInterface& interface,
36  const bool registerObject
37 )
38 :
39  dragModel(dict, interface, registerObject),
40  interface_(interface.modelCast<dragModel, dispersedPhaseInterface>()),
41  swarmCorrection_
42  (
43  dict.found("swarmCorrection")
44  ? swarmCorrection::New(dict.subDict("swarmCorrection"), interface).ptr()
45  : new swarmCorrections::noSwarm(dict, interface)
46  )
47 {}
48 
49 
50 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
51 
53 {}
54 
55 
56 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
57 
59 {
60  return
61  0.75
62  *CdRe()
63  *swarmCorrection_->Cs()
64  *interface_.continuous().rho()
65  *interface_.continuous().thermo().nu()
66  /sqr(interface_.dispersed().d());
67 }
68 
69 
71 {
72  return
73  max
74  (
75  interface_.dispersed(),
76  interface_.dispersed().residualAlpha()
77  )*Ki();
78 }
79 
80 
83 {
84  return
85  max
86  (
87  fvc::interpolate(interface_.dispersed()),
88  interface_.dispersed().residualAlpha()
89  )*fvc::interpolate(Ki());
90 }
91 
92 
93 // ************************************************************************* //
bool found
A list of keyword definitions, which are a keyword followed by any number of values (e....
Definition: dictionary.H:160
Class to represent a interface between phases where one phase is considered dispersed within the othe...
Model for drag between phases.
Definition: dragModel.H:55
dispersedDragModel(const dictionary &dict, const phaseInterface &interface, const bool registerObject)
virtual tmp< surfaceScalarField > Kf() const
Return the drag coefficient Kf.
virtual tmp< volScalarField > Ki() const
Return the phase-intensive drag coefficient Ki.
virtual tmp< volScalarField > K() const
Return the drag coefficient K.
Class to represent an interface between phases. Derivations can further specify the configuration of ...
Drag model modifier to take into account large fractions (swarms) of the dispersed phase....
A class for managing temporary objects.
Definition: tmp.H:55
autoPtr< CompressibleMomentumTransportModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const viscosity &viscosity)
static tmp< SurfaceField< Type > > interpolate(const VolField< Type > &tvf, const surfaceScalarField &faceFlux, Istream &schemeData)
Interpolate field onto faces using scheme given by Istream.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
layerAndWeight max(const layerAndWeight &a, const layerAndWeight &b)
dictionary dict