RemoveParcels.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) 2020 OpenCFD Ltd.
9-------------------------------------------------------------------------------
10License
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
26Class
27 Foam::RemoveParcels
28
29Group
30 grpLagrangianIntermediateFunctionObjects
31
32Description
33 Removes parcels that hit user-specified face zone faces
34
35 Example usage:
36 \verbatim
37 removeParcels1
38 {
39 type removeParcels;
40 log yes;
41 resetOnWrite no;
42 resetOnStart no;
43 faceZones (cycLeft cycRight);
44 }
45 \endverbatim
46
47SourceFiles
48 RemoveParcels.C
49
50\*---------------------------------------------------------------------------*/
51
52#ifndef RemoveParcels_H
53#define RemoveParcels_H
54
55#include "CloudFunctionObject.H"
56
57// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
58
59namespace Foam
60{
61
62class OFstream;
63
64/*---------------------------------------------------------------------------*\
65 Class RemoveParcels Declaration
66\*---------------------------------------------------------------------------*/
67
68template<class CloudType>
69class RemoveParcels
70:
71 public CloudFunctionObject<CloudType>
72{
73 //- Convenience typedef for parcel type
74 typedef typename CloudType::parcelType parcelType;
75
76
77 // Private Data
78
79 //- Face zone IDs
80 labelList faceZoneIDs_;
81
82 //- Number of parcels removed per face zone
83 List<label> nParcels_;
84
85 //- Mass of parcels removed per face zone
86 List<scalar> mass_;
87
88 //- Type ID of parcels to remove; all selected if not set (<0)
89 label typeId_;
90
91 //- Flag to indicate whether data should be written to file
92 bool log_;
93
94 //- Flag to reset counters on write
95 bool resetOnWrite_;
96
97 //- Flag to reset on start
98 bool resetOnStart_;
99
100 //- Output file pointer per zone
101 PtrList<OFstream> outputFilePtr_;
102
103
104 // Private Member Functions
105
106 //- Helper function to create log files
107 void makeLogFile
108 (
109 const word& zoneName,
110 const label zoneI,
111 const label nFaces,
112 const scalar totArea
113 );
114
115
116protected:
117
118 // Protected Member Functions
119
120 //- Write post-processing info
121 void write();
122
123
124public:
125
126 //- Runtime type information
127 TypeName("removeParcels");
128
129
130 // Constructors
131
132 //- Construct from dictionary
134 (
135 const dictionary& dict,
137 const word& modelName
138 );
139
140 //- Construct copy
142
143 //- Construct and return a clone
145 {
147 (
148 new RemoveParcels<CloudType>(*this)
149 );
150 }
151
152
153 //- Destructor
154 virtual ~RemoveParcels() = default;
155
156
157 // Member Functions
158
159 //- Post-evolve hook
160 virtual void postEvolve
161 (
162 const typename parcelType::trackingData& td
163 );
164
165 //- Post-face hook
166 virtual void postFace(const parcelType& p, bool& keepParticle);
167};
168
169
170// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
171
172} // End namespace Foam
173
174// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
175
176#ifdef NoRepository
177 #include "RemoveParcels.C"
178#endif
179
180// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
181
182#endif
183
184// ************************************************************************* //
Templated cloud function object base class.
const CloudType & owner() const
Return const access to the owner cloud.
Templated base class for dsmc cloud.
Definition: DSMCCloud.H:75
ParcelType parcelType
Type of parcel the cloud was instantiated for.
Definition: DSMCCloud.H:220
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers....
Definition: PtrList.H:73
Removes parcels that hit user-specified face zone faces.
Definition: RemoveParcels.H:71
virtual autoPtr< CloudFunctionObject< CloudType > > clone() const
Construct and return a clone.
virtual ~RemoveParcels()=default
Destructor.
virtual void postEvolve(const typename parcelType::trackingData &td)
Post-evolve hook.
Definition: RemoveParcels.C:80
void write()
Write post-processing info.
TypeName("removeParcels")
Runtime type information.
virtual void postFace(const parcelType &p, bool &keepParticle)
Post-face hook.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: autoPtr.H:66
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:126
Class used to pass data into container.
const dictionary & dict() const
Return const access to the cloud dictionary.
Definition: subModelBase.C:113
const word & modelName() const
Return const access to the name of the sub-model.
Definition: subModelBase.C:107
A class for handling words, derived from Foam::string.
Definition: word.H:68
volScalarField & p
const labelList nFaces(UPstream::listGatherValues< label >(aMesh.nFaces()))
Namespace for OpenFOAM.
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition: typeInfo.H:73