Merge branch 'upstream/OpenFOAM'
[freefoam.git] / src / sampling / sampledSet / patchCloud / patchCloudSet.H
blob5af45bb869cad742d20d0e3354d2c92ed6c20d13
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011-2011 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::patchCloudSet
27 Description
28     Like cloudSet but samples nearest patch face
31 SourceFiles
32     patchCloudSet.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef patchCloudSet_H
37 #define patchCloudSet_H
39 #include <sampling/sampledSet.H>
40 #include <OpenFOAM/DynamicList.H>
41 #include <OpenFOAM/HashSet.H>
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 namespace Foam
48 /*---------------------------------------------------------------------------*\
49                            Class patchCloudSet Declaration
50 \*---------------------------------------------------------------------------*/
52 class patchCloudSet
54     public sampledSet
56     // Private data
58         //- Sampling points
59         const List<point> sampleCoords_;
61         //- Patches to sample
62         const labelHashSet patchSet_;
64         //- Maximum distance to look for nearest
65         const scalar searchDist_;
68     // Private Member Functions
70         //- Samples all points in sampleCoords.
71         void calcSamples
72         (
73             DynamicList<point>& samplingPts,
74             DynamicList<label>& samplingCells,
75             DynamicList<label>& samplingFaces,
76             DynamicList<label>& samplingSegments,
77             DynamicList<scalar>& samplingCurveDist
78         ) const;
80         //- Uses calcSamples to obtain samples. Copies them into *this.
81         void genSamples();
84 public:
86     //- Runtime type information
87     TypeName("patchCloud");
90     // Constructors
92         //- Construct from components
93         patchCloudSet
94         (
95             const word& name,
96             const polyMesh& mesh,
97             meshSearch& searchEngine,
98             const word& axis,
99             const List<point>& sampleCoords,
100             const labelHashSet& patchSet,
101             const scalar searchDist
102         );
104         //- Construct from dictionary
105         patchCloudSet
106         (
107             const word& name,
108             const polyMesh& mesh,
109             meshSearch& searchEngine,
110             const dictionary& dict
111         );
114     //- Destructor
115     virtual ~patchCloudSet();
118     // Member Functions
120         //- Get reference point
121         virtual point getRefPoint(const List<point>&) const;
125 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
127 } // End namespace Foam
129 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
131 #endif
133 // ************************ vim: set sw=4 sts=4 et: ************************ //