incompressibleTwoPhaseInteractingMixture.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) 2014-2015 OpenFOAM Foundation
9  Copyright (C) 2019 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::incompressibleTwoPhaseInteractingMixture
29 
30 Description
31  A two-phase incompressible transportModel for interacting phases
32  requiring the direct evaluation of the mixture viscosity,
33  e.g. activated sludge or slurry.
34 
35 SourceFiles
36  incompressibleTwoPhaseInteractingMixture.C
37 
38 \*---------------------------------------------------------------------------*/
39 
40 #ifndef incompressibleTwoPhaseInteractingMixture_H
41 #define incompressibleTwoPhaseInteractingMixture_H
42 
45 #include "mixtureViscosityModel.H"
46 #include "twoPhaseMixture.H"
47 #include "IOdictionary.H"
48 
49 
50 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
51 
52 namespace Foam
53 {
54 
55 /*---------------------------------------------------------------------------*\
56  Class incompressibleTwoPhaseInteractingMixture Declaration
57 \*---------------------------------------------------------------------------*/
58 
60 :
61  public IOdictionary,
63  public twoPhaseMixture
64 {
65 protected:
66 
67  // Protected data
68 
71 
74 
75  //- Optional diameter of the dispersed phase particles
77 
78  //- Optional maximum dispersed phase-fraction (e.g. packing limit)
79  scalar alphaMax_;
80 
82  const surfaceScalarField& phi_;
83 
85 
86 
87 public:
88 
89  TypeName("incompressibleTwoPhaseInteractingMixture");
90 
91 
92  // Constructors
93 
94  //- Construct from components
96  (
97  const volVectorField& U,
98  const surfaceScalarField& phi
99  );
100 
101 
102  //- Destructor
103  virtual ~incompressibleTwoPhaseInteractingMixture() = default;
104 
105 
106  // Member Functions
107 
108  //- Return const-access to the mixture viscosityModel
109  const mixtureViscosityModel& muModel() const
110  {
111  return *muModel_;
112  }
113 
114  //- Return const-access to the continuous-phase viscosityModel
115  const viscosityModel& nucModel() const
116  {
117  return *nucModel_;
118  }
119 
120  //- Return const-access to the dispersed-phase density
121  const dimensionedScalar& rhod() const
122  {
123  return rhod_;
124  }
125 
126  //- Return const-access to continuous-phase density
127  const dimensionedScalar& rhoc() const
128  {
129  return rhoc_;
130  };
131 
132  //- Return the diameter of the dispersed-phase particles
133  const dimensionedScalar& dd() const
134  {
135  return dd_;
136  }
137 
138  //- Optional maximum phase-fraction (e.g. packing limit)
139  // Defaults to 1
140  scalar alphaMax() const
141  {
142  return alphaMax_;
143  }
144 
145  //- Return const-access to the mixture velocity
146  const volVectorField& U() const
147  {
148  return U_;
149  }
150 
151  //- Return the dynamic mixture viscosity
152  tmp<volScalarField> mu() const
153  {
154  return mu_;
155  }
156 
157  //- Return the dynamic mixture viscosity for patch
158  virtual tmp<scalarField> mu(const label patchi) const
159  {
160  return mu_.boundaryField()[patchi];
161  }
162 
163  //- Return the mixture density
164  virtual tmp<volScalarField> rho() const
165  {
166  return alpha1_*rhod_ + alpha2_*rhoc_;
167  }
168 
169  //- Return the mixture density for patch
170  virtual tmp<scalarField> rho(const label patchi) const
171  {
172  return
173  alpha1_.boundaryField()[patchi]*rhod_.value()
174  + alpha2_.boundaryField()[patchi]*rhoc_.value();
175  }
176 
177  //- Return the mixture viscosity
178  virtual tmp<volScalarField> nu() const
179  {
180  return mu_/rho();
181  }
182 
183  //- Return the mixture viscosity for patch
184  virtual tmp<scalarField> nu(const label patchi) const
185  {
186  return mu_.boundaryField()[patchi]/rho(patchi);
187  }
188 
189  //- Correct the laminar viscosity
190  virtual void correct()
191  {
192  mu_ = muModel_->mu(rhoc_*nucModel_->nu());
193  }
194 
195  //- Read base transportProperties dictionary
196  virtual bool read();
197 };
198 
199 
200 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
201 
202 } // End namespace Foam
203 
204 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
205 
206 #endif
207 
208 // ************************************************************************* //
Foam::IOdictionary
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
Definition: IOdictionary.H:54
Foam::incompressibleTwoPhaseInteractingMixture::mu_
volScalarField mu_
Definition: incompressibleTwoPhaseInteractingMixture.H:83
Foam::viscosityModel
An abstract base class for incompressible viscosityModels.
Definition: viscosityModel.H:67
Foam::incompressibleTwoPhaseInteractingMixture::rho
virtual tmp< volScalarField > rho() const
Return the mixture density.
Definition: incompressibleTwoPhaseInteractingMixture.H:163
Foam::incompressibleTwoPhaseInteractingMixture::alphaMax
scalar alphaMax() const
Optional maximum phase-fraction (e.g. packing limit)
Definition: incompressibleTwoPhaseInteractingMixture.H:139
Foam::incompressibleTwoPhaseInteractingMixture::rhoc_
dimensionedScalar rhoc_
Definition: incompressibleTwoPhaseInteractingMixture.H:72
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:61
Foam::incompressibleTwoPhaseInteractingMixture::correct
virtual void correct()
Correct the laminar viscosity.
Definition: incompressibleTwoPhaseInteractingMixture.H:189
Foam::mixtureViscosityModel
An abstract base class for incompressible mixtureViscosityModels.
Definition: mixtureViscosityModel.H:62
Foam::incompressibleTwoPhaseInteractingMixture::U_
const volVectorField & U_
Definition: incompressibleTwoPhaseInteractingMixture.H:80
Foam::incompressibleTwoPhaseInteractingMixture::mu
tmp< volScalarField > mu() const
Return the dynamic mixture viscosity.
Definition: incompressibleTwoPhaseInteractingMixture.H:151
Foam::incompressibleTwoPhaseInteractingMixture::TypeName
TypeName("incompressibleTwoPhaseInteractingMixture")
Foam::dimensioned::value
const Type & value() const
Return const reference to value.
Definition: dimensionedType.C:434
Foam::twoPhaseMixture::alpha1_
volScalarField alpha1_
Definition: twoPhaseMixture.H:59
Foam::incompressibleTwoPhaseInteractingMixture::incompressibleTwoPhaseInteractingMixture
incompressibleTwoPhaseInteractingMixture(const volVectorField &U, const surfaceScalarField &phi)
Construct from components.
Foam::incompressibleTwoPhaseInteractingMixture::read
virtual bool read()
Read base transportProperties dictionary.
Foam::twoPhaseMixture::alpha2_
volScalarField alpha2_
Definition: twoPhaseMixture.H:60
Foam::incompressibleTwoPhaseInteractingMixture::muModel_
autoPtr< mixtureViscosityModel > muModel_
Definition: incompressibleTwoPhaseInteractingMixture.H:68
Foam::twoPhaseMixture
A two-phase mixture model.
Definition: twoPhaseMixture.H:50
Foam::incompressibleTwoPhaseInteractingMixture::~incompressibleTwoPhaseInteractingMixture
virtual ~incompressibleTwoPhaseInteractingMixture()=default
Destructor.
Foam::incompressibleTwoPhaseInteractingMixture::alphaMax_
scalar alphaMax_
Optional maximum dispersed phase-fraction (e.g. packing limit)
Definition: incompressibleTwoPhaseInteractingMixture.H:78
mixtureViscosityModel.H
Foam::incompressibleTwoPhaseInteractingMixture::mu
virtual tmp< scalarField > mu(const label patchi) const
Return the dynamic mixture viscosity for patch.
Definition: incompressibleTwoPhaseInteractingMixture.H:157
Foam::incompressibleTwoPhaseInteractingMixture::phi_
const surfaceScalarField & phi_
Definition: incompressibleTwoPhaseInteractingMixture.H:81
phi
surfaceScalarField & phi
Definition: setRegionFluidFields.H:8
Foam::incompressibleTwoPhaseInteractingMixture::dd_
dimensionedScalar dd_
Optional diameter of the dispersed phase particles.
Definition: incompressibleTwoPhaseInteractingMixture.H:75
Foam::dimensioned< scalar >
Foam::incompressibleTwoPhaseInteractingMixture::nucModel_
autoPtr< viscosityModel > nucModel_
Definition: incompressibleTwoPhaseInteractingMixture.H:69
Foam::incompressibleTwoPhaseInteractingMixture::muModel
const mixtureViscosityModel & muModel() const
Return const-access to the mixture viscosityModel.
Definition: incompressibleTwoPhaseInteractingMixture.H:108
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::incompressibleTwoPhaseInteractingMixture::rhod
const dimensionedScalar & rhod() const
Return const-access to the dispersed-phase density.
Definition: incompressibleTwoPhaseInteractingMixture.H:120
Foam::incompressibleTwoPhaseInteractingMixture::nu
virtual tmp< scalarField > nu(const label patchi) const
Return the mixture viscosity for patch.
Definition: incompressibleTwoPhaseInteractingMixture.H:183
Foam::incompressibleTwoPhaseInteractingMixture::rhod_
dimensionedScalar rhod_
Definition: incompressibleTwoPhaseInteractingMixture.H:71
Foam::incompressibleTwoPhaseInteractingMixture::U
const volVectorField & U() const
Return const-access to the mixture velocity.
Definition: incompressibleTwoPhaseInteractingMixture.H:145
viscosityModel.H
Foam::incompressibleTwoPhaseInteractingMixture::nucModel
const viscosityModel & nucModel() const
Return const-access to the continuous-phase viscosityModel.
Definition: incompressibleTwoPhaseInteractingMixture.H:114
IOdictionary.H
Foam::autoPtr
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: HashPtrTable.H:53
Foam::compressibleTransportModel
Base-class for all transport models used by the compressible turbulence models.
Definition: compressibleTransportModel.H:53
Foam::incompressibleTwoPhaseInteractingMixture::nu
virtual tmp< volScalarField > nu() const
Return the mixture viscosity.
Definition: incompressibleTwoPhaseInteractingMixture.H:177
compressibleTransportModel.H
Foam::incompressibleTwoPhaseInteractingMixture::dd
const dimensionedScalar & dd() const
Return the diameter of the dispersed-phase particles.
Definition: incompressibleTwoPhaseInteractingMixture.H:132
Foam::incompressibleTwoPhaseInteractingMixture
A two-phase incompressible transportModel for interacting phases requiring the direct evaluation of t...
Definition: incompressibleTwoPhaseInteractingMixture.H:58
Foam::GeometricField
Generic GeometricField class.
Definition: areaFieldsFwd.H:53
Foam::incompressibleTwoPhaseInteractingMixture::rhoc
const dimensionedScalar & rhoc() const
Return const-access to continuous-phase density.
Definition: incompressibleTwoPhaseInteractingMixture.H:126
Foam::incompressibleTwoPhaseInteractingMixture::rho
virtual tmp< scalarField > rho(const label patchi) const
Return the mixture density for patch.
Definition: incompressibleTwoPhaseInteractingMixture.H:169
twoPhaseMixture.H
Foam::GeometricField::boundaryField
const Boundary & boundaryField() const
Return const-reference to the boundary field.
Definition: GeometricFieldI.H:62