Go to the documentation of this file.
46 const labelList& fEdges = pp_.faceEdges()[faceI];
55 const edge&
e = edges[fEdges[fp]];
57 if ((
e[0] == v0 &&
e[1] == v1) || (
e[0] == v1 &&
e[1] == v0))
60 nbrEdgeI = fEdges[fp];
67 label edgeI = fEdges[i];
69 const edge&
e = edges[edgeI];
73 (
e[0] == v0 &&
e[1] == v1)
74 || (
e[0] == v1 &&
e[1] == v0)
89 <<
"Did not find edge on face " << faceI <<
" that uses vertices"
96 const labelList& eFaces = pp_.edgeFaces()[nbrEdgeI];
98 if (eFaces.
size() == 1)
102 else if (eFaces.
size() == 2)
104 label nbrFaceI = eFaces[0];
106 if (nbrFaceI == faceI)
108 nbrFaceI = eFaces[1];
116 <<
"Illegal surface on patch. Face " << faceI
117 <<
" at vertices " << v0 <<
',' << v1
118 <<
" has fewer than 1 or more than 2 neighbours"
137 nbrEnterVerts.
setSize(pp_.size());
142 label faceI = changedFaces[i];
143 label enterVertI = enterVerts[i];
145 if (!visited_[faceI])
148 visited_[faceI] =
true;
149 visitOrder_.
append(faceI);
151 const face&
f = pp_.localFaces()[faceI];
155 indexInFace_.append(fp);
158 for (
label i = 0; i <
f.size(); i++)
160 label fp1 = reverse_ ?
f.rcIndex(fp) :
f.fcIndex(fp);
161 label nbr = getNeighbour(faceI, fp,
f[fp],
f[fp1]);
167 && faceZone_[nbr] == faceZone_[faceI]
170 nbrFaces[changedI] = nbr;
171 nbrEnterVerts[changedI] =
f[fp];
181 nbrEnterVerts.
setSize(changedI);
194 const label enterVertI,
202 visitOrder_(pp.size()),
203 indexInFace_(pp.size())
225 if (nbrFaces.empty())
230 changedFaces = nbrFaces;
231 enterVerts = nbrEnterVerts;
234 visitOrder_.shrink();
235 indexInFace_.shrink();
walkPatch(const walkPatch &)
Disallow default bitwise copy construct.
#define forAll(list, i)
Loop across all elements in list.
label findIndex(const ListType &, typename ListType::const_reference, const label start=0)
Find first occurence of given element and return index,.
void faceToFace(const labelList &changedFaces, const labelList &enterVerts, labelList &nbrFaces, labelList &nbrEnterVerts)
Gets labels of changed faces and enterVertices on faces.
An edge is a list of two point labels. The functionality it provides supports the discretisation on a...
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
A topoSetSource to select faces based on usage in another faceSet.
A subset of mesh faces organised as a primitive patch.
void append(const T &)
Append an element at the end of the list.
errorManip< error > abort(error &err)
void setSize(const label)
Reset size of List.
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
label getNeighbour(const label faceI, const label fp, const label v0, const label v1) const
Get other face using v0, v1. Returns -1 if none.
const dimensionedScalar e
Elementary charge.
defineTypeNameAndDebug(Foam::walkPatch, 0)
Collection of static functions to do various simple patch related things.
#define FatalErrorIn(functionName)
Report an error message using Foam::FatalError.
A face is a list of labels corresponding to mesh vertices.
Various functions to operate on Lists.
void size(const label)
Override size to be inconsistent with allocated storage.
A list of faces which address into the list of points.
void reverse(UList< T > &, const label n)