sizeDistribution.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) 2017-2019 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::functionObjects::sizeDistribution
28 
29 Description
30  This function object calculates and outputs information about the size
31  distribution of the dispersed phase, such as the number density function or
32  its moments. It is designed to be used exclusively with the population
33  balance modeling functionality of the reactingEulerFoam solvers. It can be
34  applied to a specific cellZone or the entire domain.
35 
36  Example of function object specification:
37  \verbatim
38  box.all.numberDensity.volume.bubbles
39  {
40  type sizeDistribution;
41  libs (reactingEulerFoamFunctionObjects);
42  writeControl outputTime;
43  writeInterval 1;
44  log true;
45  ...
46  functionType numberDensity;
47  abszissaType volume;
48  selectionMode all;
49  populationBalanceModel bubbles;
50  normalize true;
51  }
52  \endverbatim
53 
54 Usage
55  \table
56  Property | Description | Required | Default value
57  type | type name: sizeDistribution | yes |
58  functionType | numberDensity, volumeDensity, numberConcentration,
59  moments | yes |
60  abszissaType | volume, diameter | yes |
61  momentOrder | Write moment up to given order | no | 0
62  selectionMode | Evaluate for cellZone or entire mesh | yes |
63  cellZone | Required if selectionMode is cellZone | |
64  populationBalanceModel | Respective populationBalanceModel | yes |
65  normalize | Normalization | no |
66  \endtable
67 
68 See also
69  Foam::diameterModels::populationBalanceModel
70  Foam::functionObject
71  Foam::functionObjects::fvMeshFunctionObject
72  Foam::functionObjects::writeFile
73 
74 SourceFiles
75  sizeDistribution.C
76 
77 \*---------------------------------------------------------------------------*/
78 
79 #ifndef functionObjects_sizeDistribution_H
80 #define functionObjects_sizeDistribution_H
81 
82 #include "fvMeshFunctionObject.H"
83 #include "writeFile.H"
84 #include "populationBalanceModel.H"
85 #include "Enum.H"
86 
87 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
88 
89 namespace Foam
90 {
91 
92 // Forward declaration of classes
93 class fvMesh;
94 
95 namespace functionObjects
96 {
97 
98 /*---------------------------------------------------------------------------*\
99  Class sizeDistribution Declaration
100 \*---------------------------------------------------------------------------*/
101 
102 class sizeDistribution
103 :
104  public fvMeshFunctionObject,
105  public writeFile
106 {
107 
108 public:
109 
110  // Public data types
111 
112  //- Selection mode type enumeration
113  enum selectionModeTypes
114  {
115  rtCellZone,
116  rtAll
117  };
118 
119  //- Selection mode type names
120  static const Enum<selectionModeTypes> selectionModeTypeNames_;
121 
122 
123  //- Function type enumeration
124  enum functionTypes
125  {
126  ftNdf,
127  ftVdf,
128  ftNc,
129  ftMom
130  };
131 
132  //- Function type names
133  static const Enum<functionTypes> functionTypeNames_;
134 
135 
136  //- abszissa type enumeration
137  enum abszissaTypes
138  {
139  atDiameter,
140  atVolume,
141  };
142 
143  //- Abszissa type names
145 
146 
147 protected:
148 
149  // Protected data
150 
151  //- Construction dictionary
153 
154  //- Selection mode type
156 
157  //- Name of selection
159 
160  //- Function type
162 
163  //- Abszissa type
165 
166  //- Global number of cells
167  label nCells_;
168 
169  //- Local list of cell IDs
171 
172  //- Total volume of the evaluated selection
173  scalar volume_;
174 
175  //- Optionally write the volume of the sizeDistribution
176  bool writeVolume_;
177 
178  //- PopulationBalance
180 
181  //- Number concentrations
183 
184  //- Write moments up to specified order with respect to abszissaType
185  label momentOrder_;
186 
187  //- Normalization switch
188  const Switch normalize_;
189 
190  //- Sum of number concentrations
191  scalar sumN_;
192 
193  //- Volumertic sum
194  scalar sumV_;
195 
196 
197  // Protected Member Functions
198 
199  //- Initialise, e.g. cell addressing
200  void initialise(const dictionary& dict);
201 
202  //- Set cells to evaluate based on a cell zone
204 
205  //- Calculate and return volume of the evaluated cell zone
206  scalar volume() const;
207 
208  //- Combine fields from all processor domains into single field
210 
211  //- Filter field according to cellIds
213 
214  //- Output file header information
215  void writeFileHeader(const label i = 0);
216 
217 
218 public:
219 
220  //- Runtime type information
221  TypeName("sizeDistribution");
222 
223 
224  // Constructors
225 
226  //- Construct from Time and dictionary
228  (
229  const word& name,
230  const Time& runTime,
231  const dictionary& dict
232  );
233 
234 
235  //- Destructor
236  virtual ~sizeDistribution();
237 
238 
239  // Member Functions
240 
241  //- Return the reference to the construction dictionary
242  const dictionary& dict() const
243  {
244  return dict_;
245  }
246 
247  //- Return the local list of cell IDs
248  const labelList& cellId() const
249  {
250  return cellId_;
251  }
252 
253  //- Helper function to return the reference to the mesh
254  const fvMesh& mesh() const
255  {
256  return refCast<const fvMesh>(obr_);
257  }
258 
259  //- Read from dictionary
260  virtual bool read(const dictionary& dict);
261 
262  //- Execute
263  virtual bool execute();
264 
265  //- Write
266  virtual bool write();
267 };
268 
269 
270 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
271 
272 } // End namespace functionObjects
273 } // End namespace Foam
274 
275 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
276 
277 #endif
278 
279 // ************************************************************************* //
Foam::functionObjects::sizeDistribution::normalize_
const Switch normalize_
Definition: sizeDistribution.H:230
populationBalanceModel.H
runTime
engineTime & runTime
Definition: createEngineTime.H:13
writeFile.H
Foam::functionObjects::regionFunctionObject::obr_
const objectRegistry & obr_
Definition: regionFunctionObject.H:98
Foam::functionObjects::sizeDistribution::atDiameter
@ atDiameter
Definition: sizeDistribution.H:181
Foam::Switch
A simple wrapper around bool so that it can be read as a word: true/false, on/off,...
Definition: Switch.H:77
Foam::Enum< selectionModeTypes >
Foam::Time
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
Definition: Time.H:69
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:63
Foam::functionObjects::sizeDistribution::~sizeDistribution
virtual ~sizeDistribution()
Definition: sizeDistribution.C:380
fvMeshFunctionObject.H
Foam::functionObjects::sizeDistribution::rtCellZone
@ rtCellZone
Definition: sizeDistribution.H:157
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:57
Foam::functionObjects::sizeDistribution::writeVolume_
bool writeVolume_
Definition: sizeDistribution.H:218
Foam::functionObjects::sizeDistribution::ftNdf
@ ftNdf
Definition: sizeDistribution.H:168
Foam::functionObjects::sizeDistribution::read
virtual bool read(const dictionary &dict)
Definition: sizeDistribution.C:386
Foam::functionObjects::sizeDistribution::rtAll
@ rtAll
Definition: sizeDistribution.H:158
Foam::functionObjects::sizeDistribution::combineFields
void combineFields(scalarField &field)
Definition: sizeDistribution.C:213
Foam::functionObjects::fvMeshFunctionObject
Specialization of Foam::functionObject for an Foam::fvMesh, providing a reference to the Foam::fvMesh...
Definition: fvMeshFunctionObject.H:60
Foam::functionObjects::sizeDistribution::volume_
scalar volume_
Definition: sizeDistribution.H:215
Foam::functionObjects::sizeDistribution::N_
List< scalar > N_
Definition: sizeDistribution.H:224
Foam::functionObjects::sizeDistribution::TypeName
TypeName("sizeDistribution")
Foam::functionObjects::sizeDistribution::dict_
dictionary dict_
Definition: sizeDistribution.H:194
Foam::functionObjects::sizeDistribution
This function object calculates and outputs information about the size distribution of the dispersed ...
Definition: sizeDistribution.H:144
Foam::functionObjects::sizeDistribution::sumV_
scalar sumV_
Definition: sizeDistribution.H:236
Foam::functionObjects::sizeDistribution::functionTypeNames_
static const Enum< functionTypes > functionTypeNames_
Definition: sizeDistribution.H:175
Foam::functionObjects::sizeDistribution::selectionModeTypeNames_
static const Enum< selectionModeTypes > selectionModeTypeNames_
Definition: sizeDistribution.H:162
Foam::functionObjects::sizeDistribution::functionTypes
functionTypes
Definition: sizeDistribution.H:166
Foam::Field
Generic templated field type.
Definition: Field.H:59
Foam::functionObjects::sizeDistribution::setCellZoneCells
void setCellZoneCells()
Definition: sizeDistribution.C:161
Foam::functionObjects::sizeDistribution::sumN_
scalar sumN_
Definition: sizeDistribution.H:233
Foam::functionObjects::sizeDistribution::cellId
const labelList & cellId() const
Definition: sizeDistribution.H:290
Foam::functionObjects::sizeDistribution::ftNc
@ ftNc
Definition: sizeDistribution.H:170
field
rDeltaTY field()
Foam::functionObjects::sizeDistribution::volume
scalar volume() const
Definition: sizeDistribution.C:207
Foam::functionObjects::sizeDistribution::selectionModeTypes
selectionModeTypes
Definition: sizeDistribution.H:155
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:119
Foam::diameterModels::populationBalanceModel
Class that solves the univariate population balance equation by means of a class method (also called ...
Definition: populationBalanceModel.H:175
Foam::functionObjects::sizeDistribution::initialise
void initialise(const dictionary &dict)
Definition: sizeDistribution.C:77
Foam::functionObjects::sizeDistribution::filterField
tmp< scalarField > filterField(const scalarField &field) const
Definition: sizeDistribution.C:235
Foam::functionObjects::sizeDistribution::nCells_
label nCells_
Definition: sizeDistribution.H:209
Foam::fvMesh
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:81
Foam
Definition: atmBoundaryLayer.C:26
Foam::functionObjects::sizeDistribution::sizeDistribution
sizeDistribution(const word &name, const Time &runTime, const dictionary &dict)
Definition: sizeDistribution.C:339
Foam::functionObjects::sizeDistribution::selectionModeType_
selectionModeTypes selectionModeType_
Definition: sizeDistribution.H:197
Foam::functionObjects::sizeDistribution::dict
const dictionary & dict() const
Definition: sizeDistribution.H:284
Foam::functionObjects::sizeDistribution::atVolume
@ atVolume
Definition: sizeDistribution.H:182
Foam::functionObjects::sizeDistribution::write
virtual bool write()
Definition: sizeDistribution.C:408
Foam::functionObjects::sizeDistribution::abszissaTypeNames_
static const Enum< abszissaTypes > abszissaTypeNames_
Definition: sizeDistribution.H:186
Foam::functionObjects::sizeDistribution::abszissaType_
abszissaTypes abszissaType_
Definition: sizeDistribution.H:206
Foam::functionObject::name
const word & name() const noexcept
Definition: functionObject.C:136
Foam::functionObjects::sizeDistribution::abszissaTypes
abszissaTypes
Definition: sizeDistribution.H:179
Foam::List
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Definition: BitOps.H:58
Foam::functionObjects::sizeDistribution::selectionModeTypeName_
word selectionModeTypeName_
Definition: sizeDistribution.H:200
Foam::functionObjects::sizeDistribution::cellId_
labelList cellId_
Definition: sizeDistribution.H:212
Foam::functionObjects::sizeDistribution::ftVdf
@ ftVdf
Definition: sizeDistribution.H:169
Foam::functionObjects::sizeDistribution::ftMom
@ ftMom
Definition: sizeDistribution.H:171
Foam::functionObjects::sizeDistribution::mesh
const fvMesh & mesh() const
Definition: sizeDistribution.H:296
Foam::functionObjects::writeFile
Base class for writing single files from the function objects.
Definition: writeFile.H:115
Foam::functionObjects::sizeDistribution::writeFileHeader
void writeFileHeader(const label i=0)
Definition: sizeDistribution.C:244
Foam::functionObjects::sizeDistribution::functionType_
functionTypes functionType_
Definition: sizeDistribution.H:203
Foam::functionObjects::sizeDistribution::execute
virtual bool execute()
Definition: sizeDistribution.C:402
Foam::functionObjects::sizeDistribution::momentOrder_
label momentOrder_
Definition: sizeDistribution.H:227
Foam::functionObjects::sizeDistribution::popBal_
const Foam::diameterModels::populationBalanceModel & popBal_
Definition: sizeDistribution.H:221
Enum.H