Forward compatibility: flex
[foam-extend-3.2.git] / src / mesh / cfMesh / utilities / surfaceTools / correctEdgesBetweenPatches / correctEdgesBetweenPatches.H
blobf786b99a79e0616a3047582b8d0f5d26df0a2e8f
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     correctEdgesBetweenPatches
27 Description
28     Changes mesh surface until every boundary face shares only one edge with
29     the faces in other boundary patch
31 SourceFiles
32     correctEdgesBetweenPatches.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef correctEdgesBetweenPatches_H
37 #define correctEdgesBetweenPatches_H
39 #include "polyMeshGenModifier.H"
40 #include "labelLongList.H"
41 #include "boolList.H"
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 namespace Foam
48 // Forward declarations
49 class meshOctree;
50 class meshSurfaceEngine;
52 /*---------------------------------------------------------------------------*\
53                 Class correctEdgesBetweenPatches Declaration
54 \*---------------------------------------------------------------------------*/
56 class correctEdgesBetweenPatches
58     // Private data
59         //- mesh
60         polyMeshGen& mesh_;
62         //- pointer to surface engine
63         mutable const meshSurfaceEngine* msePtr_;
65         //- boundary data
66         wordList patchNames_;
67         wordList patchTypes_;
68         VRWGraph newBoundaryFaces_;
69         labelLongList newBoundaryOwners_;
70         labelLongList newBoundaryPatches_;
72         //- holds data which cells have to be decomposed
73         boolList decomposeCell_;
74         bool decompose_;
76     // Private member functions
78         //- construct and return mesh surface
79         const meshSurfaceEngine& meshSurface() const;
81         //- delete mesh surface
82         void clearMeshSurface();
84          //- replace boundary
85         void replaceBoundary();
87         //- decompose corrected cells
88         void decomposeCorrectedCells();
90         //- decompose bnd faces for which the feature edges are not connected
91         //- over vertices and internal faces which have more than one feature
92         //- edge at the boundary
93         void decomposeProblematicFaces();
95         //- decompose cells with faces at concave boundary edges
96         void decomposeConcaveFaces();
98         //- perform decompose remaining faces having more than one feature edge
99         void patchCorrection();
101         //- Disallow default bitwise copy construct
102         correctEdgesBetweenPatches(const correctEdgesBetweenPatches&);
104         //- Disallow default bitwise assignment
105         void operator=(const correctEdgesBetweenPatches&);
107 public:
109     // Constructors
111         //- Construct from mesh data
112         correctEdgesBetweenPatches(polyMeshGen& mesh);
114     // Destructor
116         ~correctEdgesBetweenPatches();
118     // Member Functions
122 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
124 } // End namespace Foam
126 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
128 #endif
130 // ************************************************************************* //