initial commit for version 1.6.x patch release
[OpenFOAM-1.6.x.git] / src / lagrangian / basic / indexedParticle / indexedParticle.H
blob7023f0ba6d43604b9d6b5341eb9d0d32d16fe643
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
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 the
13     Free Software Foundation; either version 2 of the License, or (at your
14     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, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 Class
26     Foam::indexedParticle
28 Description
30 SourceFiles
31     indexedParticleI.H
32     indexedParticle.C
33     indexedParticleIO.C
35 \*---------------------------------------------------------------------------*/
37 #ifndef indexedParticle_H
38 #define indexedParticle_H
40 #include "Particle.H"
41 #include "IOstream.H"
42 #include "autoPtr.H"
44 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 namespace Foam
49 /*---------------------------------------------------------------------------*\
50                            Class indexedParticle Declaration
51 \*---------------------------------------------------------------------------*/
53 class indexedParticle
55     public Particle<indexedParticle>
57     // Private data
59         label index_;
62 public:
64     // Constructors
66         //- Construct from components
67         indexedParticle
68         (
69             const Cloud<indexedParticle>& c,
70             const vector& position,
71             const label celli,
72             const label index = 0
73         )
74         :
75             Particle<indexedParticle>(c, position, celli),
76             index_(index)
77         {}
79         //- Construct from Istream
80         indexedParticle
81         (
82             const Cloud<indexedParticle>& c,
83             Istream& is,
84             bool readFields = true
85         )
86         :
87             Particle<indexedParticle>(c, is, readFields)
88         {}
90         //- Construct as a copy
91         indexedParticle(const indexedParticle& p)
92         :
93             Particle<indexedParticle>(p)
94         {}
96         //- Construct and return a clone
97         autoPtr<indexedParticle> clone() const
98         {
99             return autoPtr<indexedParticle>(new indexedParticle(*this));
100         }
103     // Member functions
105         label index() const
106         {
107             return index_;
108         }
110         label& index()
111         {
112             return index_;
113         }
117 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
119 } // End namespace Foam
121 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
123 #endif
125 // ************************************************************************* //