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 :
97  labelToCell(mesh, dict.get<labelList>("value"))
98 {}
99 
100 
102 (
103  const polyMesh& mesh,
104  Istream& is
105 )
106 :
108  labels_(checkIs(is))
109 {
110  check(labels_, mesh.nCells());
111 }
112 
113 
114 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
115 
117 (
118  const topoSetSource::setAction action,
119  topoSet& set
120 ) const
121 {
122  if (action == topoSetSource::ADD || action == topoSetSource::NEW)
123  {
124  if (verbose_)
125  {
126  Info<< " Adding cells mentioned in dictionary"
127  << " ..." << endl;
128  }
129 
130  addOrDelete(set, labels_, true);
131  }
132  else if (action == topoSetSource::SUBTRACT)
133  {
134  if (verbose_)
135  {
136  Info<< " Removing cells mentioned in dictionary"
137  << " ..." << endl;
138  }
139 
140  addOrDelete(set, labels_, false);
141  }
142 }
143 
144 
145 // ************************************************************************* //
List< ReturnType > get(const UPtrList< T > &list, const AccessOp &aop)
List of values generated by applying the access operation to each list item.
A topoSetCellSource to select cells based on explicitly given cell labels.
Definition: labelToCell.H:139
dictionary dict
virtual void applyToSet(const topoSetSource::setAction action, topoSet &set) const
Apply specified action to the topoSet.
Definition: labelToCell.C:110
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:83
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:74
Namespace for OpenFOAM.
addToRunTimeSelectionTable(functionObject, pointHistory, dictionary)