/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org \\ / A nd | Copyright (C) 2022-2023 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- 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::polyCellSet Description General run-time selected cell set selection class for polyMesh Currently supports cell selection from: - a set of points - a cellSet - a cellZone - all of the cells. Usage Examples: \verbatim // Select all cells select all; // Select the cells within the given cellSet select cellSet; // Optional cellSet rotor; // Select the cells within the given cellZone select cellZone; // Optional cellZone rotor; // Select the cells containing a list of points select points; // Optional points ( (2.25 0.5 0) (2.75 0.5 0) ); \endverbatim SourceFiles polyCellSet.C \*---------------------------------------------------------------------------*/ #ifndef polyCellSet_H #define polyCellSet_H #include "cellSet.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { class polyMesh; class polyMeshMap; class polyDistributionMap; /*---------------------------------------------------------------------------*\ Class polyCellSet Declaration \*---------------------------------------------------------------------------*/ class polyCellSet { public: // Public data //- Enumeration for selection mode types enum class selectionTypes { points, cellSet, cellZone, all }; //- Word list of selection type names static const NamedEnum selectionTypeNames; private: // Private data //- Reference to the mesh const polyMesh& mesh_; //- Cell selection type selectionTypes selectionType_; //- Optional name of cell set or zone word cellSetName_; //- Optional list of points List points_; //- Set of selected cells (not used for all or cellZone) mutable labelList cells_; // Private functions //- Set the cells void setCells(); //- Return the identity map of length len labelUList identityMap(const label len) const; public: // Constructors //- Construct from mesh. Will select all. polyCellSet(const polyMesh& mesh); //- Construct from mesh and dictionary polyCellSet(const polyMesh& mesh, const dictionary& dict); //- Destructor ~polyCellSet(); // Member Functions // Access //- Return const access to the cell selection type inline const selectionTypes& selectionType() const; //- Return const access to the name of cellSet inline const word& cellSetName() const; //- Return const access to the cell set inline labelUList cells() const; //- Return the number of cells in the set inline label nCells() const; //- Return true if the set comprises all the cells inline bool all() const; //- Return the cell index corresponding to the cell set index inline label celli(const label i) const; // Mesh changes //- Update for mesh motion void movePoints(); //- Update topology using the given map void topoChange(const polyTopoChangeMap&); //- Update from another mesh using the given map void mapMesh(const polyMeshMap&); //- Redistribute or update using the given distribution map void distribute(const polyDistributionMap&); // IO //- Read coefficients dictionary bool read(const dictionary& dict); }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #include "polyCellSetI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* //