ENH: patchCloudSet: new sampledSet
[OpenFOAM-1.7.x.git] / src / sampling / sampledSet / uniform / uniformSet.H
blob64d493720f18ec4c76d04c85126312eab50c0e90
1 /*---------------------------------------------------------------------------* \
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2010 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
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::uniformSet
27 Description
29 SourceFiles
30     uniformSet.C
32 \*---------------------------------------------------------------------------*/
34 #ifndef uniformSet_H
35 #define uniformSet_H
37 #include "sampledSet.H"
38 #include "DynamicList.H"
40 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
42 namespace Foam
45 // Forward declaration of classes
46 class passiveParticle;
47 template<class Type> class Particle;
49 /*---------------------------------------------------------------------------*\
50                            Class uniformSet Declaration
51 \*---------------------------------------------------------------------------*/
53 class uniformSet
55     public sampledSet
57     // Private data
59         //- Starting point
60         point start_;
62         //- End point
63         point end_;
65         //- Number of points
66         label nPoints_;
68     // Private Member Functions
70         //- Calculates - starting at samplePt - the first sampling point
71         //  on or after currentPt. smallDist is the tolerance used to compare
72         //  positions. Returns false if end of samples reached.
73         bool nextSample
74         (
75             const point& currentPt,
76             const vector& offset,
77             const scalar smallDist,
78             point& samplePt,
79             label& sampleI
80         ) const;
82         //- Samples from startTrackPt/CellI. Updates particle/samplePt/sampleI
83         //  and puts
84         //  samples in the DynamicLists. Returns false if end of all samples
85         //  reached
86         bool trackToBoundary
87         (
88             Particle<passiveParticle>& singleParticle,
89             point& samplePt,
90             label& sampleI,
91             DynamicList<point>& samplingPts,
92             DynamicList<label>& samplingCells,
93             DynamicList<label>& samplingFaces,
94             DynamicList<scalar>& samplingCurveDist
95         ) const;
97         //- Samples from start_ to end_. samplingSegments contains segmentNo
98         //  for each sample.
99         void calcSamples
100         (
101             DynamicList<point>& samplingPts,
102             DynamicList<label>& samplingCells,
103             DynamicList<label>& samplingFaces,
104             DynamicList<label>& samplingSegments,
105             DynamicList<scalar>& samplingCurveDist
106         ) const;
108         //- Uses calcSamples to obtain samples. Copies them into *this.
109         void genSamples();
112 public:
114     //- Runtime type information
115     TypeName("uniform");
117     // Constructors
119         //- Construct from components
120         uniformSet
121         (
122             const word& name,
123             const polyMesh& mesh,
124             meshSearch& searchEngine,
125             const word& axis,
126             const point& start,
127             const point& end,
128             const label nPoints
129         );
131         //- Construct from dictionary
132         uniformSet
133         (
134             const word& name,
135             const polyMesh& mesh,
136             meshSearch& searchEngine,
137             const dictionary& dict
138         );
141     // Destructor
143         virtual ~uniformSet();
146     // Member Functions
148         //- Get reference point
149         virtual point getRefPoint(const List<point>&) const;
153 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
155 } // End namespace Foam
157 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
159 #endif
161 // ************************************************************************* //