91 bool hasSide = surfacesDict.
readIfPresent(
"cellZoneInside", method);
94 zoneInside_ = areaSelectionAlgoNames[method];
95 if (zoneInside_ == INSIDEPOINT)
97 surfacesDict.
lookup(
"insidePoint") >> zoneInsidePoint_;
108 zoneInside_ = (inside ? INSIDE : OUTSIDE);
119 zoneInside_ == INSIDE
120 || zoneInside_ == OUTSIDE
128 ) <<
"Illegal entry zoneInside " 129 << areaSelectionAlgoNames[zoneInside_]
132 <<
" since surface is not closed." <<
endl;
140 ) <<
"Unused entry zoneInside for faceZone " 142 <<
" since no cellZone specified." 150 faceType_ = faceZoneTypeNames[faceTypeMethod];
158 const word& faceZoneName,
159 const word& cellZoneName,
161 const point& zoneInsidePoint,
165 faceZoneName_(faceZoneName),
166 cellZoneName_(cellZoneName),
167 zoneInside_(zoneInside),
168 zoneInsidePoint_(zoneInsidePoint),
175 faceZoneName_(surfZone.faceZoneName()),
176 cellZoneName_(surfZone.cellZoneName()),
177 zoneInside_(surfZone.zoneInside()),
178 zoneInsidePoint_(surfZone.zoneInsidePoint()),
179 faceType_(surfZone.faceType())
195 anonymousSurfaces[i++] = surfI;
198 anonymousSurfaces.setSize(i);
200 return anonymousSurfaces;
217 && surfList[surfI].faceZoneName().
size()
220 namedSurfaces[namedI++] = surfI;
225 return namedSurfaces;
244 && surfList[surfI].cellZoneName().
size()
249 && allGeometry[surfaces[surfI]].hasVolumeType()
252 closed[closedI++] = surfI;
255 closed.setSize(closedI);
276 && !allGeometry[surfaces[surfI]].hasVolumeType()
279 unclosed[unclosedI++] = surfI;
282 unclosed.setSize(unclosedI);
303 && surfList[surfI].cellZoneName().
size()
304 && allGeometry[surfaces[surfI]].hasVolumeType()
307 closed[closedI++] = surfI;
310 closed.setSize(closedI);
329 && surfList[surfI].cellZoneName().
size()
333 closed[closedI++] = surfI;
336 closed.setSize(closedI);
355 label surfI = namedSurfaces[i];
357 const word& cellZoneName = surfList[surfI].cellZoneName();
361 label zoneI = cellZones.findZoneID(cellZoneName);
365 zoneI = cellZones.
size();
366 cellZones.setSize(zoneI+1);
380 surfaceToCellZone[surfI] = zoneI;
390 for (
label proci = 1; proci < allCellZones.
size(); proci++)
392 if (allCellZones[proci] != allCellZones[0])
395 <<
"Zones not synchronised among processors." <<
nl 396 <<
" Processor0 has cellZones:" << allCellZones[0]
397 <<
" , processor" << proci
398 <<
" has cellZones:" << allCellZones[proci]
403 return surfaceToCellZone;
420 label surfI = namedSurfaces[i];
422 const word& faceZoneName = surfList[surfI].faceZoneName();
424 label zoneI = faceZones.findZoneID(faceZoneName);
428 zoneI = faceZones.
size();
429 faceZones.setSize(zoneI+1);
444 surfaceToFaceZone[surfI] = zoneI;
453 for (
label proci = 1; proci < allFaceZones.
size(); proci++)
455 if (allFaceZones[proci] != allFaceZones[0])
458 <<
"Zones not synchronised among processors." <<
nl 459 <<
" Processor0 has faceZones:" << allFaceZones[0]
460 <<
" , processor" << proci
461 <<
" has faceZones:" << allFaceZones[proci]
466 return surfaceToFaceZone;
static void scatterList(const List< commsStruct > &comms, List< T > &Values, const int tag, const label comm)
Scatter data. Reverse of gatherList.
#define forAll(list, i)
Loop across all elements in list.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
bool set(const label) const
Is element set.
static const NamedEnum< faceZoneType, 3 > faceZoneTypeNames
const faceZoneMesh & faceZones() const
Return face zone mesh.
errorManipArg< error, int > exit(error &err, const int errNo=1)
A list of keyword definitions, which are a keyword followed by any number of values (e...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
A surface zone on a MeshedSurface.
void size(const label)
Override size to be inconsistent with allocated storage.
static int myProcNo(const label communicator=0)
Number of this process (starting from masterNo() = 0)
Ostream & endl(Ostream &os)
Add newline and flush stream.
static labelList addCellZonesToMesh(const PtrList< surfaceZonesInfo > &surfList, const labelList &namedSurfaces, polyMesh &mesh)
Base class of (analytical or triangulated) surface. Encapsulates all the search routines. WIP.
Initialise the NamedEnum HashTable from the static list of names.
static labelList getUnclosedNamedSurfaces(const PtrList< surfaceZonesInfo > &surfList, const searchableSurfaces &allGeometry, const labelList &surfaces)
Get indices of surfaces with a cellZone that are unclosed.
static const Vector< scalar > min
static labelList getAllClosedNamedSurfaces(const PtrList< surfaceZonesInfo > &surfList, const searchableSurfaces &allGeometry, const labelList &surfaces)
Get indices of surfaces with a cellZone that are closed.
List< bool > boolList
Bool container classes.
A class for handling words, derived from string.
const cellZoneMesh & cellZones() const
Return cell zone mesh.
bool readIfPresent(const word &, T &, bool recursive=false, bool patternMatch=true) const
Find an entry if present, and assign to T.
static const word null
An empty word.
Container for searchableSurfaces.
List< label > labelList
A List of labels.
static labelList getInsidePointNamedSurfaces(const PtrList< surfaceZonesInfo > &surfList)
Get indices of surfaces with a cellZone that have 'insidePoint'.
static labelList getUnnamedSurfaces(const PtrList< surfaceZonesInfo > &surfList)
Get indices of unnamed surfaces (surfaces without faceZoneName)
label size() const
Return the number of elements in the UPtrList.
void setSize(const label)
Reset size of List.
static label nProcs(const label communicator=0)
Number of processes in parallel run.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
static labelList addFaceZonesToMesh(const PtrList< surfaceZonesInfo > &surfList, const labelList &namedSurfaces, polyMesh &mesh)
static labelList getClosedNamedSurfaces(const PtrList< surfaceZonesInfo > &surfList, const searchableSurfaces &allGeometry, const labelList &surfaces)
Get indices of surfaces with a cellZone that are closed and.
static labelList getNamedSurfaces(const PtrList< surfaceZonesInfo > &surfList)
Get indices of named surfaces (surfaces with faceZoneName)
static const NamedEnum< areaSelectionAlgo, 4 > areaSelectionAlgoNames
faceZoneType
What to do with faceZone faces.
#define IOWarningInFunction(ios)
Report an IO warning using Foam::Warning.
Mesh consisting of general polyhedral cells.
surfaceZonesInfo(const searchableSurface &surface, const dictionary &surfacesDict)
Construct from surfaces and dictionary.
A subset of mesh faces organised as a primitive patch.
const word & faceZoneName() const
Per 'interface' surface : empty or name of faceZone to put.
static void gatherList(const List< commsStruct > &comms, List< T > &Values, const int tag, const label comm)
Gather data but keep individual values separate.
areaSelectionAlgo
Types of selection of area.
virtual bool hasVolumeType() const =0
Whether supports volume type below.
ITstream & lookup(const word &, bool recursive=false, bool patternMatch=true) const
Find and return an entry data stream.