polyMesh.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-2026 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::polyMesh
26 
27 Description
28  Mesh consisting of general polyhedral cells.
29 
30 SourceFiles
31  polyMesh.C
32  polyMeshInitMesh.C
33  polyMeshClear.C
34  polyMeshFromShapeMesh.C
35  polyMeshIO.C
36  polyMeshUpdate.C
37  polyMeshCheck.C
38 
39 \*---------------------------------------------------------------------------*/
40 
41 #ifndef polyMesh_H
42 #define polyMesh_H
43 
44 #include "objectRegistry.H"
45 #include "primitiveMesh.H"
46 #include "pointField.H"
47 #include "faceList.H"
48 #include "cellList.H"
49 #include "cellShapeList.H"
50 #include "pointIOField.H"
51 #include "faceIOList.H"
52 #include "labelIOList.H"
53 #include "polyBoundaryMesh.H"
54 #include "boundBox.H"
55 #include "pointZoneList.H"
56 #include "faceZoneList.H"
57 #include "cellZoneList.H"
58 
59 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
60 
61 namespace Foam
62 {
63 
64 // Forward declaration of classes
65 class globalMeshData;
66 class polyTopoChangeMap;
67 class polyMeshMap;
68 class polyDistributionMap;
69 class polyMeshTetDecomposition;
70 
71 /*---------------------------------------------------------------------------*\
72  Class polyMesh Declaration
73 \*---------------------------------------------------------------------------*/
74 
75 class polyMesh
76 :
77  public objectRegistry,
78  public primitiveMesh
79 {
80 
81 public:
82 
83  // Public data types
84 
85  //- Enumeration defining the state of the mesh after a read update.
86  // Used for post-processing applications, where the mesh
87  // needs to update based on the files written in time directories.
88  enum readUpdateState
89  {
94  };
95 
96 
97 private:
98 
99  // Private Data
100 
101  // Primitive mesh data
102 
103  //- Points
104  pointIOField points_;
105 
106  //- Faces
107  faceCompactIOList faces_;
108 
109  //- Face owner
110  labelIOList owner_;
111 
112  //- Face neighbour
113  labelIOList neighbour_;
114 
115  //- Have the primitives been cleared
116  bool clearedPrimitives_;
117 
118  //- Boundary mesh
119  mutable polyBoundaryMesh boundary_;
120 
121  //- Mesh bounding-box.
122  // Created from points on construction, updated when the mesh moves
123  boundBox bounds_;
124 
125  //- Communicator used for parallel communication
126  label comm_;
127 
128  //- Vector of non-constrained directions in mesh
129  // defined according to the presence of empty and wedge patches
130  mutable Vector<label> geometricD_;
131 
132  //- Vector of valid directions in mesh
133  // defined according to the presence of empty patches
134  mutable Vector<label> solutionD_;
135 
136  //- Base point for face decomposition into tets
137  mutable autoPtr<labelIOList> tetBasePtIsPtr_;
138 
139 
140  // Zoning information
141 
142  //- Point zones
143  pointZoneList pointZones_;
144 
145  //- Face zones
146  faceZoneList faceZones_;
147 
148  //- Cell zones
149  cellZoneList cellZones_;
150 
151 
152  //- Parallel info
153  mutable autoPtr<globalMeshData> globalMeshDataPtr_;
154 
155 
156  // Mesh motion related dat
157 
158  //- Current time index for mesh motion
159  mutable label curMotionTimeIndex_;
160 
161  //- Old points (for the last mesh motion)
162  mutable autoPtr<pointField> oldPointsPtr_;
163 
164  //- Old cell centres (for the last mesh motion)
165  mutable autoPtr<pointField> oldCellCentresPtr_;
166 
167  //- Whether or not to store the old cell centres
168  mutable bool storeOldCellCentres_;
169 
170 
171  // Private Member Functions
172 
173  //- Return the region directory
174  static fileName regionDir(const IOobject& io);
175 
176  //- Initialise the polyMesh from the primitive data
177  void initMesh();
178 
179  //- Initialise the polyMesh from the given set of cells
180  void initMesh(cellList& c);
181 
182  //- Calculate the valid directions in the mesh from the boundaries
183  void calcDirections() const;
184 
185  //- Calculate the cell shapes from the primitive
186  // polyhedral information
187  void calcCellShapes() const;
188 
189  //- Read and return the tetBasePtIs
190  autoPtr<labelIOList> readTetBasePtIs() const;
191 
192  //- Set the write option of the points
193  void setPointsWrite(const IOobject::writeOption wo);
194 
195  //- Set the write option of the topology
196  void setTopologyWrite(const IOobject::writeOption wo);
197 
198  //- Clear addressing
199  void clearAddressing();
200 
201 
202  // Helper functions for constructor from cell shapes
203 
204  labelListList cellShapePointCells(const cellShapeList&) const;
205 
206  labelList facePatchFaceCells
207  (
208  const faceList& patchFaces,
209  const labelListList& pointCells,
210  const faceListList& cellsFaceShapes,
211  const label patchID
212  ) const;
213 
214  void setTopology
215  (
216  const cellShapeList& cellsAsShapes,
217  const faceListList& boundaryFaces,
218  const wordList& boundaryPatchNames,
219  labelList& patchSizes,
220  labelList& patchStarts,
221  label& defaultPatchStart,
222  label& nFaces,
223  cellList& cells
224  );
225 
226 
227 protected:
228 
229  // Protected Data
230 
231  //- Member data pending transfer to fvMesh
232 
233  //- Is the mesh moving
234  bool moving_;
235 
236  //- Has the mesh topology changed
237  bool topoChanged_;
238 
239 
240  // Protected Member Functions
241 
242  //- Does a read update move the mesh forward in time?
243  bool readUpdateIsForward() const;
244 
245 
246 public:
247 
248  // Public Typedefs
249 
250  typedef polyMesh Mesh;
252 
253 
254  //- Runtime type information
255  TypeName("polyMesh");
256 
257 
258  // Static data
259 
260  //- Return the default region name
261  static word defaultRegion;
262 
263  //- Return the mesh sub-directory name (usually "polyMesh")
264  static word meshSubDir;
265 
266 
267  // Constructors
268 
269  //- Return the instance of the polyMesh directory. Returns
270  // fileName::null if the directory does not exist, and can therefore
271  // be used to check whether the mesh directory exists.
272  static fileName meshDirInstance(const IOobject& io);
273 
274  //- Construct from IOobject.
275  explicit polyMesh(const IOobject& io);
276 
277  //- Move construct from IOobject or from components.
278  // Boundary is added using addPatches() member function
279  polyMesh
280  (
281  const IOobject& io,
282  pointField&& points,
283  faceList&& faces,
284  labelList&& owner,
285  labelList&& neighbour,
286  const bool syncPar = true
287  );
288 
289  //- Move construct without boundary with cells rather than
290  // owner/neighbour.
291  // Boundary is added using addPatches() member function
292  polyMesh
293  (
294  const IOobject& io,
295  pointField&& points,
296  faceList&& faces,
297  cellList&& cells,
298  const bool syncPar = true
299  );
300 
301  //- Move construct from cell shapes
302  polyMesh
303  (
304  const IOobject& io,
305  pointField&& points,
306  const cellShapeList& shapes,
307  const faceListList& boundaryFaces,
308  const wordList& boundaryPatchNames,
309  const wordList& boundaryPatchTypes,
310  const word& defaultBoundaryPatchName,
311  const word& defaultBoundaryPatchType,
312  const wordList& boundaryPatchPhysicalTypes,
313  const bool syncPar = true
314  );
315 
316  //- Move construct from cell shapes with patch information in dictionary
317  // format.
318  polyMesh
319  (
320  const IOobject& io,
321  pointField&& points,
322  const cellShapeList& shapes,
323  const faceListList& boundaryFaces,
324  const wordList& boundaryPatchNames,
325  const PtrList<dictionary>& boundaryDicts,
326  const word& defaultBoundaryPatchName,
327  const word& defaultBoundaryPatchType,
328  const bool syncPar = true
329  );
330 
331  //- Move constructor
332  polyMesh(polyMesh&&);
333 
334  //- Disallow default bitwise copy construction
335  polyMesh(const polyMesh&) = delete;
336 
337 
338  //- Destructor
339  virtual ~polyMesh();
340 
341 
342  // Member Functions
343 
344  // Database
345 
346  //- Return the local mesh directory (dbDir()/meshSubDir)
347  fileName meshDir() const;
348 
349  //- Return the current instance directory for points
350  // Used in the construction of geometric mesh data dependent
351  // on points
352  const fileName& pointsInstance() const;
353 
354  //- Return the current instance directory for faces
355  const fileName& facesInstance() const;
356 
357  //- Return the points write option
359 
360  //- Return the points write option
362 
363  //- Set the instance for the points files
364  void setPointsInstance(const fileName&);
365 
366  //- Set the instance for mesh files
367  void setInstance(const fileName&);
368 
369 
370  // Access
371 
372  // Primitive mesh data
373 
374  //- Return raw points
375  virtual const pointField& points() const;
376 
377  //- Return raw faces
378  virtual const faceList& faces() const;
379 
380  //- Return face owner
381  virtual const labelList& faceOwner() const;
382 
383  //- Return face neighbour
384  virtual const labelList& faceNeighbour() const;
385 
386  //- Return old points for mesh motion
387  virtual const pointField& oldPoints() const;
388 
389  //- Return old cell centres for mesh motion
390  virtual const pointField& oldCellCentres() const;
391 
392 
393  //- Return boundary mesh
394  const polyBoundaryMesh& boundary() const
395  {
396  return boundary_;
397  }
398 
399  //- Return mesh bounding box
400  const boundBox& bounds() const
401  {
402  return bounds_;
403  }
404 
405  //- Return the vector of geometric directions in mesh.
406  // Defined according to the presence of empty and wedge patches.
407  // 1 indicates unconstrained direction and -1 a constrained
408  // direction.
409  const Vector<label>& geometricD() const;
410 
411  //- Return the number of valid geometric dimensions in the mesh
412  label nGeometricD() const;
413 
414  //- Return the vector of solved-for directions in mesh.
415  // Differs from geometricD in that it includes for wedge cases
416  // the circumferential direction in case of swirl.
417  // 1 indicates valid direction and -1 an invalid direction.
418  const Vector<label>& solutionD() const;
419 
420  //- Return the number of valid solved-for dimensions in the mesh
421  label nSolutionD() const;
422 
423  //- Return the tetBasePtIs
424  const labelIOList& tetBasePtIs() const;
425 
426  //- Return point zones
427  const pointZoneList& pointZones() const
428  {
429  return pointZones_;
430  }
431 
432  //- Return face zones
433  const faceZoneList& faceZones() const
434  {
435  return faceZones_;
436  }
437 
438  //- Return cell zones
439  const cellZoneList& cellZones() const
440  {
441  return cellZones_;
442  }
443 
444  //- Return parallel info
445  const globalMeshData& globalData() const;
446 
447  //- Return communicator used for parallel communication
448  label comm() const;
449 
450  //- Return communicator used for parallel communication
451  label& comm();
452 
453  //- Return the object registry
454  const objectRegistry& db() const
455  {
456  return *this;
457  }
458 
459 
460  // Mesh motion
461 
462  //- Is the mesh moving?
463  bool moving() const
464  {
465  return moving_;
466  }
467 
468  //- Has the mesh topology changed this time-step?
469  bool topoChanged() const
470  {
471  return topoChanged_;
472  }
473 
474  //- Is the mesh changing? I.e., is it moving or topo-changing?
475  bool changing() const
476  {
477  return moving() || topoChanged();
478  }
479 
480  //- Reset the points
481  // without storing old points or returning swept volumes
482  virtual void setPoints(const pointField&);
483 
484  //- Move points, returns volumes swept by faces in motion
485  virtual tmp<scalarField> movePoints(const pointField&);
486 
487  //- Reset motion
488  void resetMotion() const;
489 
490 
491  // Topological change
492 
493  //- Return non-const access to the pointZones
495  {
496  return pointZones_;
497  }
498 
499  //- Return non-const access to the faceZones
501  {
502  return faceZones_;
503  }
504 
505  //- Return non-const access to the cellZones
507  {
508  return cellZones_;
509  }
510 
511  //- Add boundary patches
512  void addPatches
513  (
514  const List<polyPatch*>&,
515  const bool validBoundary = true
516  );
517 
518  //- Add mesh zones
519  void addZones
520  (
521  const List<pointZone*>& pz,
522  const List<faceZone*>& fz,
523  const List<cellZone*>& cz
524  );
525 
526  //- Add/insert single patch
527  virtual void addPatch
528  (
529  const label insertPatchi,
530  const polyPatch& patch
531  );
532 
533  //- Complete addition of single patches
534  void addedPatches();
535 
536  //- Reorder and trim existing patches. If validBoundary the new
537  // situation is consistent across processors
538  virtual void reorderPatches
539  (
540  const labelUList& newToOld,
541  const bool validBoundary
542  );
543 
544  //- Update the mesh based on the mesh files saved in
545  // time directories
547 
548  //- Update zones using the given map
549  void topoChangeZones(const polyTopoChangeMap&);
550 
551  //- Update topology using the given map
552  virtual void topoChange(const polyTopoChangeMap&);
553 
554  //- Update from another mesh using the given map
555  virtual void mapMesh(const polyMeshMap&);
556 
557  //- Redistribute or update using the given distribution map
558  virtual void distribute(const polyDistributionMap& map);
559 
560  //- Remove boundary patches
561  void removeBoundary();
562 
563  //- Reset mesh primitive data. Assumes all patch info correct
564  // (so does e.g. parallel communication). If not use
565  // validBoundary=false
566  void resetPrimitives
567  (
568  pointField&& points,
569  faceList&& faces,
570  labelList&& owner,
571  labelList&& neighbour,
572  const labelList& patchSizes,
573  const labelList& patchStarts,
574  const bool validBoundary = true
575  );
576 
577  //- Swap mesh
578  // For run-time mesh replacement and mesh to mesh mapping
579  void swap(polyMesh&);
580 
581 
582  // Storage management
583 
584  //- Print a list of all the currently allocated mesh data
585  void printAllocated() const;
586 
587  //- Clear geometry
588  void clearGeom();
589 
590  //- Clear all geometry and addressing unnecessary for CFD
591  void clearOut();
592 
593  //- Clear tet base points
594  void clearTetBasePtIs();
595 
596  //- Remove all files from mesh instance
597  void removeFiles(const fileName& instanceDir) const;
598 
599  //- Remove all files from mesh instance()
600  void removeFiles() const;
601 
602 
603  // Write
604 
605  //- Write the mesh data and all objects in the registry
606  virtual bool writeObject
607  (
611  const bool write = true
612  ) const;
613 
614  //- Write the mesh data only
615  virtual bool writeMesh() const;
616 
617 
618  // Member Operators
619 
620  //- Disallow default bitwise assignment
621  void operator=(const polyMesh&) = delete;
622 };
623 
624 
625 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
626 
627 } // End namespace Foam
628 
629 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
630 
631 #endif
632 
633 // ************************************************************************* //
Foam::cellZoneList.
A primitive field of type <Type> with automated input and output.
Definition: IOField.H:53
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
Definition: IOobject.H:99
writeOption
Enumeration defining the write options.
Definition: IOobject.H:126
Version number type.
Definition: IOstream.H:97
streamFormat
Enumeration for the format of data in the stream.
Definition: IOstream.H:87
compressionType
Enumeration for the format of data in the stream.
Definition: IOstream.H:194
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
Definition: PtrList.H:75
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
Definition: autoPtr.H:51
A bounding box defined in terms of the points at its extremities.
Definition: boundBox.H:60
A class for handling file names.
Definition: fileName.H:82
Various mesh related information for a parallel run. Upon construction, constructs all info using par...
Registry of regIOobjects.
Foam::polyBoundaryMesh.
Class containing mesh-to-mesh mapping information after a mesh distribution where we send parts of me...
Class containing mesh-to-mesh mapping information.
Definition: polyMeshMap.H:51
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:78
const pointZoneList & pointZones() const
Return point zones.
Definition: polyMesh.H:426
virtual ~polyMesh()
Destructor.
Definition: polyMesh.C:965
bool topoChanged_
Has the mesh topology changed.
Definition: polyMesh.H:236
const fileName & facesInstance() const
Return the current instance directory for faces.
Definition: polyMesh.C:1012
label nGeometricD() const
Return the number of valid geometric dimensions in the mesh.
Definition: polyMesh.C:1041
const cellZoneList & cellZones() const
Return cell zones.
Definition: polyMesh.H:438
static word defaultRegion
Return the default region name.
Definition: polyMesh.H:260
const polyBoundaryMesh & boundary() const
Return boundary mesh.
Definition: polyMesh.H:393
bool readUpdateIsForward() const
Does a read update move the mesh forward in time?
Definition: polyMeshIO.C:73
polyMesh Mesh
Definition: polyMesh.H:249
const objectRegistry & db() const
Return the object registry.
Definition: polyMesh.H:453
fileName meshDir() const
Return the local mesh directory (dbDir()/meshSubDir)
Definition: polyMesh.C:1000
virtual tmp< scalarField > movePoints(const pointField &)
Move points, returns volumes swept by faces in motion.
Definition: polyMesh.C:1407
bool moving_
Member data pending transfer to fvMesh.
Definition: polyMesh.H:233
IOobject::writeOption facesWriteOpt() const
Return the points write option.
Definition: polyMesh.C:1024
virtual const faceList & faces() const
Return raw faces.
Definition: polyMesh.C:1308
void addedPatches()
Complete addition of single patches.
Definition: polyMesh.C:1283
void clearGeom()
Clear geometry.
Definition: polyMeshClear.C:60
readUpdateState
Enumeration defining the state of the mesh after a read update.
Definition: polyMesh.H:88
@ TOPO_PATCH_CHANGE
Definition: polyMesh.H:92
void resetPrimitives(pointField &&points, faceList &&faces, labelList &&owner, labelList &&neighbour, const labelList &patchSizes, const labelList &patchStarts, const bool validBoundary=true)
Reset mesh primitive data. Assumes all patch info correct.
Definition: polyMesh.C:710
virtual const labelList & faceOwner() const
Return face owner.
Definition: polyMesh.C:1321
const labelIOList & tetBasePtIs() const
Return the tetBasePtIs.
Definition: polyMesh.C:1064
void operator=(const polyMesh &)=delete
Disallow default bitwise assignment.
virtual void topoChange(const polyTopoChangeMap &)
Update topology using the given map.
TypeName("polyMesh")
Runtime type information.
const globalMeshData & globalData() const
Return parallel info.
Definition: polyMesh.C:1471
bool changing() const
Is the mesh changing? I.e., is it moving or topo-changing?
Definition: polyMesh.H:474
label nSolutionD() const
Return the number of valid solved-for dimensions in the mesh.
Definition: polyMesh.C:1058
polyBoundaryMesh BoundaryMesh
Definition: polyMesh.H:250
virtual const pointField & oldPoints() const
Return old points for mesh motion.
Definition: polyMesh.C:1333
void swap(polyMesh &)
Swap mesh.
Definition: polyMesh.C:817
const fileName & pointsInstance() const
Return the current instance directory for points.
Definition: polyMesh.C:1006
label comm() const
Return communicator used for parallel communication.
Definition: polyMesh.C:1490
polyMesh(const IOobject &io)
Construct from IOobject.
Definition: polyMesh.C:175
void resetMotion() const
Reset motion.
Definition: polyMesh.C:1463
virtual bool writeObject(IOstream::streamFormat fmt, IOstream::versionNumber ver, IOstream::compressionType cmp, const bool write=true) const
Write the mesh data and all objects in the registry.
Definition: polyMeshIO.C:556
virtual void mapMesh(const polyMeshMap &)
Update from another mesh using the given map.
const faceZoneList & faceZones() const
Return face zones.
Definition: polyMesh.H:432
readUpdateState readUpdate()
Update the mesh based on the mesh files saved in.
Definition: polyMeshIO.C:132
virtual const labelList & faceNeighbour() const
Return face neighbour.
Definition: polyMesh.C:1327
void topoChangeZones(const polyTopoChangeMap &)
Update zones using the given map.
void addPatches(const List< polyPatch * > &, const bool validBoundary=true)
Add boundary patches.
Definition: polyMesh.C:1091
bool topoChanged() const
Has the mesh topology changed this time-step?
Definition: polyMesh.H:468
void clearTetBasePtIs()
Clear tet base points.
virtual void distribute(const polyDistributionMap &map)
Redistribute or update using the given distribution map.
void setPointsInstance(const fileName &)
Set the instance for the points files.
Definition: polyMeshIO.C:83
void addZones(const List< pointZone * > &pz, const List< faceZone * > &fz, const List< cellZone * > &cz)
Add mesh zones.
Definition: polyMesh.C:1129
virtual const pointField & points() const
Return raw points.
Definition: polyMesh.C:1295
void printAllocated() const
Print a list of all the currently allocated mesh data.
Definition: polyMeshClear.C:47
IOobject::writeOption pointsWriteOpt() const
Return the points write option.
Definition: polyMesh.C:1018
void removeFiles() const
Remove all files from mesh instance()
Definition: polyMesh.C:1526
void removeBoundary()
Remove boundary patches.
Definition: polyMeshClear.C:33
virtual const pointField & oldCellCentres() const
Return old cell centres for mesh motion.
Definition: polyMesh.C:1351
virtual void reorderPatches(const labelUList &newToOld, const bool validBoundary)
Reorder and trim existing patches. If validBoundary the new.
Definition: polyMesh.C:1187
static word meshSubDir
Return the mesh sub-directory name (usually "polyMesh")
Definition: polyMesh.H:263
void setInstance(const fileName &)
Set the instance for mesh files.
Definition: polyMeshIO.C:102
static fileName meshDirInstance(const IOobject &io)
Return the instance of the polyMesh directory. Returns.
Definition: polyMesh.C:974
virtual bool writeMesh() const
Write the mesh data only.
Definition: polyMeshIO.C:611
const boundBox & bounds() const
Return mesh bounding box.
Definition: polyMesh.H:399
virtual void addPatch(const label insertPatchi, const polyPatch &patch)
Add/insert single patch.
Definition: polyMesh.C:1220
void clearOut()
Clear all geometry and addressing unnecessary for CFD.
Definition: polyMeshClear.C:99
virtual void setPoints(const pointField &)
Reset the points.
Definition: polyMesh.C:1371
const Vector< label > & solutionD() const
Return the vector of solved-for directions in mesh.
Definition: polyMesh.C:1047
bool moving() const
Is the mesh moving?
Definition: polyMesh.H:462
const Vector< label > & geometricD() const
Return the vector of geometric directions in mesh.
Definition: polyMesh.C:1030
A patch is a list of labels that address the faces in the global face list.
Definition: polyPatch.H:71
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Cell-face mesh analysis engine.
Definition: primitiveMesh.H:75
const labelListList & pointCells() const
const cellList & cells() const
label nFaces() const
virtual bool write(const bool write=true) const
Write using setting from DB.
A class for managing temporary objects.
Definition: tmp.H:55
A class for handling words, derived from string.
Definition: word.H:63
Foam::faceZoneList.
const dimensionedScalar c
Speed of light in a vacuum.
Namespace for OpenFOAM.
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::pointZoneList.