rotatedBoxToCell.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 Class
25  Foam::rotatedBoxToCell
26 
27 Description
28  A topoSetSource to select cells based on cell centres inside
29  rotated/skewed box (parallelopiped?).
30 
31  Box defined as origin and i,j,k vectors.
32  E.g. box rotated 45 degrees around z-axis with sizes sqrt(0.2^2+0.2^2)
33  (and extra large, 200 in z direction):
34  \verbatim
35  origin ( 0.4 0.4 -100);
36  i ( 0.2 0.2 0);
37  j (-0.2 0.2 0);
38  k ( 0.0 0.0 100);
39  \endverbatim
40 
41 SourceFiles
42  rotatedBoxToCell.C
43 
44 \*---------------------------------------------------------------------------*/
45 
46 #ifndef rotatedBoxToCell_H
47 #define rotatedBoxToCell_H
48 
49 #include "topoSetSource.H"
50 #include "treeBoundBox.H"
51 
52 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
53 
54 namespace Foam
55 {
56 
57 /*---------------------------------------------------------------------------*\
58  Class rotatedBoxToCell Declaration
59 \*---------------------------------------------------------------------------*/
60 
61 class rotatedBoxToCell
62 :
63  public topoSetSource
64 {
65 
66  // Private Data
67 
68  //- Add usage string
69  static addToUsageTable usage_;
70 
71 
72  //- Skewed box
73  const vector origin_;
74  const vector i_;
75  const vector j_;
76  const vector k_;
77 
78 
79  // Private Member Functions
80 
81  void combine(topoSet& set, const bool add) const;
82 
83 
84 public:
85 
86  //- Runtime type information
87  TypeName("rotatedBoxToCell");
88 
89  // Constructors
90 
91  //- Construct from components
93  (
94  const polyMesh& mesh,
95  const vector& origin,
96  const vector& i,
97  const vector& j,
98  const vector& k
99  );
100 
101  //- Construct from dictionary
102  rotatedBoxToCell(const polyMesh& mesh, const dictionary& dict);
103 
104  //- Construct from Istream
105  rotatedBoxToCell(const polyMesh& mesh, Istream&);
106 
107 
108  //- Destructor
109  virtual ~rotatedBoxToCell();
110 
111 
112  // Member Functions
114  virtual sourceType setType() const
115  {
116  return CELLSETSOURCE;
117  }
118 
119  virtual void applyToSet
120  (
121  const topoSetSource::setAction action,
122  topoSet&
123  ) const;
124 
125 };
126 
127 
128 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
129 
130 } // End namespace Foam
131 
132 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
133 
134 #endif
135 
136 // ************************************************************************* //
dictionary dict
A list of keyword definitions, which are a keyword followed by any number of values (e...
Definition: dictionary.H:156
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
Definition: Istream.H:57
TypeName("rotatedBoxToCell")
Runtime type information.
label k
Boltzmann constant.
Base class of a source for a topoSet.
Definition: topoSetSource.H:63
const polyMesh & mesh() const
virtual sourceType setType() const
virtual void applyToSet(const topoSetSource::setAction action, topoSet &) const
setAction
Enumeration defining the valid actions.
Definition: topoSetSource.H:82
void add(FieldField< Field1, typename typeOfSum< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
General set of labels of mesh quantity (points, cells, faces).
Definition: topoSet.H:61
A topoSetSource to select cells based on cell centres inside rotated/skewed box (parallelopiped?).
sourceType
Enumeration defining the types of sources.
Definition: topoSetSource.H:70
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:74
virtual ~rotatedBoxToCell()
Destructor.
Namespace for OpenFOAM.
rotatedBoxToCell(const polyMesh &mesh, const vector &origin, const vector &i, const vector &j, const vector &k)
Construct from components.