Moving cfMesh into place. Updated contibutors list
[foam-extend-3.2.git] / src / mesh / cfMesh / meshLibrary / utilities / meshes / polyMeshGenModifier / polyMeshGenModifierRemoveUnusedVertices.C
blobd24926217f02624c9c81330309c5efe237360210
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 "polyMeshGenModifier.H"
29 #include "demandDrivenData.H"
30 #include "labelList.H"
32 namespace Foam
35 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
37 void polyMeshGenModifier::removeUnusedVertices()
39     faceListPMG& faces = mesh_.faces_;
40     pointFieldPMG& points = mesh_.points_;
42     boolList usePoint(points.size(), false);
43     forAll(faces, faceI)
44     {
45         const face& f = faces[faceI];
47         forAll(f, pI)
48             usePoint[f[pI]] = true;
49     }
51     labelLongList newLabel(points.size(), -1);
52     label nPoints(0);
53     forAll(points, pI)
54         if( usePoint[pI] )
55             newLabel[pI] = nPoints++;
57     //- remove unused points from the list
58     forAll(newLabel, pI)
59         if( (newLabel[pI] != -1) && (newLabel[pI] < pI) )
60         {
61             points[newLabel[pI]] = points[pI];
62         }
64     points.setSize(nPoints);
66     forAll(faces, faceI)
67     {
68         face& f = faces[faceI];
70         forAll(f, pI)
71             f[pI] = newLabel[f[pI]];
72     }
74     mesh_.updatePointSubsets(newLabel);
76     mesh_.clearOut();
77     this->clearOut();
80 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
82 } // End namespace Foam
84 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //