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-2024 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 
44 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 
46 namespace Foam
47 {
48 
49 /*---------------------------------------------------------------------------*\
50  Class indexedParticle Declaration
51 \*---------------------------------------------------------------------------*/
52 
53 class indexedParticle
54 :
55  public particle
56 {
57  // Private Data
58 
59  label index_;
60 
61 
62 public:
63 
64  // Constructors
65 
66  //- Construct from a position and a cell.
67  // Searches for the rest of the required topology.
68  // Other properties are zero initialised.
70  (
71  const polyMesh& mesh,
72  const vector& position,
73  const label celli = -1,
74  const label index = 0
75  )
76  :
77  particle(mesh, position, celli),
78  index_(index)
79  {}
80 
81  //- Construct from components
83  (
84  const polyMesh& mesh,
85  const barycentric& coordinates,
86  const label celli,
87  const label tetFacei,
88  const label tetPti,
89  const label index = 0
90  )
91  :
92  particle(mesh, coordinates, celli, tetFacei, tetPti),
93  index_(index)
94  {}
95 
96  //- Construct from Istream
98  (
99  const polyMesh& mesh,
100  Istream& is,
101  bool readFields = true,
102  bool newFormat = true
103  )
104  :
105  particle(mesh, is, readFields, newFormat)
106  {}
107 
108  //- Construct as a copy
110  :
111  particle(p),
112  index_(p.index_)
113  {}
114 
115  //- Return a clone
116  virtual autoPtr<particle> clone() const
117  {
118  return particle::Clone(*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
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
static autoPtr< particle > Clone(const Derived &p)
Clone a particle.
Definition: particle.H:552
const direction noexcept
Definition: scalarImpl.H:255
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:75
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.