initial commit for version 1.6.x patch release
[OpenFOAM-1.6.x.git] / src / sampling / sampledSet / uniform / uniformSet.H
blobf3f157816eea9ccc6822ae45e1fd0ee8e9c92740
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::uniformSet
28 Description
30 SourceFiles
31     uniformSet.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef uniformSet_H
36 #define uniformSet_H
38 #include "sampledSet.H"
39 #include "DynamicList.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 // Forward declaration of classes
47 class passiveParticle;
48 template<class Type> class Particle;
50 /*---------------------------------------------------------------------------*\
51                            Class uniformSet Declaration
52 \*---------------------------------------------------------------------------*/
54 class uniformSet
56     public sampledSet
58     // Private data
60         //- Starting point
61         point start_;
63         //- End point
64         point end_;
66         //- Number of points
67         label nPoints_;
69     // Private Member Functions
71         //- Calculates - starting at samplePt - the first sampling point
72         //  on or after currentPt. smallDist is the tolerance used to compare
73         //  positions. Returns false if end of samples reached.
74         bool nextSample
75         (
76             const point& currentPt,
77             const vector& offset,
78             const scalar smallDist,
79             point& samplePt,
80             label& sampleI
81         ) const;
83         //- Samples from startTrackPt/CellI. Updates particle/samplePt/sampleI
84         //  and puts
85         //  samples in the DynamicLists. Returns false if end of all samples
86         //  reached
87         bool trackToBoundary
88         (
89             Particle<passiveParticle>& singleParticle,
90             point& samplePt,
91             label& sampleI,
92             DynamicList<point>& samplingPts,
93             DynamicList<label>& samplingCells,
94             DynamicList<label>& samplingFaces,
95             DynamicList<scalar>& samplingCurveDist
96         ) const;
98         //- Samples from start_ to end_. samplingSegments contains segmentNo
99         //  for each sample.
100         void calcSamples
101         (
102             DynamicList<point>& samplingPts,
103             DynamicList<label>& samplingCells,
104             DynamicList<label>& samplingFaces,
105             DynamicList<label>& samplingSegments,
106             DynamicList<scalar>& samplingCurveDist
107         ) const;
109         //- Uses calcSamples to obtain samples. Copies them into *this.
110         void genSamples();
113 public:
115     //- Runtime type information
116     TypeName("uniform");
118     // Constructors
120         //- Construct from components
121         uniformSet
122         (
123             const word& name,
124             const polyMesh& mesh,
125             meshSearch& searchEngine,
126             const word& axis,
127             const point& start,
128             const point& end,
129             const label nPoints
130         );
132         //- Construct from dictionary
133         uniformSet
134         (
135             const word& name,
136             const polyMesh& mesh,
137             meshSearch& searchEngine,
138             const dictionary& dict
139         );
142     // Destructor
144         virtual ~uniformSet();
147     // Member Functions
149         //- Get reference point
150         virtual point getRefPoint(const List<point>&) const;
154 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
156 } // End namespace Foam
158 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
160 #endif
162 // ************************************************************************* //