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 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 :
59  public DemandDrivenMeshObject<fvMesh, UpdateableMeshObject, parcelClouds>,
60  public parcelCloudList
61 {
62 protected:
63 
64  friend class DemandDrivenMeshObject
65  <
66  fvMesh,
69  >;
70 
71  // Protected Constructors
72 
73  //- Construct with given mesh and carrier fields
75  (
76  const fvMesh& mesh,
77  const volScalarField& rho,
78  const volVectorField& U,
79  const volScalarField& mu,
80  const dimensionedVector& g
81  );
82 
83  //- Construct with given mesh and carrier fields and thermo
85  (
86  const fvMesh& mesh,
87  const volScalarField& rho,
88  const volVectorField& U,
89  const dimensionedVector& g,
90  const fluidThermo& carrierThermo
91  );
92 
93 
94 public:
95 
96  // Constructors
97 
98  //- Disallow default bitwise copy construction
99  parcelClouds(const parcelClouds&) = delete;
100 
101  //- Inherit the base New method
103  <
104  fvMesh,
107  >::New;
108 
109 
110  //- Destructor
111  virtual ~parcelClouds();
112 
113 
114  // Member Functions
115 
116  // Mesh changes
117 
118  //- Prepare for mesh update
119  virtual void preUpdateMesh();
120 
121  //- Update for mesh motion
122  virtual bool movePoints();
123 
124  //- Update topology using the given map
125  virtual void topoChange(const polyTopoChangeMap&);
126 
127  //- Update from another mesh using the given map
128  virtual void mapMesh(const polyMeshMap&);
129 
130  //- Redistribute or update using the given distribution map
131  virtual void distribute(const polyDistributionMap&);
132 };
133 
134 
135 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
136 
137 } // End namespace Foam
138 
139 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
140 
141 #endif
142 
143 // ************************************************************************* //
Templated abstract base-class for demand-driven mesh objects used to automate their allocation to the...
Generic GeometricField class.
UpdateableMeshObject(regIOobject &io, const fvMesh &mesh)
Definition: MeshObjects.H:150
Base-class for fluid thermodynamic properties.
Definition: fluidThermo.H:57
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:101
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:60
virtual bool movePoints()
Update for mesh motion.
Definition: parcelClouds.C:72
virtual void topoChange(const polyTopoChangeMap &)
Update topology using the given map.
Definition: parcelClouds.C:78
virtual void distribute(const polyDistributionMap &)
Redistribute or update using the given distribution map.
Definition: parcelClouds.C:90
virtual void preUpdateMesh()
Prepare for mesh update.
Definition: parcelClouds.C:66
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:84
virtual ~parcelClouds()
Destructor.
Definition: parcelClouds.C:60
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.