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-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 \*---------------------------------------------------------------------------*/
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  DebugInFunction << "Calculating primitive patch" << endl;
73 
74  if (patchPtr_)
75  {
77  << "primitive face zone patch already calculated"
78  << abort(FatalError);
79  }
80 
81  patchPtr_ =
83  (
84  faceList(size()),
85  zoneMesh().mesh().points()
86  );
87 
88  primitiveFacePatch& patch = *patchPtr_;
89 
90  const faceList& f = zoneMesh().mesh().faces();
91 
92  const labelList& addr = *this;
93  const boolList& flip = flipMap();
94 
95  forAll(addr, facei)
96  {
97  if (flip[facei])
98  {
99  patch[facei] = f[addr[facei]].reverseFace();
100  }
101  else
102  {
103  patch[facei] = f[addr[facei]];
104  }
105  }
106 
107  DebugInfo << "Finished calculating primitive patch" << endl;
108 }
109 
110 
112 {
113  DebugInFunction << "Calculating master cells" << endl;
114 
115  // It is an error to attempt to recalculate edgeCells
116  // if the pointer is already set
117  if (masterCellsPtr_ || slaveCellsPtr_)
118  {
120  << "cell layers already calculated"
121  << abort(FatalError);
122  }
123  else
124  {
125  // Go through all the faces in the master zone. Choose the
126  // master or slave cell based on the face flip
127 
128  const labelList& own = zoneMesh().mesh().faceOwner();
129  const labelList& nei = zoneMesh().mesh().faceNeighbour();
130 
131  const labelList& mf = *this;
132 
133  const boolList& faceFlip = flipMap();
134 
135  masterCellsPtr_ = new labelList(mf.size());
136  labelList& mc = *masterCellsPtr_;
137 
138  slaveCellsPtr_ = new labelList(mf.size());
139  labelList& sc = *slaveCellsPtr_;
140 
141  forAll(mf, facei)
142  {
143  const label ownCelli = own[mf[facei]];
144  const label neiCelli =
145  (
146  zoneMesh().mesh().isInternalFace(mf[facei])
147  ? nei[mf[facei]]
148  : -1
149  );
150 
151  if (!faceFlip[facei])
152  {
153  // Face is oriented correctly, no flip needed
154  mc[facei] = neiCelli;
155  sc[facei] = ownCelli;
156  }
157  else
158  {
159  mc[facei] = ownCelli;
160  sc[facei] = neiCelli;
161  }
162  }
163  }
164 }
165 
166 
168 {
169  if (size() != flipMap_.size())
170  {
172  << "Size of addressing: " << size()
173  << " size of flip map: " << flipMap_.size()
174  << abort(FatalError);
175  }
176 
177  const labelList& mf = *this;
178 
179  // Note: nFaces, nCells might not be set yet on mesh so use owner size
180  const label nFaces = zoneMesh().mesh().faceOwner().size();
181 
182  bool hasWarned = false;
183  forAll(mf, i)
184  {
185  if (!hasWarned && (mf[i] < 0 || mf[i] >= nFaces))
186  {
188  << "Illegal face index " << mf[i] << " outside range 0.."
189  << nFaces-1 << endl;
190  hasWarned = true;
191  }
192  }
193 }
194 
195 
196 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
197 
198 Foam::faceZone::faceZone
199 (
200  const word& name,
201  const label index,
202  const faceZoneMesh& zm
203 )
204 :
205  zone(name, index),
206  flipMap_(),
207  zoneMesh_(zm),
208  patchPtr_(nullptr),
209  masterCellsPtr_(nullptr),
210  slaveCellsPtr_(nullptr),
211  mePtr_(nullptr)
212 {}
213 
214 
215 Foam::faceZone::faceZone
216 (
217  const word& name,
218  const labelUList& addr,
219  const bool flipMapValue,
220  const label index,
221  const faceZoneMesh& zm
222 )
223 :
224  zone(name, addr, index),
225  flipMap_(),
226  zoneMesh_(zm),
227  patchPtr_(nullptr),
228  masterCellsPtr_(nullptr),
229  slaveCellsPtr_(nullptr),
230  mePtr_(nullptr)
231 {
232  flipMap_.setSize(size(), flipMapValue);
233  checkAddressing();
234 }
235 
236 
237 Foam::faceZone::faceZone
238 (
239  const word& name,
240  labelList&& addr,
241  const bool flipMapValue,
242  const label index,
243  const faceZoneMesh& zm
244 )
245 :
246  zone(name, std::move(addr), index),
247  flipMap_(),
248  zoneMesh_(zm),
249  patchPtr_(nullptr),
250  masterCellsPtr_(nullptr),
251  slaveCellsPtr_(nullptr),
252  mePtr_(nullptr)
253 {
254  flipMap_.setSize(size(), flipMapValue);
255  checkAddressing();
256 }
257 
258 
259 Foam::faceZone::faceZone
260 (
261  const word& name,
262  const labelUList& addr,
263  const boolUList& fm,
264  const label index,
265  const faceZoneMesh& zm
266 )
267 :
268  zone(name, addr, index),
269  flipMap_(fm),
270  zoneMesh_(zm),
271  patchPtr_(nullptr),
272  masterCellsPtr_(nullptr),
273  slaveCellsPtr_(nullptr),
274  mePtr_(nullptr)
275 {
276  checkAddressing();
277 }
278 
279 
280 Foam::faceZone::faceZone
281 (
282  const word& name,
283  labelList&& addr,
284  boolList&& fm,
285  const label index,
286  const faceZoneMesh& zm
287 )
288 :
289  zone(name, std::move(addr), index),
290  flipMap_(std::move(fm)),
291  zoneMesh_(zm),
292  patchPtr_(nullptr),
293  masterCellsPtr_(nullptr),
294  slaveCellsPtr_(nullptr),
295  mePtr_(nullptr)
296 {
297  checkAddressing();
298 }
299 
300 
301 Foam::faceZone::faceZone
302 (
303  const word& name,
304  const dictionary& dict,
305  const label index,
306  const faceZoneMesh& zm
307 )
308 :
309  zone(name, dict, this->labelsName, index),
310  flipMap_(dict.lookup("flipMap")),
311  zoneMesh_(zm),
312  patchPtr_(nullptr),
313  masterCellsPtr_(nullptr),
314  slaveCellsPtr_(nullptr),
315  mePtr_(nullptr)
316 {
317  checkAddressing();
318 }
319 
320 
321 Foam::faceZone::faceZone
322 (
323  const faceZone& origZone,
324  const labelUList& addr,
325  const boolUList& fm,
326  const label index,
327  const faceZoneMesh& zm
328 )
329 :
330  zone(origZone, addr, index),
331  flipMap_(fm),
332  zoneMesh_(zm),
333  patchPtr_(nullptr),
334  masterCellsPtr_(nullptr),
335  slaveCellsPtr_(nullptr),
336  mePtr_(nullptr)
337 {
338  checkAddressing();
339 }
340 
341 
342 Foam::faceZone::faceZone
343 (
344  const faceZone& origZone,
345  labelList&& addr,
346  boolList&& fm,
347  const label index,
348  const faceZoneMesh& zm
349 )
350 :
351  zone(origZone, std::move(addr), index),
352  flipMap_(std::move(fm)),
353  zoneMesh_(zm),
354  patchPtr_(nullptr),
355  masterCellsPtr_(nullptr),
356  slaveCellsPtr_(nullptr),
357  mePtr_(nullptr)
358 {
359  checkAddressing();
360 }
361 
362 
363 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
364 
366 {
367  clearAddressing();
368 }
369 
370 
371 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
372 
374 {
375  return zoneMesh_;
376 }
377 
378 
379 Foam::label Foam::faceZone::whichFace(const label globalFaceID) const
380 {
381  return zone::localID(globalFaceID);
382 }
383 
384 
386 {
387  if (!patchPtr_)
388  {
389  calcFaceZonePatch();
390  }
391 
392  return *patchPtr_;
393 }
394 
395 
397 {
398  if (!masterCellsPtr_)
399  {
400  calcCellLayers();
401  }
402 
403  return *masterCellsPtr_;
404 }
405 
406 
408 {
409  if (!slaveCellsPtr_)
410  {
411  calcCellLayers();
412  }
413 
414  return *slaveCellsPtr_;
415 }
416 
417 
419 {
420  if (!mePtr_)
421  {
422  mePtr_ =
423  new labelList
424  (
425  operator()().meshEdges
426  (
427  zoneMesh().mesh().edges(),
428  zoneMesh().mesh().pointEdges()
429  )
430  );
431  }
432 
433  return *mePtr_;
434 }
435 
436 
438 {
440 
441  deleteDemandDrivenData(patchPtr_);
442 
443  deleteDemandDrivenData(masterCellsPtr_);
444  deleteDemandDrivenData(slaveCellsPtr_);
445 
446  deleteDemandDrivenData(mePtr_);
447 }
448 
449 
451 (
452  const labelUList& addr,
453  const bool flipMapValue
454 )
455 {
456  clearAddressing();
457  labelList::operator=(addr);
458  setFlipMap(flipMapValue);
459 }
460 
461 
463 (
464  const labelUList& addr,
465  const boolUList& flipMap
466 )
467 {
468  clearAddressing();
469  labelList::operator=(addr);
470  flipMap_ = flipMap;
471 }
472 
473 
475 (
476  labelList&& addr,
477  const bool flipMapValue
478 )
479 {
480  clearAddressing();
481  labelList::transfer(addr);
482  setFlipMap(flipMapValue);
483 }
484 
485 
487 {
488  clearAddressing();
489 
490  labelList newAddressing(size());
491  boolList newFlipMap(flipMap_.size());
492  label nFaces = 0;
493 
494  const labelList& faceMap = mpm.reverseFaceMap();
495 
496  forAll(*this, i)
497  {
498  const label facei = operator[](i);
499 
500  if (faceMap[facei] >= 0)
501  {
502  newAddressing[nFaces] = faceMap[facei];
503  newFlipMap[nFaces] = flipMap_[i]; // Keep flip map.
504  nFaces++;
505  }
506  }
507 
508  newAddressing.setSize(nFaces);
509  newFlipMap.setSize(nFaces);
510 
511  transfer(newAddressing);
512  flipMap_.transfer(newFlipMap);
513 }
514 
515 
516 bool Foam::faceZone::checkDefinition(const bool report) const
517 {
518  return zone::checkDefinition(zoneMesh().mesh().faces().size(), report);
519 }
520 
521 
522 bool Foam::faceZone::checkParallelSync(const bool report) const
523 {
524  const polyMesh& mesh = zoneMesh().mesh();
525  const polyBoundaryMesh& bm = mesh.boundaryMesh();
526 
527  bool hasError = false;
528 
529 
530  // Check that zone faces are synced
531  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
532 
533  {
534  boolList neiZoneFace(mesh.nBoundaryFaces(), false);
535  boolList neiZoneFlip(mesh.nBoundaryFaces(), false);
536  forAll(*this, i)
537  {
538  const label facei = operator[](i);
539 
540  if (!mesh.isInternalFace(facei))
541  {
542  neiZoneFace[facei-mesh.nInternalFaces()] = true;
543  neiZoneFlip[facei-mesh.nInternalFaces()] = flipMap()[i];
544  }
545  }
546  boolList myZoneFace(neiZoneFace);
548  boolList myZoneFlip(neiZoneFlip);
550 
551  forAll(*this, i)
552  {
553  const label facei = operator[](i);
554  const label patchi = bm.whichPatch(facei);
555 
556  if (patchi != -1 && bm[patchi].coupled())
557  {
558  const label bFacei = facei-mesh.nInternalFaces();
559 
560  // Check face in zone on both sides
561  if (myZoneFace[bFacei] != neiZoneFace[bFacei])
562  {
563  hasError = true;
564 
565  if (report)
566  {
567  Pout<< " ***Problem with faceZone " << index()
568  << " named " << name()
569  << ". Face " << facei
570  << " on coupled patch "
571  << bm[patchi].name()
572  << " is not consistent with its coupled neighbour."
573  << endl;
574  }
575  else
576  {
577  // w/o report - can stop checking now
578  break;
579  }
580  }
581  else if (myZoneFlip[bFacei] == neiZoneFlip[bFacei])
582  {
583  // Flip state should be opposite.
584  hasError = true;
585 
586  if (report)
587  {
588  Pout<< " ***Problem with faceZone " << index()
589  << " named " << name()
590  << ". Face " << facei
591  << " on coupled patch "
592  << bm[patchi].name()
593  << " does not have consistent flipMap"
594  << " across coupled faces."
595  << endl;
596  }
597  else
598  {
599  // w/o report - can stop checking now
600  break;
601  }
602  }
603  }
604  }
605  }
606 
607  return returnReduce(hasError, orOp<bool>());
608 }
609 
610 
612 {
613  if (patchPtr_)
614  {
615  patchPtr_->movePoints(pts);
616  }
617 }
618 
620 {
621  os << nl << name()
622  << nl << static_cast<const labelList&>(*this)
623  << nl << flipMap();
624 }
625 
626 
628 {
629  os << nl << name() << nl << token::BEGIN_BLOCK << nl
630  << " type " << type() << token::END_STATEMENT << nl;
631 
632  writeEntry(this->labelsName, os);
633  flipMap().writeEntry("flipMap", os);
634 
635  os << token::END_BLOCK << endl;
636 }
637 
638 
639 // * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * //
640 
642 {
643  zn.write(os);
644  os.check(FUNCTION_NAME);
645  return os;
646 }
647 
648 
649 // ************************************************************************* //
Foam::addToRunTimeSelectionTable
addToRunTimeSelectionTable(decompositionMethod, kahipDecomp, dictionary)
Foam::labelList
List< label > labelList
A List of labels.
Definition: List.H:71
Foam::faceZone::clearAddressing
virtual void clearAddressing()
Clear addressing.
Definition: faceZone.C:437
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: blockMeshMergeTopological.C:94
Foam::IOobject::name
const word & name() const
Return name.
Definition: IOobjectI.H:70
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:167
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:418
Foam::primitiveFacePatch
PrimitivePatch< List< face >, const pointField & > primitiveFacePatch
A PrimitivePatch with List storage for the faces, const reference for the point field.
Definition: primitiveFacePatch.H:51
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:451
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:178
Foam::polyMesh::boundaryMesh
const polyBoundaryMesh & boundaryMesh() const
Return boundary mesh.
Definition: polyMesh.H:444
primitiveMesh.H
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:350
Foam::Pout
prefixOSstream Pout
OSstream wrapped stdout (std::cout) with parallel prefix.
polyMesh.H
syncTools.H
Foam::faceZone::~faceZone
virtual ~faceZone()
Destructor.
Definition: faceZone.C:365
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:296
Foam::deleteDemandDrivenData
void deleteDemandDrivenData(DataPtr &dataPtr)
Definition: demandDrivenData.H:42
Foam::operator<<
Ostream & operator<<(Ostream &, const boundaryPatch &p)
Write boundaryPatch as dictionary entries (without surrounding braces)
Definition: boundaryPatch.C:83
Foam::Field< vector >
Foam::faceZone
A subset of mesh faces organised as a primitive patch.
Definition: faceZone.H:65
DebugInFunction
#define DebugInFunction
Report an information message using Foam::Info.
Definition: messageStream.H:365
Foam::faceZone::checkDefinition
virtual bool checkDefinition(const bool report=false) const
Check zone definition. Return true if in error.
Definition: faceZone.C:516
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:459
Foam::faceZone::updateMesh
virtual void updateMesh(const mapPolyMesh &mpm)
Update for changes in topology.
Definition: faceZone.C:486
Foam::faceZone::slaveCells
const labelList & slaveCells() const
Return labels of slave cells.
Definition: faceZone.C:407
Foam::ZoneMesh< faceZone, polyMesh >
Foam::faceZone::zoneMesh
const faceZoneMesh & zoneMesh() const
Return zoneMesh reference.
Definition: faceZone.C:373
Foam::polyBoundaryMesh::whichPatch
label whichPatch(const label faceIndex) const
Return patch index for a given face label.
Definition: polyBoundaryMesh.C:810
Foam::List< label >::operator=
void operator=(const UList< label > &a)
Assignment to UList operator. Takes linear time.
Definition: List.C:501
Foam::token::END_STATEMENT
End entry [isseparator].
Definition: token.H:121
Foam::token::END_BLOCK
End block [isseparator].
Definition: token.H:127
Foam::dictionary::lookup
ITstream & lookup(const word &keyword, enum keyType::option matchOpt=keyType::REGEX) const
Definition: dictionary.C:424
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:611
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:379
Foam::abort
errorManip< error > abort(error &err)
Definition: errorManip.H:144
Foam::token::BEGIN_BLOCK
Begin block [isseparator].
Definition: token.H:126
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:501
Foam::faceZone::checkParallelSync
virtual bool checkParallelSync(const bool report=false) const
Check whether all procs have faces synchronised.
Definition: faceZone.C:522
Foam::faceZone::masterCells
const labelList & masterCells() const
Definition: faceZone.C:396
Foam::faceZone::operator()
const primitiveFacePatch & operator()() const
Return reference to primitive patch.
Definition: faceZone.C:385
FatalErrorInFunction
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
Definition: error.H:381
DebugInfo
#define DebugInfo
Report an information message using Foam::Info.
Definition: messageStream.H:359
Foam::nl
constexpr char nl
Definition: Ostream.H:385
Foam::faceZone::calcCellLayers
void calcCellLayers() const
Calculate master and slave face layer.
Definition: faceZone.C:111
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:627
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:172
FUNCTION_NAME
#define FUNCTION_NAME
Definition: messageStream.H:270
Foam::mapPolyMesh
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Definition: mapPolyMesh.H:161
Foam::faceZone::write
virtual void write(Ostream &os) const
Write.
Definition: faceZone.C:619
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:303
Foam::PrimitivePatch
A list of faces which address into the list of points.
Definition: PrimitivePatch.H:85
Foam::zone::checkDefinition
virtual bool checkDefinition(const bool report=false) const =0
Check zone definition. Return true if in error.