33 template<
class TrackingData>
45 const scalar dist2 =
magSqr(pt -
w2.origin_[index2]);
116 template<
class TrackingData>
119 return origin_.size();
124 template<
class TrackingData>
138 template<
class TrackingData>
143 const label patchFacei,
144 const point& faceCentre,
148 for (
auto& o : origin_)
156 template<
class TrackingData>
164 for (
auto& o : origin_)
172 template<
class TrackingData>
176 const polyPatch&
patch,
177 const label patchFacei,
178 const point& faceCentre,
183 for (
auto& o : origin_)
191 template<
class TrackingData>
194 const polyMesh&
mesh,
195 const label thisCelli,
196 const label neighbourFacei,
197 const wallPoints& neighbourInfo,
204 bool hasChanged =
false;
206 forAll(neighbourInfo.surface_, i)
208 const FixedList<label, 3>& nbrSurface = neighbourInfo.surface_[i];
210 const scalar d2 =
magSqr(cc-neighbourInfo.origin_[i]);
213 bool propagate =
false;
222 const scalar blockSize =
225 propagate = (d2 <
Foam::sqr(3*blockSize));
238 label index = surface_.
find(nbrSurface);
242 origin_.append(neighbourInfo.origin_[i]);
244 surface_.append(nbrSurface);
251 update(cc, index, neighbourInfo, i, tol,
td)
273 template<
class TrackingData>
277 const label thisFacei,
278 const label neighbourCelli,
285 bool hasChanged =
false;
298 bool propagate =
false;
308 const scalar blockSize =
311 propagate = (d2 <
Foam::sqr(3*blockSize));
319 label index = surface_.
find(nbrSurface);
323 origin_.append(neighbourInfo.
origin_[i]);
325 surface_.append(nbrSurface);
332 update(fc, index, neighbourInfo, i, tol,
td)
355 template<
class TrackingData>
359 const label thisFacei,
366 bool hasChanged =
false;
379 bool propagate =
false;
389 const scalar blockSize =
392 propagate = (d2 <
Foam::sqr(3*blockSize));
400 const label index = surface_.
find(nbrSurface);
404 origin_.append(neighbourInfo.
origin_[i]);
406 surface_.append(nbrSurface);
413 update(fc, index, neighbourInfo, i, tol,
td)
435 template<
class TrackingData>
448 inline bool Foam::wallPoints::operator==
461 inline bool Foam::wallPoints::operator!=
466 return !(*
this == rhs);
scalar diff(const triad &A, const triad &B)
Return a quantity of the difference between two triads.
bool updateFace(const polyMesh &, const label thisFacei, const label neighbourCelli, const wallPoints &neighbourInfo, const scalar tol, TrackingData &td)
Influence of neighbouring cell.
bool update(const point &pt, const label index1, const wallPoints &w2, const label index2, const scalar tol, TrackingData &td)
Originating normal.
bool valid(TrackingData &td) const
Changed or contains original (invalid) value.
bool updateCell(const polyMesh &, const label thisCelli, const label neighbourFacei, const wallPoints &neighbourInfo, const scalar tol, TrackingData &td)
Influence of neighbouring face.
wallPoints::trackData td(isBlockedFace, regionToBlockSize)
dimensionedSymmTensor sqr(const dimensionedVector &dv)
const bitSet & isBlockedFace_
Per face whether the face should not be walked through.
const List< scalarList > & regionToBlockSize_
Per surface, per region the blockSize.
#define forAll(list, i)
Loop across all elements in list.
bool equal(const wallPoints &, TrackingData &) const
Test for equality, with TrackingData.
void leaveDomain(const polyMesh &, const polyPatch &, const label patchFacei, const point &faceCentre, TrackingData &td)
Convert any absolute coordinates into relative to (patch)face.
bool sameGeometry(const polyMesh &, const wallPoints &, const scalar, TrackingData &td) const
Check for identical geometrical data (eg, cyclics checking)
DynamicList< FixedList< label, 3 > > surface_
Originating surface,region and topological region.
const vectorField & cellCentres() const
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
label find(const T &val) const
Find index of the first occurrence of the value.
const wordList surface
Standard surface field types (scalar, vector, tensor, etc)
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
wallPoints()
Default construct.
void transform(const polyMesh &, const tensor &, TrackingData &td)
Apply rotation matrix to any coordinates.
For use with FaceCellWave. Determines topological distance to starting faces.
const vectorField & faceCentres() const
vector point
Point is a vector.
const std::string patch
OpenFOAM patch number as a std::string.
Mesh consisting of general polyhedral cells.
DynamicList< scalar > distSqr_
Distance (squared) from cellcenter to origin.
DynamicList< point > origin_
Starting points.
tmp< faMatrix< Type > > operator==(const faMatrix< Type > &, const faMatrix< Type > &)
A patch is a list of labels that address the faces in the global face list.
void enterDomain(const polyMesh &, const polyPatch &, const label patchFacei, const point &faceCentre, TrackingData &td)
Reverse of leaveDomain.
dimensionSet transform(const dimensionSet &ds)
Return the argument; transformations do not change the dimensions.
dimensioned< typename typeOfMag< Type >::type > magSqr(const dimensioned< Type > &dt)