ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / lagrangian / basic / indexedParticle / indexedParticle.H
blob6365eb60cf15800a5e8b209263a8329c1fd9d252
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
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.
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.
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/>.
24 Class
25     Foam::indexedParticle
27 Description
28     Adds label index to base particle
30 SourceFiles
31     indexedParticle.H
33 \*---------------------------------------------------------------------------*/
35 #ifndef indexedParticle_H
36 #define indexedParticle_H
38 #include "particle.H"
39 #include "IOstream.H"
40 #include "autoPtr.H"
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 namespace Foam
47 /*---------------------------------------------------------------------------*\
48                       Class indexedParticle Declaration
49 \*---------------------------------------------------------------------------*/
51 class indexedParticle
53     public particle
55     // Private data
57         label index_;
60 public:
62     // Constructors
64         //- Construct from components
65         indexedParticle
66         (
67             const polyMesh& mesh,
68             const vector& position,
69             const label cellI,
70             const label tetFaceI,
71             const label tetPtI,
72             const label index = 0
73         )
74         :
75             particle(mesh, position, cellI, tetFaceI, tetPtI),
76             index_(index)
77         {}
79         //- Construct from components, with searching for tetFace and tetPt
80         indexedParticle
81         (
82             const polyMesh& mesh,
83             const vector& position,
84             const label cellI,
85             const label index = 0
86         )
87         :
88             particle(mesh, position, cellI),
89             index_(index)
90         {}
92         //- Construct from Istream
93         indexedParticle
94         (
95             const polyMesh& mesh,
96             Istream& is,
97             bool readFields = true
98         )
99         :
100             particle(mesh, is, readFields)
101         {}
103         //- Construct as a copy
104         indexedParticle(const indexedParticle& p)
105         :
106             particle(p)
107         {}
109         //- Construct and return a clone
110         virtual autoPtr<particle> clone() const
111         {
112             return autoPtr<particle>(new indexedParticle(*this));
113         }
116     // Member functions
118         label index() const
119         {
120             return index_;
121         }
123         label& index()
124         {
125             return index_;
126         }
130 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
132 } // End namespace Foam
134 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
136 #endif
138 // ************************************************************************* //