faceZone.C
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) 2017-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 \*---------------------------------------------------------------------------*/
28 
29 #include "faceZone.H"
31 #include "faceZoneMesh.H"
32 #include "polyMesh.H"
33 #include "primitiveMesh.H"
34 #include "demandDrivenData.H"
35 #include "mapPolyMesh.H"
36 #include "syncTools.H"
37 
38 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
39 
40 namespace Foam
41 {
42  defineTypeNameAndDebug(faceZone, 0);
43  defineRunTimeSelectionTable(faceZone, dictionary);
44  addToRunTimeSelectionTable(faceZone, faceZone, dictionary);
45 }
46 
47 const char* const Foam::faceZone::labelsName = "faceLabels";
48 
49 
50 // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
51 
52 void Foam::faceZone::setFlipMap(const bool val)
53 {
54  // Match size for flipMap
55  if (flipMap_.size() == this->size())
56  {
57  flipMap_ = val;
58  }
59  else
60  {
61  // Avoid copying old values on resize
62  flipMap_.clear();
63  flipMap_.setSize(this->size(), val);
64  }
65 }
66 
67 
68 // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
69 
71 {
72  if (debug)
73  {
74  InfoInFunction << "Calculating primitive patch" << endl;
75  }
76 
77  if (patchPtr_)
78  {
80  << "primitive face zone patch already calculated"
81  << abort(FatalError);
82  }
83 
84  patchPtr_ =
86  (
87  faceList(size()),
88  zoneMesh().mesh().points()
89  );
90 
91  primitiveFacePatch& patch = *patchPtr_;
92 
93  const faceList& f = zoneMesh().mesh().faces();
94 
95  const labelList& addr = *this;
96  const boolList& flip = flipMap();
97 
98  forAll(addr, facei)
99  {
100  if (flip[facei])
101  {
102  patch[facei] = f[addr[facei]].reverseFace();
103  }
104  else
105  {
106  patch[facei] = f[addr[facei]];
107  }
108  }
109 
110  if (debug)
111  {
112  InfoInFunction << "Finished calculating primitive patch" << endl;
113  }
114 }
115 
116 
118 {
119  if (debug)
120  {
121  InfoInFunction << "Calculating master cells" << endl;
122  }
123 
124  // It is an error to attempt to recalculate edgeCells
125  // if the pointer is already set
126  if (masterCellsPtr_ || slaveCellsPtr_)
127  {
129  << "cell layers already calculated"
130  << abort(FatalError);
131  }
132  else
133  {
134  // Go through all the faces in the master zone. Choose the
135  // master or slave cell based on the face flip
136 
137  const labelList& own = zoneMesh().mesh().faceOwner();
138  const labelList& nei = zoneMesh().mesh().faceNeighbour();
139 
140  const labelList& mf = *this;
141 
142  const boolList& faceFlip = flipMap();
143 
144  masterCellsPtr_ = new labelList(mf.size());
145  labelList& mc = *masterCellsPtr_;
146 
147  slaveCellsPtr_ = new labelList(mf.size());
148  labelList& sc = *slaveCellsPtr_;
149 
150  forAll(mf, facei)
151  {
152  const label ownCelli = own[mf[facei]];
153  const label neiCelli =
154  (
155  zoneMesh().mesh().isInternalFace(mf[facei])
156  ? nei[mf[facei]]
157  : -1
158  );
159 
160  if (!faceFlip[facei])
161  {
162  // Face is oriented correctly, no flip needed
163  mc[facei] = neiCelli;
164  sc[facei] = ownCelli;
165  }
166  else
167  {
168  mc[facei] = ownCelli;
169  sc[facei] = neiCelli;
170  }
171  }
172  }
173 }
174 
175 
177 {
178  if (size() != flipMap_.size())
179  {
181  << "Size of addressing: " << size()
182  << " size of flip map: " << flipMap_.size()
183  << abort(FatalError);
184  }
185 
186  const labelList& mf = *this;
187 
188  // Note: nFaces, nCells might not be set yet on mesh so use owner size
189  const label nFaces = zoneMesh().mesh().faceOwner().size();
190 
191  bool hasWarned = false;
192  forAll(mf, i)
193  {
194  if (!hasWarned && (mf[i] < 0 || mf[i] >= nFaces))
195  {
197  << "Illegal face index " << mf[i] << " outside range 0.."
198  << nFaces-1 << endl;
199  hasWarned = true;
200  }
201  }
202 }
203 
204 
205 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
206 
207 Foam::faceZone::faceZone
208 (
209  const word& name,
210  const label index,
211  const faceZoneMesh& zm
212 )
213 :
214  zone(name, index),
215  flipMap_(),
216  zoneMesh_(zm),
217  patchPtr_(nullptr),
218  masterCellsPtr_(nullptr),
219  slaveCellsPtr_(nullptr),
220  mePtr_(nullptr)
221 {}
222 
223 
224 Foam::faceZone::faceZone
225 (
226  const word& name,
227  const labelUList& addr,
228  const bool flipMapValue,
229  const label index,
230  const faceZoneMesh& zm
231 )
232 :
233  zone(name, addr, index),
234  flipMap_(),
235  zoneMesh_(zm),
236  patchPtr_(nullptr),
237  masterCellsPtr_(nullptr),
238  slaveCellsPtr_(nullptr),
239  mePtr_(nullptr)
240 {
241  flipMap_.setSize(size(), flipMapValue);
242  checkAddressing();
243 }
244 
245 
246 Foam::faceZone::faceZone
247 (
248  const word& name,
249  labelList&& addr,
250  const bool flipMapValue,
251  const label index,
252  const faceZoneMesh& zm
253 )
254 :
255  zone(name, std::move(addr), index),
256  flipMap_(),
257  zoneMesh_(zm),
258  patchPtr_(nullptr),
259  masterCellsPtr_(nullptr),
260  slaveCellsPtr_(nullptr),
261  mePtr_(nullptr)
262 {
263  flipMap_.setSize(size(), flipMapValue);
264  checkAddressing();
265 }
266 
267 
268 Foam::faceZone::faceZone
269 (
270  const word& name,
271  const labelUList& addr,
272  const boolUList& fm,
273  const label index,
274  const faceZoneMesh& zm
275 )
276 :
277  zone(name, addr, index),
278  flipMap_(fm),
279  zoneMesh_(zm),
280  patchPtr_(nullptr),
281  masterCellsPtr_(nullptr),
282  slaveCellsPtr_(nullptr),
283  mePtr_(nullptr)
284 {
285  checkAddressing();
286 }
287 
288 
289 Foam::faceZone::faceZone
290 (
291  const word& name,
292  labelList&& addr,
293  boolList&& fm,
294  const label index,
295  const faceZoneMesh& zm
296 )
297 :
298  zone(name, std::move(addr), index),
299  flipMap_(std::move(fm)),
300  zoneMesh_(zm),
301  patchPtr_(nullptr),
302  masterCellsPtr_(nullptr),
303  slaveCellsPtr_(nullptr),
304  mePtr_(nullptr)
305 {
306  checkAddressing();
307 }
308 
309 
310 Foam::faceZone::faceZone
311 (
312  const word& name,
313  const dictionary& dict,
314  const label index,
315  const faceZoneMesh& zm
316 )
317 :
318  zone(name, dict, this->labelsName, index),
319  flipMap_(dict.lookup("flipMap")),
320  zoneMesh_(zm),
321  patchPtr_(nullptr),
322  masterCellsPtr_(nullptr),
323  slaveCellsPtr_(nullptr),
324  mePtr_(nullptr)
325 {
326  checkAddressing();
327 }
328 
329 
330 Foam::faceZone::faceZone
331 (
332  const faceZone& origZone,
333  const labelUList& addr,
334  const boolUList& fm,
335  const label index,
336  const faceZoneMesh& zm
337 )
338 :
339  zone(origZone, addr, index),
340  flipMap_(fm),
341  zoneMesh_(zm),
342  patchPtr_(nullptr),
343  masterCellsPtr_(nullptr),
344  slaveCellsPtr_(nullptr),
345  mePtr_(nullptr)
346 {
347  checkAddressing();
348 }
349 
350 
351 Foam::faceZone::faceZone
352 (
353  const faceZone& origZone,
354  labelList&& addr,
355  boolList&& fm,
356  const label index,
357  const faceZoneMesh& zm
358 )
359 :
360  zone(origZone, std::move(addr), index),
361  flipMap_(std::move(fm)),
362  zoneMesh_(zm),
363  patchPtr_(nullptr),
364  masterCellsPtr_(nullptr),
365  slaveCellsPtr_(nullptr),
366  mePtr_(nullptr)
367 {
368  checkAddressing();
369 }
370 
371 
372 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
373 
375 {
376  clearAddressing();
377 }
378 
379 
380 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
381 
383 {
384  return zoneMesh_;
385 }
386 
387 
388 Foam::label Foam::faceZone::whichFace(const label globalFaceID) const
389 {
390  return zone::localID(globalFaceID);
391 }
392 
393 
395 {
396  if (!patchPtr_)
397  {
398  calcFaceZonePatch();
399  }
400 
401  return *patchPtr_;
402 }
403 
404 
406 {
407  if (!masterCellsPtr_)
408  {
409  calcCellLayers();
410  }
411 
412  return *masterCellsPtr_;
413 }
414 
415 
417 {
418  if (!slaveCellsPtr_)
419  {
420  calcCellLayers();
421  }
422 
423  return *slaveCellsPtr_;
424 }
425 
426 
428 {
429  if (!mePtr_)
430  {
431  mePtr_ =
432  new labelList
433  (
434  operator()().meshEdges
435  (
436  zoneMesh().mesh().edges(),
437  zoneMesh().mesh().pointEdges()
438  )
439  );
440  }
441 
442  return *mePtr_;
443 }
444 
445 
447 {
449 
450  deleteDemandDrivenData(patchPtr_);
451 
452  deleteDemandDrivenData(masterCellsPtr_);
453  deleteDemandDrivenData(slaveCellsPtr_);
454 
455  deleteDemandDrivenData(mePtr_);
456 }
457 
458 
460 (
461  const labelUList& addr,
462  const bool flipMapValue
463 )
464 {
465  clearAddressing();
466  labelList::operator=(addr);
467  setFlipMap(flipMapValue);
468 }
469 
470 
472 (
473  const labelUList& addr,
474  const boolUList& flipMap
475 )
476 {
477  clearAddressing();
478  labelList::operator=(addr);
479  flipMap_ = flipMap;
480 }
481 
482 
484 (
485  labelList&& addr,
486  const bool flipMapValue
487 )
488 {
489  clearAddressing();
490  labelList::transfer(addr);
491  setFlipMap(flipMapValue);
492 }
493 
494 
496 {
497  clearAddressing();
498 
499  labelList newAddressing(size());
500  boolList newFlipMap(flipMap_.size());
501  label nFaces = 0;
502 
503  const labelList& faceMap = mpm.reverseFaceMap();
504 
505  forAll(*this, i)
506  {
507  const label facei = operator[](i);
508 
509  if (faceMap[facei] >= 0)
510  {
511  newAddressing[nFaces] = faceMap[facei];
512  newFlipMap[nFaces] = flipMap_[i]; // Keep flip map.
513  nFaces++;
514  }
515  }
516 
517  newAddressing.setSize(nFaces);
518  newFlipMap.setSize(nFaces);
519 
520  transfer(newAddressing);
521  flipMap_.transfer(newFlipMap);
522 }
523 
524 
525 bool Foam::faceZone::checkDefinition(const bool report) const
526 {
527  return zone::checkDefinition(zoneMesh().mesh().faces().size(), report);
528 }
529 
530 
531 bool Foam::faceZone::checkParallelSync(const bool report) const
532 {
533  const polyMesh& mesh = zoneMesh().mesh();
534  const polyBoundaryMesh& bm = mesh.boundaryMesh();
535 
536  bool hasError = false;
537 
538 
539  // Check that zone faces are synced
540  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
541 
542  {
543  boolList neiZoneFace(mesh.nBoundaryFaces(), false);
544  boolList neiZoneFlip(mesh.nBoundaryFaces(), false);
545  forAll(*this, i)
546  {
547  const label facei = operator[](i);
548 
549  if (!mesh.isInternalFace(facei))
550  {
551  neiZoneFace[facei-mesh.nInternalFaces()] = true;
552  neiZoneFlip[facei-mesh.nInternalFaces()] = flipMap()[i];
553  }
554  }
555  boolList myZoneFace(neiZoneFace);
557  boolList myZoneFlip(neiZoneFlip);
559 
560  forAll(*this, i)
561  {
562  const label facei = operator[](i);
563  const label patchi = bm.whichPatch(facei);
564 
565  if (patchi != -1 && bm[patchi].coupled())
566  {
567  const label bFacei = facei-mesh.nInternalFaces();
568 
569  // Check face in zone on both sides
570  if (myZoneFace[bFacei] != neiZoneFace[bFacei])
571  {
572  hasError = true;
573 
574  if (report)
575  {
576  Pout<< " ***Problem with faceZone " << index()
577  << " named " << name()
578  << ". Face " << facei
579  << " on coupled patch "
580  << bm[patchi].name()
581  << " is not consistent with its coupled neighbour."
582  << endl;
583  }
584  else
585  {
586  // w/o report - can stop checking now
587  break;
588  }
589  }
590  else if (myZoneFlip[bFacei] == neiZoneFlip[bFacei])
591  {
592  // Flip state should be opposite.
593  hasError = true;
594 
595  if (report)
596  {
597  Pout<< " ***Problem with faceZone " << index()
598  << " named " << name()
599  << ". Face " << facei
600  << " on coupled patch "
601  << bm[patchi].name()
602  << " does not have consistent flipMap"
603  << " across coupled faces."
604  << endl;
605  }
606  else
607  {
608  // w/o report - can stop checking now
609  break;
610  }
611  }
612  }
613  }
614  }
615 
616  return returnReduce(hasError, orOp<bool>());
617 }
618 
619 
621 {
622  if (patchPtr_)
623  {
624  patchPtr_->movePoints(pts);
625  }
626 }
627 
629 {
630  os << nl << name()
631  << nl << static_cast<const labelList&>(*this)
632  << nl << flipMap();
633 }
634 
635 
637 {
638  os << nl << name() << nl << token::BEGIN_BLOCK << nl
639  << " type " << type() << token::END_STATEMENT << nl;
640 
641  writeEntry(this->labelsName, os);
642  flipMap().writeEntry("flipMap", os);
643 
644  os << token::END_BLOCK << endl;
645 }
646 
647 
648 // * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * //
649 
651 {
652  zn.write(os);
653  os.check(FUNCTION_NAME);
654  return os;
655 }
656 
657 
658 // ************************************************************************* //
Foam::expressions::patchExpr::debug
int debug
Static debugging option.
Foam::addToRunTimeSelectionTable
addToRunTimeSelectionTable(decompositionMethod, kahipDecomp, dictionary)
Foam::labelList
List< label > labelList
A List of labels.
Definition: List.H:74
Foam::faceZone::clearAddressing
virtual void clearAddressing()
Clear addressing.
Definition: faceZone.C:446
InfoInFunction
#define InfoInFunction
Report an information message using Foam::Info.
Definition: messageStream.H:316
Foam::val
label ListType::const_reference val
Definition: ListOps.H:407
Foam::faceZone::labelsName
static const char *const labelsName
The name associated with the zone-labels dictionary entry.
Definition: faceZone.H:125
Foam::faceMap
Pair< int > faceMap(const label facePi, const face &faceP, const label faceNi, const face &faceN)
Definition: blockMeshMergeFast.C:94
Foam::IOobject::name
const word & name() const
Return name.
Definition: IOobjectI.H:46
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:62
Foam::faceZone::checkAddressing
void checkAddressing() const
Check addressing.
Definition: faceZone.C:176
Foam::returnReduce
T returnReduce(const T &Value, const BinaryOp &bop, const int tag=Pstream::msgType(), const label comm=UPstream::worldComm)
Definition: PstreamReduceOps.H:94
Foam::polyBoundaryMesh
A polyBoundaryMesh is a polyPatch list with additional search methods and registered IO.
Definition: polyBoundaryMesh.H:62
Foam::faceZone::meshEdges
const labelList & meshEdges() const
Return global edge index for local edges.
Definition: faceZone.C:427
Foam::primitiveFacePatch
PrimitivePatch< face, List, const pointField & > primitiveFacePatch
Foam::primitiveFacePatch.
Definition: primitiveFacePatch.H:47
Foam::primitiveMesh::nInternalFaces
label nInternalFaces() const
Number of internal faces.
Definition: primitiveMeshI.H:78
demandDrivenData.H
Template functions to aid in the implementation of demand driven data.
Foam::defineRunTimeSelectionTable
defineRunTimeSelectionTable(reactionRateFlameArea, dictionary)
mapPolyMesh.H
Foam::faceZone::resetAddressing
virtual void resetAddressing(const labelUList &addr, const bool flipMapValue)
Reset addressing - use uniform flip map value.
Definition: faceZone.C:460
Foam::zone
Base class for mesh zones.
Definition: zone.H:63
Foam::syncTools::swapBoundaryFaceList
static void swapBoundaryFaceList(const polyMesh &mesh, UList< T > &faceValues)
Swap coupled boundary face values. Uses eqOp.
Definition: syncTools.H:439
Foam::zone::clearAddressing
virtual void clearAddressing()
Clear addressing.
Definition: zone.C:184
Foam::polyMesh::boundaryMesh
const polyBoundaryMesh & boundaryMesh() const
Return boundary mesh.
Definition: polyMesh.H:435
primitiveMesh.H
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:337
Foam::Pout
prefixOSstream Pout
An Ostream wrapper for parallel output to std::cout.
polyMesh.H
syncTools.H
Foam::faceZone::~faceZone
virtual ~faceZone()
Destructor.
Definition: faceZone.C:374
Foam::polyMesh
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:77
forAll
#define forAll(list, i)
Loop across all elements in list.
Definition: stdFoam.H:290
Foam::deleteDemandDrivenData
void deleteDemandDrivenData(DataPtr &dataPtr)
Definition: demandDrivenData.H:42
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
Foam::Field< vector >
Foam::faceZone
A subset of mesh faces organised as a primitive patch.
Definition: faceZone.H:65
Foam::faceZone::checkDefinition
virtual bool checkDefinition(const bool report=false) const
Check zone definition. Return true if in error.
Definition: faceZone.C:525
Foam::name
word name(const complex &c)
Return string representation of complex.
Definition: complex.C:76
Foam::faceZone::flipMap_
boolList flipMap_
Flip map for all faces in the zone.
Definition: faceZone.H:87
Foam::List< label >::transfer
void transfer(List< label > &list)
Definition: List.C:436
Foam::faceZone::updateMesh
virtual void updateMesh(const mapPolyMesh &mpm)
Update for changes in topology.
Definition: faceZone.C:495
Foam::faceZone::slaveCells
const labelList & slaveCells() const
Return labels of slave cells.
Definition: faceZone.C:416
Foam::ZoneMesh< faceZone, polyMesh >
Foam::faceZone::zoneMesh
const faceZoneMesh & zoneMesh() const
Return zoneMesh reference.
Definition: faceZone.C:382
Foam::polyBoundaryMesh::whichPatch
label whichPatch(const label faceIndex) const
Return patch index for a given face label.
Definition: polyBoundaryMesh.C:805
Foam::List< label >::operator=
void operator=(const UList< label > &a)
Assignment to UList operator. Takes linear time.
Definition: List.C:478
Foam::token::END_STATEMENT
End entry [isseparator].
Definition: token.H:116
Foam::token::END_BLOCK
End block [isseparator].
Definition: token.H:122
Foam::dictionary::lookup
ITstream & lookup(const word &keyword, enum keyType::option matchOpt=keyType::REGEX) const
Definition: dictionary.C:419
dict
dictionary dict
Definition: searchingEngine.H:14
Foam::IOstream::check
virtual bool check(const char *operation) const
Check IOstream status for given operation.
Definition: IOstream.C:51
Foam::FatalError
error FatalError
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:121
Foam::primitiveMesh::nBoundaryFaces
label nBoundaryFaces() const
Number of boundary faces (== nFaces - nInternalFaces)
Definition: primitiveMeshI.H:84
mesh
dynamicFvMesh & mesh
Definition: createDynamicFvMesh.H:6
addToRunTimeSelectionTable.H
Macros for easy insertion into run-time selection tables.
faceZoneMesh.H
Foam::faceZoneMesh.
Foam::faceZone::movePoints
virtual void movePoints(const pointField &pts)
Correct patch after moving points.
Definition: faceZone.C:620
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::faceZone::whichFace
label whichFace(const label globalCellID) const
Helper function to re-direct to zone::localID(...)
Definition: faceZone.C:388
Foam::abort
errorManip< error > abort(error &err)
Definition: errorManip.H:137
Foam::token::BEGIN_BLOCK
Begin block [isseparator].
Definition: token.H:121
Foam::UList::writeEntry
void writeEntry(Ostream &os) const
Write the UList with its compound type.
Definition: UListIO.C:38
Foam::mapPolyMesh::reverseFaceMap
const labelList & reverseFaceMap() const
Reverse face map.
Definition: mapPolyMesh.H:500
Foam::faceZone::checkParallelSync
virtual bool checkParallelSync(const bool report=false) const
Check whether all procs have faces synchronised.
Definition: faceZone.C:531
Foam::faceZone::masterCells
const labelList & masterCells() const
Definition: faceZone.C:405
Foam::faceZone::operator()
const primitiveFacePatch & operator()() const
Return reference to primitive patch.
Definition: faceZone.C:394
FatalErrorInFunction
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
Definition: error.H:355
Foam::nl
constexpr char nl
Definition: Ostream.H:372
Foam::faceZone::calcCellLayers
void calcCellLayers() const
Calculate master and slave face layer.
Definition: faceZone.C:117
f
labelList f(nPoints)
Foam::foamVersion::patch
const std::string patch
OpenFOAM patch number as a std::string.
Foam::faceList
List< face > faceList
A List of faces.
Definition: faceListFwd.H:47
Foam::faceZone::calcFaceZonePatch
void calcFaceZonePatch() const
Build primitive patch.
Definition: faceZone.C:70
Foam::faceZone::writeDict
virtual void writeDict(Ostream &os) const
Write dictionary.
Definition: faceZone.C:636
faceZone.H
Foam::List< face >
Foam::primitiveMesh::isInternalFace
bool isInternalFace(const label faceIndex) const
Return true if given face label is internal to the mesh.
Definition: primitiveMeshI.H:102
Foam::type
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
Definition: MSwindows.C:590
Foam::UList< label >
points
const pointField & points
Definition: gmvOutputHeader.H:1
Foam::List::clear
void clear()
Clear the list, i.e. set size to zero.
Definition: ListI.H:115
Foam::zone::localID
label localID(const label globalID) const
Map storing the local index for every global index. Used to find.
Definition: zone.C:178
FUNCTION_NAME
#define FUNCTION_NAME
Definition: messageStream.H:261
Foam::mapPolyMesh
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Definition: mapPolyMesh.H:160
Foam::faceZone::write
virtual void write(Ostream &os) const
Write.
Definition: faceZone.C:628
Foam::Ostream
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:56
Foam::List::setSize
void setSize(const label newSize)
Alias for resize(const label)
Definition: ListI.H:146
Foam::orOp
Definition: ops.H:234
Foam::defineTypeNameAndDebug
defineTypeNameAndDebug(combustionModel, 0)
WarningInFunction
#define WarningInFunction
Report a warning using Foam::Warning.
Definition: messageStream.H:294
Foam::operator<<
Ostream & operator<<(Ostream &, const boundaryPatch &)
Definition: boundaryPatch.C:102
Foam::PrimitivePatch
A list of faces which address into the list of points.
Definition: PrimitivePatch.H:90
Foam::zone::checkDefinition
virtual bool checkDefinition(const bool report=false) const =0
Check zone definition. Return true if in error.