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.
static const NamedEnum< faceZoneType, 3 > faceZoneTypeNames
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.
static const Vector< scalar > min
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 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.
bool readIfPresent(const word &, T &, bool recursive=false, bool patternMatch=true) const
Find an entry if present, and assign to T.
bool set(const label) const
Is element set.
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)
const word & faceZoneName() const
Per 'interface' surface : empty or name of faceZone to put.
void setSize(const label)
Reset size of List.
const cellZoneMesh & cellZones() const
Return cell zone mesh.
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
const faceZoneMesh & faceZones() const
Return face zone mesh.
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.
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.
label size() const
Return the number of elements in the UPtrList.
ITstream & lookup(const word &, bool recursive=false, bool patternMatch=true) const
Find and return an entry data stream.