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-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::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 // Forward Declarations
71 class face;
72 template<class T> class Map;
73 
74 /*---------------------------------------------------------------------------*\
75  Class PrimitivePatchName Declaration
76 \*---------------------------------------------------------------------------*/
77 
78 TemplateName(PrimitivePatch);
79 
80 
81 /*---------------------------------------------------------------------------*\
82  Class PrimitivePatch Declaration
83 \*---------------------------------------------------------------------------*/
84 
85 template<class FaceList, class PointField>
86 class PrimitivePatch
87 :
88  public PrimitivePatchName,
89  public FaceList
90 {
91 public:
92 
93  // Public Typedefs
94 
95  //- The face type
96  typedef typename
97  std::remove_reference<FaceList>::type::value_type face_type;
98 
99  //- The point type
100  typedef typename
101  std::remove_reference<PointField>::type::value_type point_type;
102 
103  //- The face list type
104  typedef FaceList FaceListType;
105 
106  //- The point field type
107  typedef PointField PointFieldType;
108 
109  //- Deprecated(2020-03) prefer face_type typedef
110  // \deprecated(2020-03) prefer face_type typedef
111  typedef face_type FaceType;
112 
113 
114  // Public Data Types
115 
116  //- Enumeration defining the surface type. Used in check routines.
117  enum surfaceTopo
118  {
121  ILLEGAL
122  };
123 
124 private:
125 
126  // Private Data
127 
128  //- Reference to global list of points
129  PointField points_;
130 
131 
132  // Demand driven private data
133 
134  //- Edges of the patch; address into local point list;
135  // sorted with internal edges first in upper-triangular order
136  // and external edges last.
137  mutable unique_ptr<edgeList> edgesPtr_;
138 
139  //- Which part of edgesPtr_ is internal edges.
140  mutable label nInternalEdges_;
141 
142  //- Boundary point labels, addressing into local point list
143  mutable unique_ptr<labelList> boundaryPointsPtr_;
144 
145  //- Face-face addressing
146  mutable unique_ptr<labelListList> faceFacesPtr_;
147 
148  //- Edge-face addressing
149  mutable unique_ptr<labelListList> edgeFacesPtr_;
150 
151  //- Face-edge addressing
152  mutable unique_ptr<labelListList> faceEdgesPtr_;
153 
154  //- Point-edge addressing
155  mutable unique_ptr<labelListList> pointEdgesPtr_;
156 
157  //- Point-face addressing
158  mutable unique_ptr<labelListList> pointFacesPtr_;
159 
160  //- Faces addressing into local point list
161  mutable unique_ptr<List<face_type>> localFacesPtr_;
162 
163  //- Labels of mesh points
164  mutable unique_ptr<labelList> meshPointsPtr_;
165 
166  //- Mesh point map. Given the global point index find its
167  //- location in the patch
168  mutable unique_ptr<Map<label>> meshPointMapPtr_;
169 
170  //- Outside edge loops
171  mutable unique_ptr<labelListList> edgeLoopsPtr_;
172 
173  //- Points local to patch
174  mutable unique_ptr<Field<point_type>> localPointsPtr_;
175 
176  //- Local point order for most efficient search
177  mutable unique_ptr<labelList> localPointOrderPtr_;
178 
179  //- Face centres
180  mutable unique_ptr<Field<point_type>> faceCentresPtr_;
181 
182  //- Face area vectors
183  mutable unique_ptr<Field<point_type>> faceAreasPtr_;
184 
185  //- Mag face area
186  mutable unique_ptr<Field<scalar>> magFaceAreasPtr_;
187 
188  //- Face unit normals
189  mutable unique_ptr<Field<point_type>> faceNormalsPtr_;
190 
191  //- Point unit normals
192  mutable unique_ptr<Field<point_type>> pointNormalsPtr_;
193 
194 
195  // Private Member Functions
196 
197  //- Calculate edges of the patch
198  void calcIntBdryEdges() const;
199 
200  //- Calculated boundary points on a patch
201  void calcBdryPoints() const;
202 
203  //- Calculate addressing
204  void calcAddressing() const;
205 
206  //- Calculate point-edge addressing
207  void calcPointEdges() const;
208 
209  //- Calculate point-face addressing
210  void calcPointFaces() const;
211 
212  //- Calculate mesh addressing
213  void calcMeshData() const;
214 
215  //- Calculate mesh point map
216  void calcMeshPointMap() const;
217 
218  //- Calculate outside edge loops
219  void calcEdgeLoops() const;
220 
221  //- Calculate local points
222  void calcLocalPoints() const;
223 
224  //- Calculate local point order
225  void calcLocalPointOrder() const;
226 
227  //- Calculate face centres
228  void calcFaceCentres() const;
229 
230  //- Calculate face area vectors
231  void calcFaceAreas() const;
232 
233  //- Calculate face area magnitudes
234  void calcMagFaceAreas() const;
235 
236  //- Calculate unit face normals
237  void calcFaceNormals() const;
238 
239  //- Calculate unit point normals
240  void calcPointNormals() const;
241 
242 
243  //- Face-edge-face walk while remaining on a patch point.
244  // Used to determine if surface multiply connected through point.
245  void visitPointRegion
246  (
247  const label pointi,
248  const labelList& pFaces,
249  const label startFacei,
250  const label startEdgeI,
251  boolList& pFacesHad
252  ) const;
253 
254 
255 public:
256 
257  // Constructors
258 
259  //- Construct from components
261  (
262  const FaceList& faces,
263  const PointField& points
264  );
265 
266  //- Construct from components, transferring faces
268  (
269  FaceList&& faces,
270  const PointField& points
271  );
272 
273  //- Construct from components, reuse storage
275  (
276  FaceList& faces,
277  PointField& points,
278  const bool reuse
279  );
280 
281  //- Copy construct
283 
284 
285  //- Destructor
286  virtual ~PrimitivePatch();
287 
288  void clearOut();
289 
290  void clearGeom();
291 
292  void clearTopology();
293 
294  void clearPatchMeshAddr();
295 
296 
297  // Member Functions
298 
299  //- Suppress direct swapping, since storage containers may be const
300  void swap(PrimitivePatch&) = delete;
301 
302 
303  // Access
304 
305  //- Return reference to global points
306  const Field<point_type>& points() const
307  {
308  return points_;
309  }
310 
311 
312  // Access functions for demand-driven data
313 
314  // Topological data; no mesh required.
315 
316  //- Return number of points supporting patch faces
317  label nPoints() const
318  {
319  return meshPoints().size();
320  }
321 
322  //- Return number of edges in patch
323  label nEdges() const
324  {
325  return edges().size();
326  }
327 
328  //- Return list of edges, address into LOCAL point list
329  const edgeList& edges() const;
330 
331  //- Number of internal edges
332  label nInternalEdges() const;
333 
334  //- Is internal edge?
335  bool isInternalEdge(const label edgei) const
336  {
337  return edgei < nInternalEdges();
338  }
339 
340  //- Return list of boundary points, address into LOCAL point list
341  const labelList& boundaryPoints() const;
342 
343  //- Return face-face addressing
344  const labelListList& faceFaces() const;
345 
346  //- Return edge-face addressing
347  const labelListList& edgeFaces() const;
348 
349  //- Return face-edge addressing
350  const labelListList& faceEdges() const;
351 
352  //- Return point-edge addressing
353  const labelListList& pointEdges() const;
354 
355  //- Return point-face addressing
356  const labelListList& pointFaces() const;
357 
358  //- Return patch faces addressing into local point list
359  const List<face_type>& localFaces() const;
360 
361 
362  // Addressing into mesh
363 
364  //- Return labelList of mesh points in patch.
365  // They are constructed by walking through the faces in
366  // incremental order and not sorted anymore.
367  const labelList& meshPoints() const;
368 
369  //- Mesh point map.
370  // Given the global point index find its location in the patch
371  const Map<label>& meshPointMap() const;
372 
373  //- Return pointField of points in patch
374  const Field<point_type>& localPoints() const;
375 
376  //- Return orders the local points for most efficient search
377  const labelList& localPointOrder() const;
378 
379  //- Given a global point index, return the local point index.
380  // If the point is not found, return -1
381  label whichPoint(const label gp) const;
382 
383  //- Given an edge in local point labels, return its
384  //- index in the edge list. If the edge is not found, return -1
385  label whichEdge(const edge&) const;
386 
387  //- Return labels of patch edges in the global edge list using
388  //- cell addressing
390  (
391  const edgeList& allEdges,
392  const labelListList& cellEdges,
393  const labelList& faceCells
394  ) const;
395 
396  //- Return labels of patch edges in the global edge list using
397  //- basic edge addressing.
399  (
400  const edgeList& allEdges,
402  ) const;
403 
404  //- Return face centres for patch
405  const Field<point_type>& faceCentres() const;
406 
407  //- Return face area vectors for patch
408  const Field<point_type>& faceAreas() const;
409 
410  //- Return face area magnitudes for patch
411  const Field<scalar>& magFaceAreas() const;
412 
413  //- Return face unit normals for patch
414  const Field<point_type>& faceNormals() const;
415 
416  //- Return point normals for patch
417  const Field<point_type>& pointNormals() const;
418 
419 
420  // Storage Management
421 
422  bool hasFaceAreas() const { return bool(faceAreasPtr_); }
423  bool hasFaceCentres() const { return bool(faceCentresPtr_); }
424  bool hasFaceNormals() const { return bool(faceNormalsPtr_); }
425  bool hasPointNormals() const { return bool(pointNormalsPtr_); }
426 
427 
428  // Other patch operations
429 
430  //- Project vertices of patch onto another patch
431  template<class ToPatch>
432  List<objectHit> projectPoints
433  (
434  const ToPatch& targetPatch,
435  const Field<point_type>& projectionDirection,
438  ) const;
439 
440  //- Project vertices of patch onto another patch
441  template<class ToPatch>
442  List<objectHit> projectFaceCentres
443  (
444  const ToPatch& targetPatch,
445  const Field<point_type>& projectionDirection,
448  ) const;
449 
450  //- Return list of closed loops of boundary vertices.
451  // Edge loops are given as ordered lists of vertices
452  // in local addressing
453  const labelListList& edgeLoops() const;
454 
455 
456  // Check
457 
458  //- Calculate surface type formed by patch.
459  // Types:
460  // - all edges have two neighbours (manifold)
461  // - some edges have more than two neighbours (illegal)
462  // - other (open)
463  surfaceTopo surfaceType() const;
464 
465  //- Check surface formed by patch for manifoldness (see above).
466  // Return true if any incorrect edges are found.
467  // Insert vertices of incorrect edges into set.
468  bool checkTopology
469  (
470  const bool report = false,
471  labelHashSet* setPtr = nullptr
472  ) const;
473 
474  //- Checks primitivePatch for faces sharing point but not edge.
475  // This denotes a surface that is pinched at a single point
476  // (test for pinched at single edge is already in PrimitivePatch)
477  // Returns true if this situation found and puts conflicting
478  // (mesh)point in set. Based on all the checking routines in
479  // primitiveMesh.
480  bool checkPointManifold
481  (
482  const bool report = false,
483  labelHashSet* setPtr = nullptr
484  ) const;
485 
486 
487  // Edit
488 
489  //- Correct patch after moving points
490  virtual void movePoints(const Field<point_type>&);
491 
492 
493  // Member Operators
494 
495  //- Copy assign faces. Leave points alone (could be a reference).
496  void operator=(const PrimitivePatch<FaceList, PointField>& rhs);
497 
498  //- Move assign faces. Leave points alone (could be a reference).
499  void operator=(PrimitivePatch<FaceList, PointField>&& rhs);
500 };
501 
502 
503 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
504 
505 } // End namespace Foam
506 
507 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
508 
509 #ifdef NoRepository
510  #include "PrimitivePatch.C"
511 #endif
512 
513 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
514 
515 #endif
516 
517 // ************************************************************************* //
Foam::intersection::direction
direction
Definition: intersection.H:66
Foam::PrimitivePatch::pointFaces
const labelListList & pointFaces() const
Return point-face addressing.
Definition: PrimitivePatch.C:281
Foam::PrimitivePatch::whichPoint
label whichPoint(const label gp) const
Given a global point index, return the local point index.
Definition: PrimitivePatch.C:366
Foam::PrimitivePatch::edgeFaces
const labelListList & edgeFaces() const
Return edge-face addressing.
Definition: PrimitivePatch.C:242
boolList.H
intersection.H
Foam::PrimitivePatch::edges
const edgeList & edges() const
Return list of edges, address into LOCAL point list.
Definition: PrimitivePatch.C:190
Foam::PrimitivePatch::FaceListType
FaceList FaceListType
The face list type.
Definition: PrimitivePatch.H:103
point.H
Foam::PrimitivePatch::pointNormals
const Field< point_type > & pointNormals() const
Return point normals for patch.
Definition: PrimitivePatch.C:441
Foam::PrimitivePatch::nEdges
label nEdges() const
Return number of edges in patch.
Definition: PrimitivePatch.H:322
Foam::PrimitivePatch::hasFaceCentres
bool hasFaceCentres() const
Definition: PrimitivePatch.H:422
Foam::PrimitivePatch::meshEdges
labelList meshEdges(const edgeList &allEdges, const labelListList &cellEdges, const labelList &faceCells) const
Definition: PrimitivePatchMeshEdges.C:37
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::PrimitivePatch::~PrimitivePatch
virtual ~PrimitivePatch()
Destructor.
Foam::intersection::FULL_RAY
Definition: intersection.H:74
Foam::Map< label >
Foam::PrimitivePatch::faceEdges
const labelListList & faceEdges() const
Return face-edge addressing.
Definition: PrimitivePatch.C:255
Foam::HashSet< label, Hash< label > >
Foam::PrimitivePatch::hasPointNormals
bool hasPointNormals() const
Definition: PrimitivePatch.H:424
Foam::PrimitivePatch::MANIFOLD
Definition: PrimitivePatch.H:118
objectHit.H
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
Generic templated field type.
Definition: Field.H:63
Foam::PrimitivePatch::faceAreas
const Field< point_type > & faceAreas() const
Return face area vectors for patch.
Definition: PrimitivePatch.C:396
Foam::PrimitivePatch::PointFieldType
PointField PointFieldType
The point field type.
Definition: PrimitivePatch.H:106
Foam::PrimitivePatch::point_type
std::remove_reference< PointField >::type::value_type point_type
The point type.
Definition: PrimitivePatch.H:100
Foam::PrimitivePatch::pointEdges
const labelListList & pointEdges() const
Return point-edge addressing.
Definition: PrimitivePatch.C:268
Foam::intersection::algorithm
algorithm
Definition: intersection.H:72
Foam::TemplateName
TemplateName(blendedSchemeBase)
Foam::PrimitivePatch::clearGeom
void clearGeom()
Definition: PrimitivePatchClear.C:35
HashSet.H
Foam::PrimitivePatch::nPoints
label nPoints() const
Return number of points supporting patch faces.
Definition: PrimitivePatch.H:316
Foam::PrimitivePatch::projectFaceCentres
List< objectHit > projectFaceCentres(const ToPatch &targetPatch, const Field< point_type > &projectionDirection, const intersection::algorithm=intersection::FULL_RAY, const intersection::direction=intersection::VECTOR) const
Project vertices of patch onto another patch.
edgeList.H
Foam::PrimitivePatch::points
const Field< point_type > & points() const
Return reference to global points.
Definition: PrimitivePatch.H:305
Foam::PrimitivePatch::localFaces
const List< face_type > & localFaces() const
Return patch faces addressing into local point list.
Definition: PrimitivePatch.C:297
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::intersection::VECTOR
Definition: intersection.H:68
Foam::PrimitivePatch::clearTopology
void clearTopology()
Definition: PrimitivePatchClear.C:50
Foam::PrimitivePatch<::Foam::List< labelledTri >, pointField >::surfaceTopo
surfaceTopo
Enumeration defining the surface type. Used in check routines.
Definition: PrimitivePatch.H:116
Foam::PrimitivePatch::localPoints
const Field< point_type > & localPoints() const
Return pointField of points in patch.
Definition: PrimitivePatch.C:339
Foam::PrimitivePatch::boundaryPoints
const labelList & boundaryPoints() const
Return list of boundary points, address into LOCAL point list.
Definition: PrimitivePatch.C:216
Foam::PrimitivePatch::nInternalEdges
label nInternalEdges() const
Number of internal edges.
Definition: PrimitivePatch.C:203
Foam::PrimitivePatch::projectPoints
List< objectHit > projectPoints(const ToPatch &targetPatch, const Field< point_type > &projectionDirection, const intersection::algorithm=intersection::FULL_RAY, const intersection::direction=intersection::VECTOR) const
Project vertices of patch onto another patch.
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:190
Foam::PrimitivePatch::hasFaceAreas
bool hasFaceAreas() const
Definition: PrimitivePatch.H:421
Foam::PrimitivePatch::isInternalEdge
bool isInternalEdge(const label edgei) const
Is internal edge?
Definition: PrimitivePatch.H:334
Foam::PrimitivePatch::edgeLoops
const labelListList & edgeLoops() const
Return list of closed loops of boundary vertices.
Definition: PrimitivePatchEdgeLoops.C:148
Foam::List< label >
Foam::PrimitivePatch::clearOut
void clearOut()
Definition: PrimitivePatchClear.C:85
PrimitivePatch.C
Foam::PrimitivePatch::localPointOrder
const labelList & localPointOrder() const
Return orders the local points for most efficient search.
Definition: PrimitivePatch.C:352
bool
bool
Definition: EEqn.H:20
Foam::PrimitivePatch::faceNormals
const Field< point_type > & faceNormals() const
Return face unit normals for patch.
Definition: PrimitivePatch.C:425
Foam::PrimitivePatch::whichEdge
label whichEdge(const edge &) const
Definition: PrimitivePatchMeshEdges.C:147
Foam::PrimitivePatch::OPEN
Definition: PrimitivePatch.H:119
Foam::PrimitivePatch::magFaceAreas
const Field< scalar > & magFaceAreas() const
Return face area magnitudes for patch.
Definition: PrimitivePatch.C:409
Foam::PrimitivePatch::clearPatchMeshAddr
void clearPatchMeshAddr()
Definition: PrimitivePatchClear.C:73
Foam::PrimitivePatch::face_type
std::remove_reference< FaceList >::type::value_type face_type
The face type.
Definition: PrimitivePatch.H:96
Foam::PrimitivePatch::hasFaceNormals
bool hasFaceNormals() const
Definition: PrimitivePatch.H:423
Foam::PrimitivePatch::movePoints
virtual void movePoints(const Field< point_type > &)
Correct patch after moving points.
Definition: PrimitivePatch.C:172
Foam::PrimitivePatch::FaceType
face_type FaceType
Deprecated(2020-03) prefer face_type typedef.
Definition: PrimitivePatch.H:110
Foam::PrimitivePatch::operator=
void operator=(const PrimitivePatch< FaceList, PointField > &rhs)
Copy assign faces. Leave points alone (could be a reference).
Definition: PrimitivePatch.C:457
Foam::PrimitivePatch::ILLEGAL
Definition: PrimitivePatch.H:120
Foam::PrimitivePatch::meshPointMap
const Map< label > & meshPointMap() const
Mesh point map.
Definition: PrimitivePatch.C:323
Foam::PrimitivePatch::faceFaces
const labelListList & faceFaces() const
Return face-face addressing.
Definition: PrimitivePatch.C:229
Foam::labelHashSet
HashSet< label, Hash< label > > labelHashSet
A HashSet with label keys and label hasher.
Definition: HashSet.H:409
Foam::PrimitivePatch::meshPoints
const labelList & meshPoints() const
Return labelList of mesh points in patch.
Definition: PrimitivePatch.C:310
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:143
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::surfaceType
surfaceTopo surfaceType() const
Calculate surface type formed by patch.
Definition: PrimitivePatchCheck.C:108
Foam::PrimitivePatch::faceCentres
const Field< point_type > & faceCentres() const
Return face centres for patch.
Definition: PrimitivePatch.C:380
Foam::PrimitivePatch
A list of faces which address into the list of points.
Definition: PrimitivePatch.H:85
Foam::PrimitivePatch::PrimitivePatch
PrimitivePatch(const FaceList &faces, const PointField &points)
Construct from components.
Definition: PrimitivePatch.C:35