Forward compatibility: flex
[foam-extend-3.2.git] / src / mesh / cfMesh / utilities / triSurfaceTools / triSurfaceCleanupDuplicates / triSurfaceCleanupDuplicates.C
blob6e9738238582cdf8506e87688b580977f0d0b9ef
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 "triSurfaceCleanupDuplicates.H"
29 #include "meshOctree.H"
30 #include "demandDrivenData.H"
32 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
34 namespace Foam
37 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
39 triSurfaceCleanupDuplicates::triSurfaceCleanupDuplicates
41     const meshOctree& octree,
42     const scalar tol
45     tolerance_(tol),
46     surf_(const_cast<triSurf&>(octree.surface())),
47     octree_(octree),
48     newTriangleLabel_(),
49     done_(false)
52 triSurfaceCleanupDuplicates::~triSurfaceCleanupDuplicates()
55 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
57 void triSurfaceCleanupDuplicates::mergeIdentities()
59     if( Pstream::parRun() )
60         FatalError << "Material detection does not run in parallel"
61             << exit(FatalError);
63     if( done_ )
64     {
65         WarningIn("void triSurfaceCleanupDuplicates::mergeIdentities()")
66             << "Operation is already performed" << endl;
67         return;
68     }
70     newTriangleLabel_.setSize(surf_.size());
71     forAll(newTriangleLabel_, triI)
72         newTriangleLabel_[triI] = triI;
74     bool finished;
75     do
76     {
77         finished = true;
79         if( checkDuplicateTriangles() )
80             finished = false;
81         if( mergeDuplicatePoints() )
82             finished = false;
83     } while( !finished );
85     done_ = true;
88 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
90 } // End namespace Foam
92 // ************************************************************************* //