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>
446 template<
class TrackingData>
483 inline bool Foam::wallPoints::operator==
485 const wallPoints&
rhs 489 surface_ ==
rhs.surface_
490 && distSqr_ ==
rhs.distSqr_
491 && origin_ ==
rhs.origin_;
496 inline bool Foam::wallPoints::operator!=
501 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.
void rhs(fvMatrix< typename Expr::value_type > &m, const Expr &expression)
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.
bool interpolate(const polyMesh &, const point &pt, const label i0, const wallPoints &f0, const label i1, const wallPoints &f1, const scalar weight, const scalar tol, TrackingData &td)
Interpolate between two values (lerp). Returns true if causes changes. Not sure if needs to be specia...
const wordList surface
Standard surface field types (scalar, vector, tensor, etc)
refinementData transform(const tensor &, const refinementData val)
No-op rotational transform for base types.
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.
dimensioned< typename typeOfMag< Type >::type > magSqr(const dimensioned< Type > &dt)