initial commit for version 1.5.x patch release
[OpenFOAM-1.5.x.git] / src / sampling / sampledSet / curve / curveSet.H
blob7fc953177a41895be878bf73eb2930fad6eb5c61
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2008 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::curveSet
28 Description
30 SourceFiles
31     curveSet.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef curveSet_H
36 #define curveSet_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 curveSet Declaration
52 \*---------------------------------------------------------------------------*/
54 class curveSet
56     public sampledSet
58     // Private data
60         //- sampling points
61         List<point> sampleCoords_;
64     // Private Member Functions
66         //- Sample till hits boundary. Called with singleParticle at position
67         //  inbetween sampleCoords_[sampleI] and sampleCoords_[sampleI+1].
68         //  Returns false if end of samples reached.
69         bool trackToBoundary
70         (
71             Particle<passiveParticle>& singleParticle,
72             label& sampleI,
73             DynamicList<point>& samplingPts,
74             DynamicList<label>& samplingCells,
75             DynamicList<label>& samplingFaces,
76             DynamicList<scalar>& samplingCurveDist
77         ) const;
79         //- Samples all point in sampleCoords_
80         //  samplingSegments contains segmentNo for each sample.
81         void calcSamples
82         (
83             DynamicList<point>& samplingPts,
84             DynamicList<label>& samplingCells,
85             DynamicList<label>& samplingFaces,
86             DynamicList<label>& samplingSegments,
87             DynamicList<scalar>& samplingCurveDist
88         ) const;
90         //- Uses calcSamples to obtain samples. Copies them into *this.
91         void genSamples();
94 public:
96     //- Runtime type information
97     TypeName("curve");
100     // Constructors
102         //- Construct from components
103         curveSet
104         (
105             const word& name,
106             const polyMesh& mesh,
107             meshSearch& searchEngine,
108             const word& axis,
109             const List<point>& samplePoints
110         );
112         //- Construct from dictionary
113         curveSet
114         (
115             const word& name,
116             const polyMesh& mesh,
117             meshSearch& searchEngine,
118             const dictionary& dict
119         );
122     // Destructor
124         virtual ~curveSet();
127     // Member Functions
129         //- Get reference point
130         virtual point getRefPoint(const List<point>&) const;
134 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
136 } // End namespace Foam
138 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
140 #endif
142 // ************************************************************************* //