PrimitivePatchBdryPoints.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | foam-extend: Open Source CFD
4  \\ / O peration | Version: 3.2
5  \\ / A nd | Web: http://www.foam-extend.org
6  \\/ M anipulation | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9  This file is part of foam-extend.
10 
11  foam-extend is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by the
13  Free Software Foundation, either version 3 of the License, or (at your
14  option) any later version.
15 
16  foam-extend is distributed in the hope that it will be useful, but
17  WITHOUT ANY WARRANTY; without even the implied warranty of
18  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19  General Public License for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
26 #include "PrimitivePatchTemplate.H"
27 #include "HashSet.H"
28 
29 // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
30 
31 template
32 <
33  class Face,
34  template<class> class FaceList,
35  class PointField,
36  class PointType
37 >
38 void
41 {
42  if (debug)
43  {
44  Info<< "PrimitivePatch<Face, FaceList, PointField, PointType>::"
45  << "calcBdryPoints() : "
46  << "calculating boundary points"
47  << endl;
48  }
49 
50  if (boundaryPointsPtr_)
51  {
52  // it is considered an error to attempt to recalculate
53  // if already allocated
55  (
56  "PrimitivePatch<Face, FaceList, PointField, PointType>::"
57  "calcBdryPoints()"
58  ) << "edge types already calculated"
59  << abort(FatalError);
60  }
61 
62  const edgeList& e = edges();
63 
64  labelHashSet bp(2*e.size());
65 
66  for (label edgeI = nInternalEdges_; edgeI < e.size(); edgeI++)
67  {
68  const edge& curEdge = e[edgeI];
69 
70  bp.insert(curEdge.start());
71  bp.insert(curEdge.end());
72  }
73 
74  boundaryPointsPtr_ = new labelList(bp.toc());
75  sort(*boundaryPointsPtr_);
76 
77  if (debug)
78  {
79  Info<< "PrimitivePatch<Face, FaceList, PointField, PointType>::"
80  << "calcBdryPoints() : "
81  << "finished calculating boundary points"
82  << endl;
83  }
84 }
85 
86 
87 // ************************************************************************* //
Foam::labelList
List< label > labelList
A List of labels.
Definition: labelList.H:56
Foam::HashTable::toc
List< Key > toc() const
Return the table of contents.
Definition: HashTable.C:201
Foam::edge
An edge is a list of two point labels. The functionality it provides supports the discretisation on a...
Definition: edge.H:58
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:251
Foam::HashSet< label, Hash< label > >
PrimitivePatchTemplate.H
Foam::edge::end
label end() const
Return end vertex label.
Definition: edgeI.H:92
Foam::label
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
Foam::Info
messageStream Info
HashSet.H
Foam::FatalError
error FatalError
Foam::abort
errorManip< error > abort(error &err)
Definition: errorManip.H:131
Foam::edge::start
label start() const
Return start vertex label.
Definition: edgeI.H:81
Foam::PrimitivePatch::calcBdryPoints
void calcBdryPoints() const
Calculated boundary points on a patch.
Definition: PrimitivePatchBdryPoints.C:40
Foam::List
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Definition: HashTable.H:59
Foam::constant::electromagnetic::e
const dimensionedScalar e
Elementary charge.
Definition: doubleFloat.H:94
Foam::HashSet::insert
bool insert(const Key &key)
Insert a new entry.
Definition: HashSet.H:116
FatalErrorIn
#define FatalErrorIn(functionName)
Report an error message using Foam::FatalError.
Definition: error.H:313
Foam::sort
void sort(UList< T > &)
Definition: UList.C:107