Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / sampling / sampledSet / uniform / uniformSet.H
blob79128b61d9fe459118c36b41ca68e6725ce05d21
1 /*---------------------------------------------------------------------------* \
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend 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 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  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             dynamicLabelList& samplingCells,
93             dynamicLabelList& 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             dynamicLabelList& samplingCells,
103             dynamicLabelList& samplingFaces,
104             dynamicLabelList& 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 // ************************************************************************* //