Adding cfMesh-v1.0 into the repository
[foam-extend-3.2.git] / src / meshLibrary / utilities / smoothers / topology / checkNonMappableCellConnections / checkNonMappableCellConnections.H
blobae16cf926f02bf7b073517ccd149302d76e9ae76
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     checkNonMappableCellConnections
27 Description
28     Checks cell connections at the surface. Cells with all vertices at
29     the boundary are considered problematic because they get severly skewed
30     after being mapped to the geometry surface in most cases. This code performs
31     checks of cells with all vertices at the boundary with the rest of the mesh.
32     Such cells having a neighbour with all internal faces are removed.
34 SourceFiles
35     checkNonMappableCellConnections.C
37 \*---------------------------------------------------------------------------*/
39 #ifndef checkNonMappableCellConnections_H
40 #define checkNonMappableCellConnections_H
42 #include "polyMeshGenModifier.H"
43 #include "HashSet.H"
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 namespace Foam
50 /*---------------------------------------------------------------------------*\
51             Class checkNonMappableCellConnections Declaration
52 \*---------------------------------------------------------------------------*/
54 class checkNonMappableCellConnections
56     // Private data
57         //- Reference to polyMeshGen
58         polyMeshGen& mesh_;
59     
60         //- type of cell
61         labelList cellType_;
62     
63     // Enumerations
64     
65         enum cellTypes_
66         {
67             NONE = 0,
68             INTERNALCELL = 1,
69             BNDCELL = 2,
70             ALLBNDVERTEXCELL = 4,
71             INTERNALFACEGROUP = 8
72         };
74     // Private member functions
75         //- classify cells
76         void findCellTypes();
78         //- Disallow default bitwise copy construct
79         checkNonMappableCellConnections(const checkNonMappableCellConnections&);
81         //- Disallow default bitwise assignment
82         void operator=(const checkNonMappableCellConnections&);
84 public:
86     // Constructors
88         //- Construct from polyMeshGen and meshOctree
89         checkNonMappableCellConnections(polyMeshGen& mesh);
91     // Destructor
93         ~checkNonMappableCellConnections();
95     // Member Functions
96         //- find problematic cells
97         void findCells(labelHashSet& badCells);
99         //- find and remove problematic cells
100         bool removeCells();
103 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
105 } // End namespace Foam
107 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
109 #endif
111 // ************************************************************************* //