Fixed URL for libccmio-2.6.1 (bug report #5 by Thomas Oliveira)
[foam-extend-3.2.git] / src / mesh / cfMesh / utilities / surfaceTools / meshSurfaceCheckInvertedVertices / meshSurfaceCheckInvertedVertices.H
blobc67fe8067c3a401e2e9b92e368eb625be8547170
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | cfMesh: A library for mesh generation
4    \\    /   O peration     |
5     \\  /    A nd           | Author: Franjo Juretic (franjo.juretic@c-fields.com)
6      \\/     M anipulation  | Copyright (C) Creative Fields, Ltd.
7 -------------------------------------------------------------------------------
8 License
9     This file is part of cfMesh.
11     cfMesh 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 3 of the License, or (at your
14     option) any later version.
16     cfMesh 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 cfMesh.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     meshSurfaceCheckInvertedVertices
27 Description
28     Checks if any of the surface is tangled at any of its vertices. This
29     is performed by checking the dot product between the vertex normal and
30     the normals of the faces attached to the vertex.
32 SourceFiles
33     meshSurfaceCheckInvertedVertices.C
35 \*---------------------------------------------------------------------------*/
37 #ifndef meshSurfaceCheckInvertedVertices_H
38 #define meshSurfaceCheckInvertedVertices_H
40 #include "objectRegistry.H"
41 #include "foamTime.H"
42 #include "polyMeshGenModifier.H"
43 #include "HashSet.H"
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 namespace Foam
50 // Forward declarations
51 class meshSurfacePartitioner;
53 /*---------------------------------------------------------------------------*\
54             Class meshSurfaceCheckInvertedVertices Declaration
55 \*---------------------------------------------------------------------------*/
57 class meshSurfaceCheckInvertedVertices
59     // Private data
60         //- mesh surface partitioner
61         const meshSurfacePartitioner& surfacePartitioner_;
63         //- active surface points
64         const boolList* activePointsPtr_;
66         //- set of inverted vertices
67         labelHashSet invertedVertices_;
69     // Private member functions
70         //- check vertices by calculating dot products
71         void checkVertices();
73         //- Disallow default bitwise copy construct
74         meshSurfaceCheckInvertedVertices
75         (
76             const meshSurfaceCheckInvertedVertices&
77         );
79         //- Disallow default bitwise assignment
80         void operator=(const meshSurfaceCheckInvertedVertices&);
82 public:
84     // Constructors
86         //- Construct from meshSurfacePartitioner
87         meshSurfaceCheckInvertedVertices
88         (
89             const meshSurfacePartitioner&
90         );
92         //- Construct from meshSurfacePartitioner and a list of active points
93         meshSurfaceCheckInvertedVertices
94         (
95             const meshSurfacePartitioner&,
96             const boolList& activePoints
97         );
99     // Destructor
101         ~meshSurfaceCheckInvertedVertices();
103     // Member Functions
104         //- return the labels of inverted vertices
105         inline const labelHashSet& invertedVertices() const
106         {
107             return invertedVertices_;
108         }
112 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
114 } // End namespace Foam
116 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
118 #endif
120 // ************************************************************************* //