Adding cfMesh-v1.0 into the repository
[foam-extend-3.2.git] / src / meshLibrary / utilities / meshes / triSurf / triSurfFeatureEdges.H
blobda8aea1cd9f5f2582a3c6d339d13b1a638cc2d4c
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     triSurfFeatureEdges
27 Description
28     User-selected list of feature edges used in the meshing process
30 SourceFiles
31     triSurfFeatureEdges.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef triSurfFeatureEdges_H
36 #define triSurfFeatureEdges_H
38 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
40 #include "edgeLongList.H"
41 #include "meshSubset.H"
42 #include "Map.H"
44 namespace Foam
47 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
49 class triSurfFeatureEdges
51 protected:
53     // Protected data
54         //- list of feature edges
55         edgeLongList featureEdges_;
57         //- map of edge subsets
58         Map<meshSubset> featureEdgeSubsets_;
60     // Disallow bitwise assignment
61         void operator=(const triSurfFeatureEdges&);
63         triSurfFeatureEdges(const triSurfFeatureEdges&);
65 public:
67     // Constructors
68         //- Null constructor
69         triSurfFeatureEdges();
71         //- Construct from feature edges
72         triSurfFeatureEdges(const edgeLongList& triangles);
74     // Destructor
75         ~triSurfFeatureEdges();
77     // Member functions
78         //- return the number of feature edges
79         inline label nFeatureEdges() const;
81         //- access to feature edges
82         inline const edgeLongList& featureEdges() const;
84         //- append an edge to the end of the list
85         inline void appendFeatureEdge(const edge& e);
87         //- point subsets
88         label addEdgeSubset(const word&);
89         void removeEdgeSubset(const label);
90         word edgeSubsetName(const label) const;
91         label edgeSubsetIndex(const word&) const;
92         inline void addEdgeToSubset(const label, const label);
93         inline void removeEdgeFromSubset(const label, const label);
94         inline void edgeInSubsets(const label, DynList<label>&) const;
95         inline void edgeSubsetIndices(DynList<label>&) const;
96         template<class ListType>
97         inline void edgesInSubset(const label, ListType&) const;
98         template<class ListType>
99         inline void updateEdgeSubsets(const ListType&);
101     // Operators
104 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
106 } // End namespace Foam
108 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
110 #include "triSurfFeatureEdgesI.H"
112 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
114 #endif
116 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //