parcelClouds.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) 2022-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 Class
25  Foam::parcelClouds
26 
27 Description
28  List of parcel clouds, with the same interface as an individual parcel
29  cloud. Is a mesh object, so mesh change hooks are provided and will be
30  applied to the contained cloud. This is the object that should be
31  constructed by a solver in order to support the coupled simulation of
32  multiple clouds. An fvModel should *not* construct this object, as that
33  would nest two mesh objects. An fvModel should construct the base
34  parcelCloudList instead.
35 
36 SourceFiles
37  parcelClouds.C
38 
39 \*---------------------------------------------------------------------------*/
40 
41 #ifndef parcelClouds_H
42 #define parcelClouds_H
43 
44 #include "DemandDrivenMeshObject.H"
45 #include "parcelCloudList.H"
46 
47 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
48 
49 namespace Foam
50 {
51 
52 
53 /*---------------------------------------------------------------------------*\
54  Class parcelClouds Declaration
55 \*---------------------------------------------------------------------------*/
56 
57 class parcelClouds
58 :
60  <
61  fvMesh,
62  TopoChangeableMeshObject,
63  parcelClouds
64  >,
65  public parcelCloudList
66 {
67 protected:
68 
69  friend class DemandDrivenMeshObject
70  <
71  fvMesh,
74  >;
75 
76  // Protected Constructors
77 
78  //- Construct with given mesh and carrier fields
80  (
81  const fvMesh& mesh,
82  const volScalarField& rho,
83  const volVectorField& U,
84  const volScalarField& mu,
85  const dimensionedVector& g
86  );
87 
88  //- Construct with given mesh and carrier fields and thermo
90  (
91  const fvMesh& mesh,
92  const volScalarField& rho,
93  const volVectorField& U,
94  const dimensionedVector& g,
95  const fluidThermo& carrierThermo
96  );
97 
98 
99 public:
100 
101  // Constructors
102 
103  //- Disallow default bitwise copy construction
104  parcelClouds(const parcelClouds&) = delete;
105 
106  //- Inherit the base New method
108  <
109  fvMesh,
112  >::New;
113 
114 
115  //- Destructor
116  virtual ~parcelClouds();
117 
118 
119  // Member Functions
120 
121  // Mesh changes
122 
123  //- Prepare for mesh update
124  virtual void preUpdateMesh();
125 
126  //- Update for mesh motion
127  virtual bool movePoints();
128 
129  //- Update topology using the given map
130  virtual void topoChange(const polyTopoChangeMap&);
131 
132  //- Update from another mesh using the given map
133  virtual void mapMesh(const polyMeshMap&);
134 
135  //- Redistribute or update using the given distribution map
136  virtual void distribute(const polyDistributionMap&);
137 };
138 
139 
140 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
141 
142 } // End namespace Foam
143 
144 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
145 
146 #endif
147 
148 // ************************************************************************* //
Templated abstract base-class for demand-driven mesh objects used to automate their allocation to the...
static parcelClouds & New(const word &name, const fvMesh &mesh)
Construct and return the named DemandDrivenMeshObject.
Generic GeometricField class.
Base-class for fluid thermodynamic properties.
Definition: fluidThermo.H:57
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:99
List of parcel clouds, with the same interface as an individual parcel cloud. This is the object that...
List of parcel clouds, with the same interface as an individual parcel cloud. Is a mesh object,...
Definition: parcelClouds.H:65
virtual bool movePoints()
Update for mesh motion.
Definition: parcelClouds.C:78
virtual void topoChange(const polyTopoChangeMap &)
Update topology using the given map.
Definition: parcelClouds.C:84
virtual void distribute(const polyDistributionMap &)
Redistribute or update using the given distribution map.
Definition: parcelClouds.C:96
virtual void preUpdateMesh()
Prepare for mesh update.
Definition: parcelClouds.C:72
parcelClouds(const fvMesh &mesh, const volScalarField &rho, const volVectorField &U, const volScalarField &mu, const dimensionedVector &g)
Construct with given mesh and carrier fields.
Definition: parcelClouds.C:31
virtual void mapMesh(const polyMeshMap &)
Update from another mesh using the given map.
Definition: parcelClouds.C:90
virtual ~parcelClouds()
Destructor.
Definition: parcelClouds.C:66
Class containing mesh-to-mesh mapping information after a mesh distribution where we send parts of me...
Class containing mesh-to-mesh mapping information.
Definition: polyMeshMap.H:51
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
U
Definition: pEqn.H:72
const dimensionedScalar mu
Atomic mass unit.
Namespace for OpenFOAM.