/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. OpenFOAM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OpenFOAM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see . Class Foam::cellFeatures Description Cell analysis class. Constructs feature edges and feature points, which are edges/points with and angle > given specification. Can be asked for 'superFaces' which can be used to see if a cell is a 'splitHex'. SourceFiles cellFeatures.C \*---------------------------------------------------------------------------*/ #ifndef Foam_cellFeatures_H #define Foam_cellFeatures_H #include "faceList.H" #include "labelList.H" #include "boolList.H" #include "HashSet.H" #include "Map.H" #include "DynamicList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { // Forward Declarations class primitiveMesh; /*---------------------------------------------------------------------------*\ Class cellFeatures Declaration \*---------------------------------------------------------------------------*/ class cellFeatures { // Private data const primitiveMesh& mesh_; //- Cos of angle between two connected faces or two connected edges on // same face before edge/point is 'feature'. scalar minCos_; label celli_; //- Feature edges labelHashSet featureEdge_; //- (demand driven) Faces after removing internal points&edges mutable std::unique_ptr facesPtr_; //- New to old face mapping mutable List> faceMap_; // Private Member Functions bool faceAlignedEdge(const label, const label) const; label nextEdge ( const Map