Forward compatibility: flex
[foam-extend-3.2.git] / src / mesh / cfMesh / utilities / surfaceTools / correctEdgesBetweenPatches / correctEdgesBetweenPatches.C
blob6257faf8cd0e4eb4b87acb4cf993fcd36cfd8702
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 Description
26 \*---------------------------------------------------------------------------*/
28 #include "correctEdgesBetweenPatches.H"
29 #include "demandDrivenData.H"
30 #include "meshSurfaceEngine.H"
31 #include "decomposeCells.H"
33 // #define DEBUGSearch
35 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
37 namespace Foam
40 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
42 const meshSurfaceEngine& correctEdgesBetweenPatches::meshSurface() const
44     if( !msePtr_ )
45         msePtr_ = new meshSurfaceEngine(mesh_);
47     return *msePtr_;
50 //- delete mesh surface
51 void correctEdgesBetweenPatches::clearMeshSurface()
53     deleteDemandDrivenData(msePtr_);
56 void correctEdgesBetweenPatches::replaceBoundary()
58     clearMeshSurface();
60     polyMeshGenModifier(mesh_).replaceBoundary
61     (
62         patchNames_,
63         newBoundaryFaces_,
64         newBoundaryOwners_,
65         newBoundaryPatches_
66     );
69 void correctEdgesBetweenPatches::decomposeCorrectedCells()
71     if( decompose_ )
72     {
73         clearMeshSurface();
75         decomposeCells dc(mesh_);
76         dc.decomposeMesh(decomposeCell_);
77     }
80 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
82 // Construct from mesh
83 correctEdgesBetweenPatches::correctEdgesBetweenPatches(polyMeshGen& mesh)
85     mesh_(mesh),
86     msePtr_(NULL),
87     patchNames_(mesh.boundaries().size()),
88     patchTypes_(mesh.boundaries().size()),
89     newBoundaryFaces_(),
90     newBoundaryOwners_(),
91     newBoundaryPatches_(),
92     decomposeCell_(mesh_.cells().size(), false),
93     decompose_(false)
95     const PtrList<boundaryPatch>& boundaries = mesh_.boundaries();
96     forAll(boundaries, patchI)
97     {
98         patchNames_[patchI] = boundaries[patchI].patchName();
99         patchTypes_[patchI] = boundaries[patchI].patchType();
100     }
102     //decomposeProblematicFaces();
104     decomposeConcaveFaces();
106     patchCorrection();
108     decomposeCorrectedCells();
111 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
113 correctEdgesBetweenPatches::~correctEdgesBetweenPatches()
115     deleteDemandDrivenData(msePtr_);
118 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
120 } // End namespace Foam
122 // ************************************************************************* //