67 regionToFace::typeName,
68 "\n Usage: regionToFace <faceSet> (x y z)\n\n"
69 " Select all faces in the connected region of the faceSet"
70 " starting from the point.\n"
76void Foam::regionToFace::markZone
78 const indirectPrimitivePatch& patch,
86 List<edgeTopoDistanceData<label>> allEdgeInfo(patch.nEdges());
87 List<edgeTopoDistanceData<label>> allFaceInfo(patch.size());
89 DynamicList<label> changedEdges;
90 DynamicList<edgeTopoDistanceData<label>> changedInfo;
94 const labelList& fEdges = patch.faceEdges()[facei];
95 for (
const label edgei : fEdges)
97 changedEdges.append(edgei);
100 edgeTopoDistanceData<label>
113 edgeTopoDistanceData<label>
125 forAll(allFaceInfo, facei)
129 allFaceInfo[facei].valid(calc.data())
130 && allFaceInfo[facei].data() == zonei
133 faceZone[facei] = zonei;
143 Info<<
" Loading subset " << setName_
144 <<
" to delimit search region." <<
endl;
147 faceSet subSet(mesh_, setName_);
151 IndirectList<face>(mesh_.faces(), subSet.toc()),
158 Tuple2<scalar, label>
168 scalar d2 =
magSqr(fc-nearPoint_);
170 if (!ni.first().hit() || d2 < ni.second().first())
172 ni.second().first() = d2;
174 ni.first().setPoint(fc);
175 ni.first().setIndex(i);
184 Info<<
" Found nearest face at " << ni.first().rawPoint()
185 <<
" on processor " << ni.second().second()
186 <<
" face " << ni.first().index()
194 ni.second().second(),
202 if (faceRegion[facei] == 0)
204 addOrDelete(set,
patch.addressing()[facei],
add);
216 const point& nearPoint
221 nearPoint_(nearPoint)
244 setName_(checkIs(is)),
245 nearPoint_(checkIs(is))
261 Info<<
" Adding all faces of connected region of set "
262 << setName_ <<
" starting from point " << nearPoint_
272 Info<<
" Removing all cells of connected region of set "
273 << setName_ <<
" starting from point " << nearPoint_
Macros for easy insertion into run-time selection tables.
#define addNamedToRunTimeSelectionTable(baseType, thisType, argNames, lookupName)
Add to construction table with 'lookupName' as the key.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
static void combineAllGather(const List< commsStruct > &comms, T &value, const CombineOp &cop, const int tag=UPstream::msgType(), const label comm=UPstream::worldComm)
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Tuple2< pointIndexHit, Tuple2< scalar, label > > nearInfo
Helper class for finding nearest.
Mesh consisting of general polyhedral cells.
int myProcNo() const noexcept
Return processor number.
A topoSetFaceSource to select cells belonging to a topologically connected region (that contains give...
virtual void applyToSet(const topoSetSource::setAction action, topoSet &) const
Apply specified action to the topoSet.
The topoSetFaceSource is a intermediate class for handling topoSet sources for selecting faces.
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.
const polyMesh & mesh_
Reference to the mesh.
General set of labels of mesh quantity (points, cells, faces).
A class for handling words, derived from Foam::string.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
const std::string patch
OpenFOAM patch number as a std::string.
List< label > labelList
A List of labels.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
PointIndexHit< point > pointIndexHit
A PointIndexHit for 3D points.
messageStream Info
Information stream (stdout output on master, null elsewhere)
vector point
Point is a vector.
Ostream & endl(Ostream &os)
Add newline and flush stream.
dimensionedScalar sqrt(const dimensionedScalar &ds)
void add(FieldField< Field1, typename typeOfSum< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
static constexpr const zero Zero
Global zero (0)
T returnReduce(const T &value, const BinaryOp &bop, const int tag=UPstream::msgType(), const label comm=UPstream::worldComm)
Reduce (copy) and return value.
PrimitivePatch< IndirectList< face >, const pointField & > indirectPrimitivePatch
A PrimitivePatch with an IndirectList for the faces, const reference for the point field.
dimensioned< typename typeOfMag< Type >::type > magSqr(const dimensioned< Type > &dt)
#define forAll(list, i)
Loop across all elements in list.