ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / meshTools / surfaceSets / surfaceSets.H
blob4b960b9f6660d8c7de7f3697ccc5f16de89a5b42
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
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::surfaceSets
27 Description
28     Various utilities to handle sets relating mesh to surface.
29     Note: work in progress. Used in meshing tools.
31 SourceFiles
32     surfaceSets.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef surfaceSets_H
37 #define surfaceSets_H
39 #include "label.H"
40 #include "scalar.H"
41 #include "fileName.H"
42 #include "pointField.H"
43 #include "polyMesh.H"
44 #include "triSurface.H"
45 #include "triSurfaceSearch.H"
46 #include "pointSet.H"
48 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
50 namespace Foam
53 // Forward declaration of classes
54 class polyMesh;
55 class triSurface;
56 class triSurfaceSearch;
57 class pointSet;
59 /*---------------------------------------------------------------------------*\
60                            Class surfaceSets Declaration
61 \*---------------------------------------------------------------------------*/
63 class surfaceSets
65     //- Visibility of points: from inside cells, from outside cells or
66     //  from both
67     enum pointStatus
68     {
69         NOTSET,
70         INSIDE,
71         MIXED,
72         OUTSIDE
73     };
76     // Static
78         ////- Min length of connected mesh edges
79         //static scalar minEdgeLen
80         //(
81         //    const primitiveMesh& mesh,
82         //    const label pointI
83         //);
84         //
85         ////- Returns true if cell uses at least one selected point
86         //static bool usesPoint
87         //(
88         //    const primitiveMesh& mesh,
89         //    const boolList& selectedPoint,
90         //    const label cellI
91         //);
93         ////- Find points used only by internalCells and remove from
94         ////  internalCells all
95         ////  cells which don't use any internal point. Return number of
96         ////  removed cells.
97         //static label removeHangingCells
98         //(
99         //    const primitiveMesh&,
100         //    const triSurfaceSearch& querySurf,
101         //    labelHashSet& internalCells
102         //);
104         ////- Select all points out of pointSet where the distance to
105         ////  the surface is less than a factor times a local length
106         ////  scale (minimum length of connected edges)
107         //static void getNearPoints
108         //(
109         //    const primitiveMesh& mesh,
110         //    const triSurface& surf,
111         //    const triSurfaceSearch& querySurf,
112         //    const scalar edgeFactor,
113         //    const pointSet& candidateSet,
114         //    pointSet& nearPointSet
115         //);
117 public:
119     // Static Functions
121         //- Divide cells into cut,inside and outside
122         //  nCutLayers>0 : remove cutCells (set to type inside) if further
123         //  than nCutLayers away from outside type cell.
124         static void getSurfaceSets
125         (
126             const polyMesh& mesh,
127             const fileName& surfName,
128             const triSurface& surf,
129             const triSurfaceSearch& querySurf,
130             const pointField& outsidePts,
132             const label nCutLayers,
134             labelHashSet& inside,
135             labelHashSet& outside,
136             labelHashSet& cut
137         );
139         //- Get cells using points on 'outside' only
140         static labelHashSet getHangingCells
141         (
142             const primitiveMesh& mesh,
143             const labelHashSet& internalCells
144         );
147 //        //- Write cell sets with cells 'inside' and 'outside' surface.
148 //        static void writeSurfaceSets
149 //        (
150 //            const polyMesh& mesh,
151 //            const fileName& surfName,
152 //            const triSurface& surf,
153 //            const triSurfaceSearch& querySurf,
154 //            const pointField& outsidePts,
155 //            const scalar edgeFactor
156 //        );
161 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
163 } // End namespace Foam
166 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
168 #endif
170 // ************************************************************************* //