indexedParticle.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) 2011-2017 OpenFOAM Foundation
9  Copyright (C) 2019 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 Class
28  Foam::indexedParticle
29 
30 Description
31  Adds label index to base particle
32 
33 SourceFiles
34  indexedParticle.H
35 
36 \*---------------------------------------------------------------------------*/
37 
38 #ifndef Foam_indexedParticle_H
39 #define Foam_indexedParticle_H
40 
41 #include "particle.H"
42 #include "IOstream.H"
43 #include "autoPtr.H"
44 
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 
47 namespace Foam
48 {
49 
50 /*---------------------------------------------------------------------------*\
51  Class indexedParticle Declaration
52 \*---------------------------------------------------------------------------*/
53 
54 class indexedParticle
55 :
56  public particle
57 {
58  // Private Data
59 
60  label index_;
61 
62 
63 public:
64 
65  // Constructors
66 
67  //- Construct from a position and a cell.
68  // Searches for the rest of the required topology.
69  // Other properties are zero initialised.
71  (
72  const polyMesh& mesh,
73  const vector& position,
74  const label celli = -1,
75  const label index = 0
76  )
77  :
78  particle(mesh, position, celli),
79  index_(index)
80  {}
81 
82  //- Construct from components
84  (
85  const polyMesh& mesh,
86  const barycentric& coordinates,
87  const label celli,
88  const label tetFacei,
89  const label tetPti,
90  const label index = 0
91  )
92  :
93  particle(mesh, coordinates, celli, tetFacei, tetPti),
94  index_(index)
95  {}
96 
97  //- Construct from Istream
99  (
100  const polyMesh& mesh,
101  Istream& is,
102  bool readFields = true,
103  bool newFormat = true
104  )
105  :
106  particle(mesh, is, readFields, newFormat)
107  {}
108 
109  //- Construct as a copy
111  :
112  particle(p)
113  {}
115  //- Construct and return a clone
116  virtual autoPtr<particle> clone() const
117  {
118  return autoPtr<particle>(new indexedParticle(*this));
119  }
120 
121 
122  // Member Functions
123 
124  label index() const noexcept { return index_; }
125 
126  label& index() noexcept { return index_; }
127 };
128 
129 
130 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
131 
132 } // End namespace Foam
133 
134 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
135 
136 #endif
137 
138 // ************************************************************************* //
virtual autoPtr< particle > clone() const
Construct and return a clone.
const barycentric & coordinates() const noexcept
Return current particle coordinates.
Definition: particleI.H:116
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
Definition: Istream.H:57
indexedParticle(const polyMesh &mesh, const vector &position, const label celli=-1, const label index=0)
Construct from a position and a cell.
Base particle class.
Definition: particle.H:69
particle(const polyMesh &mesh, const barycentric &coordinates, const label celli, const label tetFacei, const label tetPti)
Construct from components.
Definition: particle.C:507
const direction noexcept
Definition: Scalar.H:258
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
const polyMesh & mesh() const noexcept
Return the mesh database.
Definition: particleI.H:110
static void readFields(TrackCloudType &c)
Read the fields associated with the owner cloud.
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
Definition: HashPtrTable.H:48
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:74
volScalarField & p
label index() const noexcept
Adds label index to base particle.
vector position() const
Return current particle position.
Definition: particleI.H:283
Namespace for OpenFOAM.