cylinderToCell.H
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 OpenFOAM Foundation
9  Copyright (C) 2018-2020 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 Class
28  Foam::cylinderToCell
29 
30 Description
31  A \c topoSetCellSource to select all cells whose cell centre
32  inside a given bounding cylinder or cylinder annulus.
33 
34  Operands:
35  \table
36  Operand | Type | Location
37  output | cellSet | $FOAM_CASE/constant/polyMesh/sets/<set>
38  \endtable
39 
40 Usage
41  Minimal example by using \c system/topoSetDict.actions:
42  \verbatim
43  {
44  // Mandatory (inherited) entries
45  name <name>;
46  type cellSet;
47  action <action>;
48 
49  // Mandatory entries
50  source cylinderToCell;
51  p1 (<p1X> <p1Y> <p1Z>);
52  p2 (<p2X> <p2Y> <p2Z>);
53  radius <radius1>;
54 
55  // Optional entries
56  innerRadius <radius2>;
57  }
58  \endverbatim
59 
60  where the entries mean:
61  \table
62  Property | Description | Type | Req'd | Dflt
63  name | Name of cellSet | word | yes | -
64  type | Type name: cellSet | word | yes | -
65  action | Action applied on cells - see below | word | yes | -
66  source | Source name: cylinderToCell | word | yes | -
67  p1 | Coordinate of one of the endpoints | vector | yes | -
68  p2 | Coordinate of the other endpoint | vector | yes | -
69  radius | Cylinder outer radius | scalar | yes | -
70  innerRadius | Cylinder inner radius | scalar | no | 0
71  \endtable
72 
73  Options for the \c action entry:
74  \verbatim
75  new | Create a new cellSet from selected cells
76  add | Add selected cells into this cellSet
77  subtract | Remove selected cells from this cellSet
78  \endverbatim
79 
80 See also
81  - Foam::topoSetSource
82  - Foam::topoSetCellSource
83  - Foam::cylinderAnnulusToCell
84 
85 SourceFiles
86  cylinderToCell.C
87 
88 \*---------------------------------------------------------------------------*/
89 
90 #ifndef cylinderToCell_H
91 #define cylinderToCell_H
92 
93 #include "topoSetCellSource.H"
94 
95 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
96 
97 namespace Foam
98 {
99 
100 /*---------------------------------------------------------------------------*\
101  Class cylinderToCell Declaration
102 \*---------------------------------------------------------------------------*/
103 
104 class cylinderToCell
105 :
106  public topoSetCellSource
107 {
108  // Private Data
109 
110  //- Add usage string
111  static addToUsageTable usage_;
112 
113  //- First point on cylinder axis
114  point point1_;
115 
116  //- Second point on cylinder axis
117  point point2_;
118 
119  //- Outer radius
120  scalar radius_;
121 
122  //- Inner radius
123  scalar innerRadius_;
124 
125 
126  // Private Member Functions
127 
128  void combine(topoSet& set, const bool add) const;
129 
130 
131 public:
132 
133  //- Runtime type information
134  TypeName("cylinderToCell");
135 
136 
137  // Constructors
138 
139  //- Construct from components
141  (
142  const polyMesh& mesh,
143  const point& point1,
144  const point& point2,
145  const scalar radius,
146  const scalar innerRadius = 0
147  );
148 
149  //- Construct from dictionary
150  cylinderToCell(const polyMesh& mesh, const dictionary& dict);
151 
152  //- Construct from Istream
153  cylinderToCell(const polyMesh& mesh, Istream& is);
154 
155 
156  //- Destructor
157  virtual ~cylinderToCell() = default;
158 
159 
160  // Member Functions
161 
162  virtual void applyToSet
163  (
164  const topoSetSource::setAction action,
166  ) const;
167 };
168 
169 
170 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
171 
172 } // End namespace Foam
173 
174 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
175 
176 #endif
177 
178 // ************************************************************************* //
Foam::BitOps::set
void set(List< bool > &bools, const labelRange &range)
Set the specified range 'on' in a boolList.
Definition: BitOps.C:37
Foam::combine
Definition: FaceCellWave.C:57
Foam::cylinderToCell::~cylinderToCell
virtual ~cylinderToCell()=default
Destructor.
Foam::topoSetSource::setAction
setAction
Enumeration defining the valid actions.
Definition: topoSetSource.H:100
Foam::cylinderToCell::cylinderToCell
cylinderToCell(const polyMesh &mesh, const point &point1, const point &point2, const scalar radius, const scalar innerRadius=0)
Construct from components.
Definition: cylinderToCell.C:100
Foam::polyMesh
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:77
Foam::Istream
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
Definition: Istream.H:61
Foam::topoSet
General set of labels of mesh quantity (points, cells, faces).
Definition: topoSet.H:63
topoSetCellSource.H
dict
dictionary dict
Definition: searchingEngine.H:14
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:123
Foam::add
void add(FieldField< Field1, typename typeOfSum< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
Definition: FieldFieldFunctions.C:939
Foam::cylinderToCell::TypeName
TypeName("cylinderToCell")
Runtime type information.
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::Vector< scalar >
Foam::topoSetCellSource
The topoSetCellSource is a intermediate class for handling topoSet sources for selecting cells.
Definition: topoSetCellSource.H:54
Foam::cylinderToCell::applyToSet
virtual void applyToSet(const topoSetSource::setAction action, topoSet &set) const
Apply specified action to the topoSet.
Definition: cylinderToCell.C:158
Foam::topoSetSource::mesh
const polyMesh & mesh() const noexcept
Reference to the mesh.
Definition: topoSetSource.H:342
Foam::cylinderToCell
A topoSetCellSource to select all cells whose cell centre inside a given bounding cylinder or cylinde...
Definition: cylinderToCell.H:165
Foam::point
vector point
Point is a vector.
Definition: point.H:43