50 setsToFaceZone::typeName,
51 "\n Usage: setsToFaceZone <faceSet> <slaveCellSet>\n\n"
52 " Select all faces in the faceSet."
53 " Orientated so slave side is in cellSet.\n\n"
62 const word& faceSetName,
63 const word& cellSetName,
68 faceSetName_(faceSetName),
69 cellSetName_(cellSetName),
81 faceSetName_(
dict.get<
word>(
"faceSet")),
82 cellSetName_(
dict.get<
word>(
"cellSet")),
83 flip_(
dict.getOrDefault(
"flip", false))
94 faceSetName_(checkIs(is)),
95 cellSetName_(checkIs(is)),
108 if (!isA<faceZoneSet>(set))
111 <<
"Operation only allowed on a faceZoneSet." <<
endl;
124 Info<<
" Adding all faces from faceSet " << faceSetName_
125 <<
"; orientation pointing into cellSet "
126 << cellSetName_ <<
" ..." <<
endl;
130 Info<<
" Adding all faces from faceSet " << faceSetName_
131 <<
"; orientation pointing away from cellSet "
132 << cellSetName_ <<
" ..." <<
endl;
137 faceSet fSet(mesh_, faceSetName_);
138 cellSet cSet(mesh_, cellSetName_);
144 for (
const label facei : fSet)
146 if (!zoneSet.
found(facei))
148 bool flipFace =
false;
150 const label own = mesh_.faceOwner()[facei];
151 const bool ownFound = cSet.
found(own);
153 if (mesh_.isInternalFace(facei))
155 label nei = mesh_.faceNeighbour()[facei];
156 bool neiFound = cSet.
found(nei);
158 if (ownFound && !neiFound)
162 else if (!ownFound && neiFound)
169 <<
"One of owner or neighbour of internal face "
170 << facei <<
" should be in cellSet "
172 <<
" to be able to determine orientation."
174 <<
"Face:" << facei <<
" own:" << own
175 <<
" OwnInCellSet:" << ownFound
177 <<
" NeiInCellSet:" << neiFound
183 flipFace = !ownFound;
189 flipFace = !flipFace;
192 newAddressing.
append(facei);
193 newFlipMap.
append(flipFace);
205 Info<<
" Removing all faces from faceSet " << faceSetName_
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects.
void append(const T &val)
Copy append an element to the end of this list.
const word & name() const noexcept
Return the object name.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
void transfer(List< T > &list)
void size(const label n)
Older name for setAddressableSize.
A collection of cell labels.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Like faceSet but -reads data from faceZone -updates faceZone when writing.
const boolList & flipMap() const noexcept
const labelList & addressing() const noexcept
void updateSet()
Sort addressing and make faceSet part consistent with addressing.
Mesh consisting of general polyhedral cells.
A topoSetSource to select all faces in a given faceSet, which are oriented in slave cells of a given ...
virtual void applyToSet(const topoSetSource::setAction action, topoSet &set) const
Apply specified action to the topoSet.
The topoSetFaceZoneSource is a intermediate class for handling topoSet sources for selecting face zon...
Class with constructor to add usage string to table.
Base class of a source for a topoSet.
setAction
Enumeration defining various actions.
@ SUBTRACT
Subtract elements from current set.
@ ADD
Add elements to current set.
@ NEW
Create a new set and ADD elements to it.
General set of labels of mesh quantity (points, cells, faces).
virtual bool found(const label id) const
Has the given index?
A class for handling words, derived from Foam::string.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
#define WarningInFunction
Report a warning using Foam::Warning.
messageStream Info
Information stream (stdout output on master, null elsewhere)
Ostream & endl(Ostream &os)
Add newline and flush stream.
#define forAll(list, i)
Loop across all elements in list.