Adding cfMesh-v1.0 into the repository
[foam-extend-3.2.git] / src / meshLibrary / utilities / meshes / triSurf / triSurfFeatureEdgesI.H
blobd2ce00c25c7fad538fa456e639f7522aa9bd1b0b
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
27 \*---------------------------------------------------------------------------*/
30 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
32 #include "triSurfFeatureEdges.H"
34 namespace Foam
37 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
39 inline label triSurfFeatureEdges::nFeatureEdges() const
41     return featureEdges_.size();
44 inline const edgeLongList& triSurfFeatureEdges::featureEdges() const
46     return featureEdges_;
49 inline void triSurfFeatureEdges::appendFeatureEdge(const edge& e)
51     featureEdges_.append(e);
54 inline void triSurfFeatureEdges::addEdgeToSubset
56     const label setI,
57     const label eI
60     Map<meshSubset>::iterator it = featureEdgeSubsets_.find(setI);
61     if( it == featureEdgeSubsets_.end() )
62         return;
64     it().addElement(eI);
67 inline void triSurfFeatureEdges::removeEdgeFromSubset
69     const label setI,
70     const label eI
73     Map<meshSubset>::iterator it = featureEdgeSubsets_.find(setI);
74     if( it == featureEdgeSubsets_.end() )
75         return;
77     it().removeElement(eI);
80 inline void triSurfFeatureEdges::edgeInSubsets
82     const label eI,
83     DynList<label>& edgeSubsets
84 ) const
86     edgeSubsets.clear();
88     forAllConstIter
89     (
90         Map<meshSubset>,
91         featureEdgeSubsets_,
92         it
93     )
94     {
95         if( it().contains(eI) )
96             edgeSubsets.append(it.key());
97     }
100 inline void triSurfFeatureEdges::edgeSubsetIndices
102     DynList<label>& indices
103 ) const
105     indices.clear();
107     forAllConstIter
108     (
109         Map<meshSubset>,
110         featureEdgeSubsets_,
111         it
112     )
113         indices.append(it.key());
116 template<class ListType>
117 inline void triSurfFeatureEdges::edgesInSubset
119     const label setI,
120     ListType& edgeLabels
121 ) const
123     edgeLabels.clear();
125     Map<meshSubset>::const_iterator it = featureEdgeSubsets_.find(setI);
126     if( it == featureEdgeSubsets_.end() )
127         return;
129     it().containedElements(edgeLabels);
132 template<class ListType>
133 inline void triSurfFeatureEdges::updateEdgeSubsets
135     const ListType& newEdgeLabels
138     for
139     (
140         Map<meshSubset>::iterator it=featureEdgeSubsets_.begin();
141         it!=featureEdgeSubsets_.end();
142         ++it
143     )
144         it().updateSubset(newEdgeLabels);
148 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
150 } // End namespace Foam
152 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //