labelToCell.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2011-2017 OpenFOAM Foundation
9  Copyright (C) 2018 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 \*---------------------------------------------------------------------------*/
28 
29 #include "labelToCell.H"
30 #include "polyMesh.H"
32 
33 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
34 
35 namespace Foam
36 {
37  defineTypeNameAndDebug(labelToCell, 0);
38  addToRunTimeSelectionTable(topoSetSource, labelToCell, word);
39  addToRunTimeSelectionTable(topoSetSource, labelToCell, istream);
40  addToRunTimeSelectionTable(topoSetCellSource, labelToCell, word);
41  addToRunTimeSelectionTable(topoSetCellSource, labelToCell, istream);
43  (
44  topoSetCellSource,
45  labelToCell,
46  word,
47  label
48  );
50  (
51  topoSetCellSource,
52  labelToCell,
53  istream,
54  label
55  );
56 }
57 
58 
59 Foam::topoSetSource::addToUsageTable Foam::labelToCell::usage_
60 (
61  labelToCell::typeName,
62  "\n Usage: labelToCell (i0 i1 .. in)\n\n"
63  " Select cells by cellLabel\n\n"
64 );
65 
66 
67 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
68 
70 (
71  const polyMesh& mesh,
72  const labelList& labels
73 )
74 :
76  labels_(labels)
77 {}
78 
79 
81 (
82  const polyMesh& mesh,
83  labelList&& labels
84 )
85 :
87  labels_(std::move(labels))
88 {}
89 
90 
92 (
93  const polyMesh& mesh,
94  const dictionary& dict
95 )
96 :
98  labels_(dict.get<labelList>("value"))
99 {}
100 
101 
103 (
104  const polyMesh& mesh,
105  Istream& is
106 )
107 :
109  labels_(checkIs(is))
110 {
111  check(labels_, mesh.nCells());
112 }
113 
114 
115 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
116 
118 (
119  const topoSetSource::setAction action,
120  topoSet& set
121 ) const
122 {
123  if (action == topoSetSource::ADD || action == topoSetSource::NEW)
124  {
125  if (verbose_)
126  {
127  Info<< " Adding cells mentioned in dictionary"
128  << " ..." << endl;
129  }
130 
131  addOrDelete(set, labels_, true);
132  }
133  else if (action == topoSetSource::SUBTRACT)
134  {
135  if (verbose_)
136  {
137  Info<< " Removing cells mentioned in dictionary"
138  << " ..." << endl;
139  }
140 
141  addOrDelete(set, labels_, false);
142  }
143 }
144 
145 
146 // ************************************************************************* //
List< ReturnType > get(const UPtrList< T > &list, const AccessOp &aop)
List of values generated by applying the access operation to each list item.
dictionary dict
virtual void applyToSet(const topoSetSource::setAction action, topoSet &set) const
Apply specified action to the topoSet.
Definition: labelToCell.C:111
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:129
Create a new set and ADD elements to it.
Add elements to current set.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
Definition: Istream.H:57
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:531
The topoSetCellSource is a intermediate class for handling topoSet sources for selecting cells...
Macros for easy insertion into run-time selection tables.
addNamedToRunTimeSelectionTable(topoSetCellSource, badQualityToCell, word, badQuality)
dynamicFvMesh & mesh
const polyMesh & mesh() const noexcept
Reference to the mesh.
setAction
Enumeration defining various actions.
labelToCell(const polyMesh &mesh, const labelList &labels)
Construct from components, copying labels.
Definition: labelToCell.C:63
defineTypeNameAndDebug(combustionModel, 0)
General set of labels of mesh quantity (points, cells, faces).
Definition: topoSet.H:59
Subtract elements from current set.
Class with constructor to add usage string to table.
label nCells() const noexcept
Number of mesh cells.
messageStream Info
Information stream (stdout output on master, null elsewhere)
static bool check(labelList &list, const label maxLabel)
Detect and remove any values less than 0 or ge maxLabel.
Definition: topoSetSource.C:84
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:75
Namespace for OpenFOAM.
addToRunTimeSelectionTable(functionObject, pointHistory, dictionary)