SecondaryPropertyModel.H
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) 2019-2025 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 Class
25  Foam::diameterModels::SecondaryPropertyModel
26 
27 Description
28  Base class for modelling evolution of secondary representative properties
29  of a size class. By default, transport between size classes due to
30  coalescence and breakup conserve the property. This behaviour can be
31  overridden in a derived class.
32 
33 See also
34  Foam::diameterModels::sizeGroup
35  Foam::diameterModels::populationBalanceModel
36 
37 SourceFiles
38  SecondaryPropertyModel.C
39 
40 \*---------------------------------------------------------------------------*/
41 
42 #ifndef SecondaryPropertyModel_H
43 #define SecondaryPropertyModel_H
44 
45 #include "sizeGroup.H"
46 
47 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
48 
49 namespace Foam
50 {
51 namespace diameterModels
52 {
53 
54 /*---------------------------------------------------------------------------*\
55  Class SecondaryPropertyModel Declaration
56 \*---------------------------------------------------------------------------*/
57 
58 template<class ModelType>
60 :
61  public ModelType
62 {
63 private:
64 
65  // Private Member Functions
66 
67  //- Return the secondary property model of a given size group
68  const SecondaryPropertyModel<ModelType>& correspondingModel
69  (
70  const sizeGroup& fi
71  ) const;
72 
73 
74 public:
75 
76  //- Runtime type information
77  virtual const word& type() const = 0;
78 
79 
80  // Constructors
81 
82  //- Construct from sizeGroup
84 
85  //- Disallow default bitwise copy construction
87  (
89  ) = delete;
90 
91 
92  //- Destructor
93  virtual ~SecondaryPropertyModel();
94 
95 
96  // Member Functions
97 
98  // Access
99 
100  //- Return the secondary property model of a given size group
102  (
103  const sizeGroup& fi
104  );
105 
106  //- Return reference to secondary property field
107  virtual const volScalarField& fld() const = 0;
108 
109  //- Access to secondary property source
110  virtual volScalarField::Internal& src() = 0;
111 
112 
113  // Edit
114 
115  //- Add coalescence contribution to secondary property source
116  virtual void addCoalescence
117  (
119  const sizeGroup& fj,
120  const sizeGroup& fk
121  );
122 
123  //- Add breakup contribution to secondary property source
124  virtual void addBreakup
125  (
127  const sizeGroup& fj
128  );
129 
130  //- Reset secondary property source
131  virtual void reset();
132 
133 
134  // Member Operators
135 
136  //- Disallow default bitwise assignment
137  void operator=(const SecondaryPropertyModel<ModelType>&) = delete;
138 };
139 
140 
141 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
142 
143 } // End namespace diameterModels
144 } // End namespace Foam
145 
146 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
147 
148 #ifdef NoRepository
149  #include "SecondaryPropertyModel.C"
150 #endif
151 
152 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
153 
154 #endif
155 
156 // ************************************************************************* //
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Generic GeometricField class.
Base class for modelling evolution of secondary representative properties of a size class....
virtual const word & type() const =0
Runtime type information.
virtual volScalarField::Internal & src()=0
Access to secondary property source.
void operator=(const SecondaryPropertyModel< ModelType > &)=delete
Disallow default bitwise assignment.
static const SecondaryPropertyModel< ModelType > & model(const sizeGroup &fi)
Return the secondary property model of a given size group.
virtual void addCoalescence(const volScalarField::Internal &Su, const sizeGroup &fj, const sizeGroup &fk)
Add coalescence contribution to secondary property source.
SecondaryPropertyModel(const sizeGroup &group)
Construct from sizeGroup.
virtual void reset()
Reset secondary property source.
virtual const volScalarField & fld() const =0
Return reference to secondary property field.
virtual void addBreakup(const volScalarField::Internal &Su, const sizeGroup &fj)
Add breakup contribution to secondary property source.
Single size class fraction field representing a fixed particle volume as defined by the user through ...
Definition: sizeGroup.H:96
A class for handling words, derived from string.
Definition: word.H:62
const char *const group
Group name for atomic constants.
tmp< VolField< Type > > Su(const VolField< Type > &su, const VolField< Type > &vf)
Definition: fvcSup.C:44
Namespace for OpenFOAM.