33template<
class TrackingData>
45 const scalar dist2 =
magSqr(pt -
w2.origin_[index2]);
116template<
class TrackingData>
124template<
class TrackingData>
138template<
class TrackingData>
143 const label patchFacei,
144 const point& faceCentre,
148 for (
auto& o : origin_)
156template<
class TrackingData>
164 for (
auto& o : origin_)
172template<
class TrackingData>
176 const polyPatch& patch,
177 const label patchFacei,
178 const point& faceCentre,
183 for (
auto& o : origin_)
191template<
class TrackingData>
194 const polyMesh&
mesh,
195 const label thisCelli,
196 const label neighbourFacei,
197 const wallPoints& neighbourInfo,
202 const point& cc =
mesh.cellCentres()[thisCelli];
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)
273template<
class TrackingData>
277 const label thisFacei,
278 const label neighbourCelli,
285 bool hasChanged =
false;
287 if (!
td.isBlockedFace_[thisFacei])
289 const point& fc =
mesh.faceCentres()[thisFacei];
298 bool propagate =
false;
308 const scalar blockSize =
309 td.regionToBlockSize_[nbrSurface[0]][nbrSurface[1]];
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)
355template<
class TrackingData>
359 const label thisFacei,
366 bool hasChanged =
false;
368 if (!
td.isBlockedFace_[thisFacei])
370 const point& fc =
mesh.faceCentres()[thisFacei];
379 bool propagate =
false;
389 const scalar blockSize =
390 td.regionToBlockSize_[nbrSurface[0]][nbrSurface[1]];
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)
435template<
class TrackingData>
438 const wallPoints&
rhs,
446template<
class TrackingData>
483inline bool Foam::wallPoints::operator==
485 const wallPoints&
rhs
496inline bool Foam::wallPoints::operator!=
501 return !(*
this ==
rhs);
A 1D vector of objects of type <T> with a fixed length <N>.
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
Mesh consisting of general polyhedral cells.
A patch is a list of labels that address the faces in the global face list.
Tensor of scalars, i.e. Tensor<scalar>.
const List< scalarList > & regionToBlockSize_
Per surface, per region the blockSize.
For use with FaceCellWave. Determines topological distance to starting faces.
DynamicList< scalar > distSqr_
Distance (squared) from cellcenter to origin.
void transform(const polyMesh &, const tensor &, TrackingData &td)
Apply rotation matrix to any coordinates.
bool equal(const wallPoints &, TrackingData &) const
Test for equality, with TrackingData.
bool updateCell(const polyMesh &, const label thisCelli, const label neighbourFacei, const wallPoints &neighbourInfo, const scalar tol, TrackingData &td)
Influence of neighbouring face.
const List< scalar > & distSqr() const
void enterDomain(const polyMesh &, const polyPatch &, const label patchFacei, const point &faceCentre, TrackingData &td)
Reverse of leaveDomain.
const List< point > & origin() const
wallPoints()
Default construct.
bool sameGeometry(const polyMesh &, const wallPoints &, const scalar, TrackingData &td) const
Check for identical geometrical data (eg, cyclics checking).
const List< FixedList< label, 3 > > & surface() const
bool valid(TrackingData &td) const
Changed or contains original (invalid) value.
bool updateFace(const polyMesh &, const label thisFacei, const label neighbourCelli, const wallPoints &neighbourInfo, const scalar tol, TrackingData &td)
Influence of neighbouring cell.
DynamicList< FixedList< label, 3 > > surface_
Originating surface,region and topological region.
DynamicList< point > origin_
Starting points.
void leaveDomain(const polyMesh &, const polyPatch &, const label patchFacei, const point &faceCentre, TrackingData &td)
Convert any absolute coordinates into relative to (patch)face.
bool update(const point &pt, const label index1, const wallPoints &w2, const label index2, const scalar tol, TrackingData &td)
Originating normal.
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...
wallPoints::trackData td(isBlockedFace, regionToBlockSize)
dimensionedSymmTensor sqr(const dimensionedVector &dv)
refinementData transform(const tensor &, const refinementData val)
No-op rotational transform for base types.
tmp< faMatrix< Type > > operator==(const faMatrix< Type > &, const faMatrix< Type > &)
scalar diff(const triad &A, const triad &B)
Return a quantity of the difference between two triads.
vector point
Point is a vector.
void rhs(fvMatrix< typename Expr::value_type > &m, const Expr &expression)
dimensioned< typename typeOfMag< Type >::type > magSqr(const dimensioned< Type > &dt)
#define forAll(list, i)
Loop across all elements in list.