PrimitivePatch.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-2016 OpenFOAM Foundation
9  Copyright (C) 2016-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 Class
28  Foam::PrimitivePatch
29 
30 Description
31  A list of faces which address into the list of points.
32 
33  The class is templated on the face type (e.g. triangle, polygon etc.)
34  and on the list type of faces and points so that it can refer to
35  existing lists using UList and const pointField& or hold the storage
36  using List and pointField.
37 
38 SourceFiles
39  PrimitivePatchAddressing.C
40  PrimitivePatchBdryPoints.C
41  PrimitivePatch.C
42  PrimitivePatchCheck.C
43  PrimitivePatchClear.C
44  PrimitivePatchEdgeLoops.C
45  PrimitivePatchLocalPointOrder.C
46  PrimitivePatchMeshData.C
47  PrimitivePatchMeshEdges.C
48  PrimitivePatchName.C
49  PrimitivePatchPointAddressing.C
50  PrimitivePatchProjectPoints.C
51 
52 \*---------------------------------------------------------------------------*/
53 
54 #ifndef PrimitivePatch_H
55 #define PrimitivePatch_H
56 
57 #include "boolList.H"
58 #include "labelList.H"
59 #include "edgeList.H"
60 #include "point.H"
61 #include "intersection.H"
62 #include "HashSet.H"
63 #include "objectHit.H"
64 
65 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
66 
67 namespace Foam
68 {
69 
70 class face;
71 template<class T> class Map;
72 
73 /*---------------------------------------------------------------------------*\
74  Class PrimitivePatchName Declaration
75 \*---------------------------------------------------------------------------*/
76 
77 TemplateName(PrimitivePatch);
78 
79 
80 /*---------------------------------------------------------------------------*\
81  Class PrimitivePatch Declaration
82 \*---------------------------------------------------------------------------*/
83 
84 template
85 <
86  class Face,
87  template<class> class FaceList,
88  class PointField,
89  class PointType=point
90 >
91 class PrimitivePatch
92 :
93  public PrimitivePatchName,
94  public FaceList<Face>
95 {
96 
97 public:
98 
99  // Public typedefs
100 
101  typedef Face FaceType;
102  typedef FaceList<Face> FaceListType;
103  typedef PointField PointFieldType;
104 
105 
106  // Public data types
107 
108  //- Enumeration defining the surface type. Used in check routines.
109  enum surfaceTopo
110  {
113  ILLEGAL
114  };
115 
116 private:
117 
118  // Private data
119 
120  //- Reference to global list of points
121  PointField points_;
122 
123 
124  // Demand driven private data
125 
126  //- Edges of the patch; address into local point list;
127  // sorted with internal edges first in upper-triangular order
128  // and external edges last.
129  mutable edgeList* edgesPtr_;
130 
131  //- Which part of edgesPtr_ is internal edges.
132  mutable label nInternalEdges_;
133 
134  //- Boundary point labels, addressing into local point list
135  mutable labelList* boundaryPointsPtr_;
136 
137  //- Face-face addressing
138  mutable labelListList* faceFacesPtr_;
139 
140  //- Edge-face addressing
141  mutable labelListList* edgeFacesPtr_;
142 
143  //- Face-edge addressing
144  mutable labelListList* faceEdgesPtr_;
145 
146  //- Point-edge addressing
147  mutable labelListList* pointEdgesPtr_;
148 
149  //- Point-face addressing
150  mutable labelListList* pointFacesPtr_;
151 
152  //- Faces addressing into local point list
153  mutable List<Face>* localFacesPtr_;
154 
155  //- Labels of mesh points
156  mutable labelList* meshPointsPtr_;
157 
158  //- Mesh point map. Given the global point index find its
159  //- location in the patch
160  mutable Map<label>* meshPointMapPtr_;
161 
162  //- Outside edge loops
163  mutable labelListList* edgeLoopsPtr_;
164 
165  //- Points local to patch
166  mutable Field<PointType>* localPointsPtr_;
167 
168  //- Local point order for most efficient search
169  mutable labelList* localPointOrderPtr_;
170 
171  //- Face centres
172  mutable Field<PointType>* faceCentresPtr_;
173 
174  //- Face area vectors
175  mutable Field<PointType>* faceAreasPtr_;
176 
177  //- Mag face area
178  mutable Field<scalar>* magFaceAreasPtr_;
179 
180  //- Face unit normals
181  mutable Field<PointType>* faceNormalsPtr_;
182 
183  //- Point unit normals
184  mutable Field<PointType>* pointNormalsPtr_;
185 
186 
187  // Private Member Functions
188 
189  //- Calculate edges of the patch
190  void calcIntBdryEdges() const;
191 
192  //- Calculated boundary points on a patch
193  void calcBdryPoints() const;
194 
195  //- Calculate addressing
196  void calcAddressing() const;
197 
198  //- Calculate point-edge addressing
199  void calcPointEdges() const;
200 
201  //- Calculate point-face addressing
202  void calcPointFaces() const;
203 
204  //- Calculate mesh addressing
205  void calcMeshData() const;
206 
207  //- Calculate mesh point map
208  void calcMeshPointMap() const;
209 
210  //- Calculate outside edge loops
211  void calcEdgeLoops() const;
212 
213  //- Calculate local points
214  void calcLocalPoints() const;
215 
216  //- Calculate local point order
217  void calcLocalPointOrder() const;
218 
219  //- Calculate face centres
220  void calcFaceCentres() const;
221 
222  //- Calculate face area vectors
223  void calcFaceAreas() const;
224 
225  //- Calculate face area magnitudes
226  void calcMagFaceAreas() const;
227 
228  //- Calculate unit face normals
229  void calcFaceNormals() const;
230 
231  //- Calculate unit point normals
232  void calcPointNormals() const;
233 
234 
235  //- Face-edge-face walk while remaining on a patch point.
236  // Used to determine if surface multiply connected through point.
237  void visitPointRegion
238  (
239  const label pointi,
240  const labelList& pFaces,
241  const label startFacei,
242  const label startEdgeI,
243  boolList& pFacesHad
244  ) const;
245 
246 
247 public:
248 
249  // Constructors
250 
251  //- Construct from components
253  (
254  const FaceList<Face>& faces,
255  const Field<PointType>& points
256  );
257 
258  //- Construct from components, transferring faces
260  (
261  FaceList<Face>&& faces,
262  const Field<PointType>& points
263  );
264 
265  //- Construct from components, reuse storage
267  (
268  FaceList<Face>& faces,
270  const bool reuse
271  );
272 
273  //- Construct as copy
275  (
277  );
278 
279 
280  //- Destructor
281  virtual ~PrimitivePatch();
282 
283  void clearOut();
284 
285  void clearGeom();
286 
287  void clearTopology();
288 
289  void clearPatchMeshAddr();
290 
291 
292  // Member Functions
293 
294  //- Suppress direct swapping, since storage containers may be const
295  void swap(PrimitivePatch&) = delete;
296 
297 
298  // Access
299 
300  //- Return reference to global points
301  const Field<PointType>& points() const
302  {
303  return points_;
304  }
305 
306 
307  // Access functions for demand-driven data
308 
309  // Topological data; no mesh required.
310 
311  //- Return number of points supporting patch faces
312  label nPoints() const
313  {
314  return meshPoints().size();
315  }
316 
317  //- Return number of edges in patch
318  label nEdges() const
319  {
320  return edges().size();
321  }
322 
323  //- Return list of edges, address into LOCAL point list
324  const edgeList& edges() const;
325 
326  //- Number of internal edges
327  label nInternalEdges() const;
328 
329  //- Is internal edge?
330  bool isInternalEdge(const label edgei) const
331  {
332  return edgei < nInternalEdges();
333  }
334 
335  //- Return list of boundary points, address into LOCAL point list
336  const labelList& boundaryPoints() const;
337 
338  //- Return face-face addressing
339  const labelListList& faceFaces() const;
340 
341  //- Return edge-face addressing
342  const labelListList& edgeFaces() const;
343 
344  //- Return face-edge addressing
345  const labelListList& faceEdges() const;
346 
347  //- Return point-edge addressing
348  const labelListList& pointEdges() const;
349 
350  //- Return point-face addressing
351  const labelListList& pointFaces() const;
352 
353  //- Return patch faces addressing into local point list
354  const List<Face>& localFaces() const;
355 
356 
357  // Addressing into mesh
358 
359  //- Return labelList of mesh points in patch.
360  // They are constructed by walking through the faces in
361  // incremental order and not sorted anymore.
362  const labelList& meshPoints() const;
363 
364  //- Mesh point map.
365  // Given the global point index find its location in the patch
366  const Map<label>& meshPointMap() const;
367 
368  //- Return pointField of points in patch
369  const Field<PointType>& localPoints() const;
370 
371  //- Return orders the local points for most efficient search
372  const labelList& localPointOrder() const;
373 
374  //- Given a global point index, return the local point index.
375  // If the point is not found, return -1
376  label whichPoint(const label gp) const;
377 
378  //- Given an edge in local point labels, return its
379  //- index in the edge list. If the edge is not found, return -1
380  label whichEdge(const edge&) const;
381 
382  //- Return labels of patch edges in the global edge list using
383  //- cell addressing
385  (
386  const edgeList& allEdges,
387  const labelListList& cellEdges,
388  const labelList& faceCells
389  ) const;
390 
391  //- Return labels of patch edges in the global edge list using
392  //- basic edge addressing.
394  (
395  const edgeList& allEdges,
397  ) const;
398 
399  //- Return face centres for patch
400  const Field<PointType>& faceCentres() const;
401 
402  //- Return face area vectors for patch
403  const Field<PointType>& faceAreas() const;
404 
405  //- Return face area magnitudes for patch
406  const Field<scalar>& magFaceAreas() const;
407 
408  //- Return face unit normals for patch
409  const Field<PointType>& faceNormals() const;
410 
411  //- Return point normals for patch
412  const Field<PointType>& pointNormals() const;
413 
414 
415  // Storage Management
416 
417  inline bool hasFaceAreas() const { return faceAreasPtr_; }
418  inline bool hasFaceCentres() const { return faceCentresPtr_; }
419  inline bool hasFaceNormals() const { return faceNormalsPtr_; }
420  inline bool hasPointNormals() const { return pointNormalsPtr_; }
421 
422 
423  // Other patch operations
424 
425  //- Project vertices of patch onto another patch
426  template<class ToPatch>
427  List<objectHit> projectPoints
428  (
429  const ToPatch& targetPatch,
430  const Field<PointType>& projectionDirection,
433  ) const;
434 
435  //- Project vertices of patch onto another patch
436  template<class ToPatch>
437  List<objectHit> projectFaceCentres
438  (
439  const ToPatch& targetPatch,
440  const Field<PointType>& projectionDirection,
443  ) const;
444 
445  //- Return list of closed loops of boundary vertices.
446  // Edge loops are given as ordered lists of vertices
447  // in local addressing
448  const labelListList& edgeLoops() const;
449 
450 
451  // Check
452 
453  //- Calculate surface type formed by patch.
454  // Types:
455  // - all edges have two neighbours (manifold)
456  // - some edges have more than two neighbours (illegal)
457  // - other (open)
458  surfaceTopo surfaceType() const;
459 
460  //- Check surface formed by patch for manifoldness (see above).
461  // Return true if any incorrect edges are found.
462  // Insert vertices of incorrect edges into set.
463  bool checkTopology
464  (
465  const bool report = false,
466  labelHashSet* setPtr = nullptr
467  ) const;
468 
469  //- Checks primitivePatch for faces sharing point but not edge.
470  // This denotes a surface that is pinched at a single point
471  // (test for pinched at single edge is already in PrimitivePatch)
472  // Returns true if this situation found and puts conflicting
473  // (mesh)point in set. Based on all the checking routines in
474  // primitiveMesh.
475  bool checkPointManifold
476  (
477  const bool report = false,
478  labelHashSet* setPtr = nullptr
479  ) const;
480 
481 
482  // Edit
483 
484  //- Correct patch after moving points
485  virtual void movePoints(const Field<PointType>&);
486 
487 
488  // Member Operators
489 
490  //- Assignment
491  void operator=
492  (
493  const PrimitivePatch<Face, FaceList, PointField, PointType>&
494  );
495 };
496 
497 
498 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
499 
500 } // End namespace Foam
501 
502 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
503 
504 #ifdef NoRepository
505  #include "PrimitivePatch.C"
506 #endif
507 
508 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
509 
510 #endif
511 
512 // ************************************************************************* //
Foam::intersection::direction
direction
Definition: intersection.H:66
Foam::PrimitivePatch::projectFaceCentres
List< objectHit > projectFaceCentres(const ToPatch &targetPatch, const Field< PointType > &projectionDirection, const intersection::algorithm=intersection::FULL_RAY, const intersection::direction=intersection::VECTOR) const
Project vertices of patch onto another patch.
Foam::PrimitivePatch::pointFaces
const labelListList & pointFaces() const
Return point-face addressing.
Definition: PrimitivePatch.C:378
Foam::PrimitivePatch::whichPoint
label whichPoint(const label gp) const
Given a global point index, return the local point index.
Definition: PrimitivePatch.C:499
Foam::PrimitivePatch::points
const Field< PointType > & points() const
Return reference to global points.
Definition: PrimitivePatch.H:300
Foam::PrimitivePatch::edgeFaces
const labelListList & edgeFaces() const
Return edge-face addressing.
Definition: PrimitivePatch.C:318
boolList.H
intersection.H
Foam::PrimitivePatch::edges
const edgeList & edges() const
Return list of edges, address into LOCAL point list.
Definition: PrimitivePatch.C:238
Foam::PrimitivePatch::projectPoints
List< objectHit > projectPoints(const ToPatch &targetPatch, const Field< PointType > &projectionDirection, const intersection::algorithm=intersection::FULL_RAY, const intersection::direction=intersection::VECTOR) const
Project vertices of patch onto another patch.
Foam::PrimitivePatch::PrimitivePatch
PrimitivePatch(const FaceList< Face > &faces, const Field< PointType > &points)
Construct from components.
Definition: PrimitivePatch.C:41
Foam::PrimitivePatch::localPoints
const Field< PointType > & localPoints() const
Return pointField of points in patch.
Definition: PrimitivePatch.C:458
point.H
Foam::PrimitivePatch::nEdges
label nEdges() const
Return number of edges in patch.
Definition: PrimitivePatch.H:317
Foam::PrimitivePatch::hasFaceCentres
bool hasFaceCentres() const
Definition: PrimitivePatch.H:417
Foam::PrimitivePatch::meshEdges
labelList meshEdges(const edgeList &allEdges, const labelListList &cellEdges, const labelList &faceCells) const
Definition: PrimitivePatchMeshEdges.C:43
Foam::edge
An edge is a list of two point labels. The functionality it provides supports the discretisation on a...
Definition: edge.H:63
Foam::intersection::FULL_RAY
Definition: intersection.H:74
Foam::PrimitivePatch::~PrimitivePatch
virtual ~PrimitivePatch()
Destructor.
Definition: PrimitivePatch.C:195
Foam::Map< label >
Foam::PrimitivePatch::faceEdges
const labelListList & faceEdges() const
Return face-edge addressing.
Definition: PrimitivePatch.C:338
Foam::HashSet< label, Hash< label > >
Foam::PrimitivePatch::surfaceType
surfaceTopo surfaceType() const
Calculate surface type formed by patch.
Definition: PrimitivePatchCheck.C:122
Foam::PrimitivePatch::hasPointNormals
bool hasPointNormals() const
Definition: PrimitivePatch.H:419
Foam::PrimitivePatch::MANIFOLD
Definition: PrimitivePatch.H:110
Foam::PrimitivePatch::faceAreas
const Field< PointType > & faceAreas() const
Return face area vectors for patch.
Definition: PrimitivePatch.C:537
objectHit.H
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:62
pFaces
Info<< "Finished reading KIVA file"<< endl;cellShapeList cellShapes(nPoints);labelList cellZoning(nPoints, -1);const cellModel &hex=cellModel::ref(cellModel::HEX);labelList hexLabels(8);label activeCells=0;labelList pointMap(nPoints);forAll(pointMap, i){ pointMap[i]=i;}for(label i=0;i< nPoints;i++){ if(f[i] > 0.0) { hexLabels[0]=i;hexLabels[1]=i1tab[i];hexLabels[2]=i3tab[i1tab[i]];hexLabels[3]=i3tab[i];hexLabels[4]=i8tab[i];hexLabels[5]=i1tab[i8tab[i]];hexLabels[6]=i3tab[i1tab[i8tab[i]]];hexLabels[7]=i3tab[i8tab[i]];cellShapes[activeCells]=cellShape(hex, hexLabels);edgeList edges=cellShapes[activeCells].edges();forAll(edges, ei) { if(edges[ei].mag(points)< SMALL) { label start=pointMap[edges[ei].start()];while(start !=pointMap[start]) { start=pointMap[start];} label end=pointMap[edges[ei].end()];while(end !=pointMap[end]) { end=pointMap[end];} label minLabel=min(start, end);pointMap[start]=pointMap[end]=minLabel;} } cellZoning[activeCells]=idreg[i];activeCells++;}}cellShapes.setSize(activeCells);cellZoning.setSize(activeCells);forAll(cellShapes, celli){ cellShape &cs=cellShapes[celli];forAll(cs, i) { cs[i]=pointMap[cs[i]];} cs.collapse();}label bcIDs[11]={-1, 0, 2, 4, -1, 5, -1, 6, 7, 8, 9};const label nBCs=12;const word *kivaPatchTypes[nBCs]={ &wallPolyPatch::typeName, &wallPolyPatch::typeName, &wallPolyPatch::typeName, &wallPolyPatch::typeName, &symmetryPolyPatch::typeName, &wedgePolyPatch::typeName, &polyPatch::typeName, &polyPatch::typeName, &polyPatch::typeName, &polyPatch::typeName, &symmetryPolyPatch::typeName, &oldCyclicPolyPatch::typeName};enum patchTypeNames{ PISTON, VALVE, LINER, CYLINDERHEAD, AXIS, WEDGE, INFLOW, OUTFLOW, PRESIN, PRESOUT, SYMMETRYPLANE, CYCLIC};const char *kivaPatchNames[nBCs]={ "piston", "valve", "liner", "cylinderHead", "axis", "wedge", "inflow", "outflow", "presin", "presout", "symmetryPlane", "cyclic"};List< SLList< face > > pFaces[nBCs]
Definition: readKivaGrid.H:235
labelList.H
Foam::Field< PointType >
Foam::PrimitivePatch::PointFieldType
PointField PointFieldType
Definition: PrimitivePatch.H:102
Foam::PrimitivePatch::pointEdges
const labelListList & pointEdges() const
Return point-edge addressing.
Definition: PrimitivePatch.C:358
Foam::intersection::algorithm
algorithm
Definition: intersection.H:72
Foam::TemplateName
TemplateName(blendedSchemeBase)
Foam::PrimitivePatch::movePoints
virtual void movePoints(const Field< PointType > &)
Correct patch after moving points.
Definition: PrimitivePatch.C:213
Foam::PrimitivePatch::FaceType
Face FaceType
Definition: PrimitivePatch.H:100
Foam::PrimitivePatch::clearGeom
void clearGeom()
Definition: PrimitivePatchClear.C:43
HashSet.H
Foam::PrimitivePatch::nPoints
label nPoints() const
Return number of points supporting patch faces.
Definition: PrimitivePatch.H:311
edgeList.H
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::intersection::VECTOR
Definition: intersection.H:68
Foam::PrimitivePatch::clearTopology
void clearTopology()
Definition: PrimitivePatchClear.C:68
Foam::PrimitivePatch< face, ::Foam::List, pointField, point >::surfaceTopo
surfaceTopo
Enumeration defining the surface type. Used in check routines.
Definition: PrimitivePatch.H:108
Foam::PrimitivePatch::FaceListType
FaceList< Face > FaceListType
Definition: PrimitivePatch.H:101
Foam::PrimitivePatch::boundaryPoints
const labelList & boundaryPoints() const
Return list of boundary points, address into LOCAL point list.
Definition: PrimitivePatch.C:278
Foam::PrimitivePatch::nInternalEdges
label nInternalEdges() const
Number of internal edges.
Definition: PrimitivePatch.C:258
Foam::PrimitivePatch::pointNormals
const Field< PointType > & pointNormals() const
Return point normals for patch.
Definition: PrimitivePatch.C:597
Foam::labelListList
List< labelList > labelListList
A List of labelList.
Definition: labelList.H:56
Foam::PrimitivePatch::checkPointManifold
bool checkPointManifold(const bool report=false, labelHashSet *setPtr=nullptr) const
Checks primitivePatch for faces sharing point but not edge.
Definition: PrimitivePatchCheck.C:230
Foam::PrimitivePatch::hasFaceAreas
bool hasFaceAreas() const
Definition: PrimitivePatch.H:416
Foam::PrimitivePatch::faceNormals
const Field< PointType > & faceNormals() const
Return face unit normals for patch.
Definition: PrimitivePatch.C:577
Foam::PrimitivePatch::isInternalEdge
bool isInternalEdge(const label edgei) const
Is internal edge?
Definition: PrimitivePatch.H:329
Foam::PrimitivePatch::edgeLoops
const labelListList & edgeLoops() const
Return list of closed loops of boundary vertices.
Definition: PrimitivePatchEdgeLoops.C:168
Foam::List< edge >
Foam::PrimitivePatch::clearOut
void clearOut()
Definition: PrimitivePatchClear.C:130
Foam::PrimitivePatch::faceCentres
const Field< PointType > & faceCentres() const
Return face centres for patch.
Definition: PrimitivePatch.C:517
PrimitivePatch.C
Foam::PrimitivePatch::localPointOrder
const labelList & localPointOrder() const
Return orders the local points for most efficient search.
Definition: PrimitivePatch.C:478
Foam::PrimitivePatch::whichEdge
label whichEdge(const edge &) const
Definition: PrimitivePatchMeshEdges.C:177
Foam::PrimitivePatch::OPEN
Definition: PrimitivePatch.H:111
Foam::PrimitivePatch::magFaceAreas
const Field< scalar > & magFaceAreas() const
Return face area magnitudes for patch.
Definition: PrimitivePatch.C:557
Foam::PrimitivePatch::localFaces
const List< Face > & localFaces() const
Return patch faces addressing into local point list.
Definition: PrimitivePatch.C:398
Foam::PrimitivePatch::clearPatchMeshAddr
void clearPatchMeshAddr()
Definition: PrimitivePatchClear.C:108
Foam::PrimitivePatch::hasFaceNormals
bool hasFaceNormals() const
Definition: PrimitivePatch.H:418
Foam::PrimitivePatch::ILLEGAL
Definition: PrimitivePatch.H:112
Foam::point
vector point
Point is a vector.
Definition: point.H:43
Foam::PrimitivePatch::meshPointMap
const Map< label > & meshPointMap() const
Mesh point map.
Definition: PrimitivePatch.C:438
Foam::PrimitivePatch::faceFaces
const labelListList & faceFaces() const
Return face-face addressing.
Definition: PrimitivePatch.C:298
Foam::labelHashSet
HashSet< label, Hash< label > > labelHashSet
A HashSet with label keys and label hasher.
Definition: HashSet.H:415
Foam::PrimitivePatch::meshPoints
const labelList & meshPoints() const
Return labelList of mesh points in patch.
Definition: PrimitivePatch.C:418
Foam::PrimitivePatch::checkTopology
bool checkTopology(const bool report=false, labelHashSet *setPtr=nullptr) const
Check surface formed by patch for manifoldness (see above).
Definition: PrimitivePatchCheck.C:170
Foam::PrimitivePatch::swap
void swap(PrimitivePatch &)=delete
Suppress direct swapping, since storage containers may be const.
Foam::faceCells
Smooth ATC in cells next to a set of patches supplied by type.
Definition: faceCells.H:56
Foam::PrimitivePatch
A list of faces which address into the list of points.
Definition: PrimitivePatch.H:90