ENH: patchCloudSet: new sampledSet
[OpenFOAM-1.7.x.git] / src / sampling / sampledSet / patchCloud / patchCloudSet.H
blob4871519d535b384b055b3b8b3ba604e97c41beeb
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 "sampledSet.H"
40 #include "DynamicList.H"
41 #include "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         List<point> sampleCoords_;
61         //- Patches to sample
62         labelHashSet patchSet_;
64     // Private Member Functions
66         //- Samples all points in sampleCoords.
67         void calcSamples
68         (
69             DynamicList<point>& samplingPts,
70             DynamicList<label>& samplingCells,
71             DynamicList<label>& samplingFaces,
72             DynamicList<label>& samplingSegments,
73             DynamicList<scalar>& samplingCurveDist
74         ) const;
76         //- Uses calcSamples to obtain samples. Copies them into *this.
77         void genSamples();
80 public:
82     //- Runtime type information
83     TypeName("patchCloud");
86     // Constructors
88         //- Construct from components
89         patchCloudSet
90         (
91             const word& name,
92             const polyMesh& mesh,
93             meshSearch& searchEngine,
94             const word& axis,
95             const List<point>& sampleCoords,
96             const labelHashSet& patchSet
97         );
99         //- Construct from dictionary
100         patchCloudSet
101         (
102             const word& name,
103             const polyMesh& mesh,
104             meshSearch& searchEngine,
105             const dictionary& dict
106         );
109     //- Destructor
110     virtual ~patchCloudSet();
113     // Member Functions
115         //- Get reference point
116         virtual point getRefPoint(const List<point>&) const;
120 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
122 } // End namespace Foam
124 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
126 #endif
128 // ************************************************************************* //