All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PointEdgeWave< Type, TrackingData > Class Template Reference

Wave propagation of information through grid. Every iteration information goes through one layer of edges. More...

Inheritance diagram for PointEdgeWave< Type, TrackingData >:
Collaboration diagram for PointEdgeWave< Type, TrackingData >:

Public Member Functions

 PointEdgeWave (const polyMesh &mesh, const labelList &initialPoints, const List< Type > &initialPointsInfo, UList< Type > &allPointInfo, UList< Type > &allEdgeInfo, const label maxIter, TrackingData &td=dummyTrackData_)
 Construct from mesh, list of changed points with the Type. More...
 
 PointEdgeWave (const polyMesh &mesh, UList< Type > &allPointInfo, UList< Type > &allEdgeInfo, TrackingData &td=dummyTrackData_)
 Construct from mesh. Use setPointInfo and iterate() to do. More...
 
 PointEdgeWave (const PointEdgeWave &)=delete
 Disallow default bitwise copy construction. More...
 
 ~PointEdgeWave ()
 Destructor. More...
 
UList< Type > & allPointInfo () const
 Access allPointInfo. More...
 
UList< Type > & allEdgeInfo () const
 Access allEdgeInfo. More...
 
const TrackingData & data () const
 Additional data to be passed into container. More...
 
label getUnsetEdges () const
 Get number of unvisited edges, i.e. edges that were not (yet) More...
 
label getUnsetPoints () const
 
void setPointInfo (const labelList &changedPoints, const List< Type > &changedPointsInfo)
 Copy initial data into allPointInfo_. More...
 
label pointToEdge ()
 Propagate from point to edge. Returns total number of edges. More...
 
label edgeToPoint ()
 Propagate from edge to point. Returns total number of points. More...
 
label iterate (const label maxIter)
 Iterate until no changes or maxIter reached. Returns actual. More...
 
void operator= (const PointEdgeWave &)=delete
 Disallow default bitwise assignment. More...
 
template<class PatchType >
Foam::label countPatchType () const
 

Static Public Member Functions

static scalar propagationTol ()
 Access to tolerance. More...
 
static void setPropagationTol (const scalar tol)
 Change tolerance. More...
 

Detailed Description

template<class Type, class TrackingData = int>
class Foam::PointEdgeWave< Type, TrackingData >

Wave propagation of information through grid. Every iteration information goes through one layer of edges.

Templated on information that is transferred.

Handles parallel and cyclics. Only parallel reasonably tested. Cyclics hardly tested.

Note: whether to propagate depends on the return value of Type::update which returns true (i.e. propagate) if the value changes by more than a certain tolerance.

Note: parallel is done in two steps:

  1. transfer patch points in offset notation, i.e. every patch point is denoted by a patchface label and an index in this face. Receiving end uses that fact that f[0] is shared and order is reversed.
  2. do all non-local shared points by means of reduce of data on them.

Note: cyclics is with offset in patchface as well. Patch is divided into two sub patches and the point-point addressing is never explicitly calculated but instead use is made of the face-face correspondence. (it probably is more efficient to calculate a point-point correspondence at the start and then reuse this; task to be done)

Source files

Definition at line 85 of file PointEdgeWave.H.

Constructor & Destructor Documentation

◆ PointEdgeWave() [1/3]

PointEdgeWave ( const polyMesh mesh,
const labelList initialPoints,
const List< Type > &  initialPointsInfo,
UList< Type > &  allPointInfo,
UList< Type > &  allEdgeInfo,
const label  maxIter,
TrackingData &  td = dummyTrackData_ 
)

Construct from mesh, list of changed points with the Type.

for these points. Gets work arrays to operate on, one of size number of mesh points, the other number of mesh edges. Iterates until nothing changes or maxIter reached. (maxIter can be 0)

Definition at line 591 of file PointEdgeWave.C.

References Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::Info, and Foam::returnReduce().

Referenced by PointEdgeWave< Type, TrackingData >::countPatchType(), and PointEdgeWave< Type, TrackingData >::setPropagationTol().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PointEdgeWave() [2/3]

PointEdgeWave ( const polyMesh mesh,
UList< Type > &  allPointInfo,
UList< Type > &  allEdgeInfo,
TrackingData &  td = dummyTrackData_ 
)

Construct from mesh. Use setPointInfo and iterate() to do.

actual calculation

Definition at line 664 of file PointEdgeWave.C.

◆ PointEdgeWave() [3/3]

PointEdgeWave ( const PointEdgeWave< Type, TrackingData > &  )
delete

Disallow default bitwise copy construction.

◆ ~PointEdgeWave()

Destructor.

Definition at line 691 of file PointEdgeWave.C.

Referenced by PointEdgeWave< Type, TrackingData >::setPropagationTol().

Here is the caller graph for this function:

Member Function Documentation

◆ propagationTol()

static scalar propagationTol ( )
inlinestatic

Access to tolerance.

Definition at line 216 of file PointEdgeWave.H.

◆ setPropagationTol()

static void setPropagationTol ( const scalar  tol)
inlinestatic

◆ allPointInfo()

UList<Type>& allPointInfo ( ) const
inline

Access allPointInfo.

Definition at line 267 of file PointEdgeWave.H.

Referenced by PointEdgeWave< Type, TrackingData >::setPropagationTol().

Here is the caller graph for this function:

◆ allEdgeInfo()

UList<Type>& allEdgeInfo ( ) const
inline

Access allEdgeInfo.

Definition at line 273 of file PointEdgeWave.H.

Referenced by PointEdgeWave< Type, TrackingData >::setPropagationTol().

Here is the caller graph for this function:

◆ data()

◆ getUnsetEdges()

Foam::label getUnsetEdges ( ) const

Get number of unvisited edges, i.e. edges that were not (yet)

reached from walking across mesh. This can happen from

  • not enough iterations done
  • a disconnected mesh
  • a mesh without walls in it

Definition at line 706 of file PointEdgeWave.C.

References PointEdgeWave< Type, TrackingData >::setPointInfo().

Referenced by PointEdgeWave< Type, TrackingData >::data().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getUnsetPoints()

Foam::label getUnsetPoints ( ) const

Definition at line 699 of file PointEdgeWave.C.

Referenced by PointEdgeWave< Type, TrackingData >::data().

Here is the caller graph for this function:

◆ setPointInfo()

void setPointInfo ( const labelList changedPoints,
const List< Type > &  changedPointsInfo 
)

Copy initial data into allPointInfo_.

Definition at line 715 of file PointEdgeWave.C.

References forAll.

Referenced by PointEdgeWave< Type, TrackingData >::data(), and PointEdgeWave< Type, TrackingData >::getUnsetEdges().

Here is the caller graph for this function:

◆ pointToEdge()

Foam::label pointToEdge ( )

Propagate from point to edge. Returns total number of edges.

(over all processors) changed.

Definition at line 827 of file PointEdgeWave.C.

References Foam::abort(), Foam::FatalError, FatalErrorInFunction, forAll, PointEdgeWave< Type, TrackingData >::iterate(), Foam::nl, and Foam::reduce().

Referenced by PointEdgeWave< Type, TrackingData >::data().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ edgeToPoint()

Foam::label edgeToPoint ( )

Propagate from edge to point. Returns total number of points.

(over all processors) changed.

Definition at line 751 of file PointEdgeWave.C.

References Foam::abort(), Foam::e, Foam::FatalError, FatalErrorInFunction, forAll, Foam::nl, UPstream::parRun(), and Foam::reduce().

Referenced by PointEdgeWave< Type, TrackingData >::data().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ iterate()

Foam::label iterate ( const label  maxIter)

Iterate until no changes or maxIter reached. Returns actual.

number of iterations.

Definition at line 896 of file PointEdgeWave.C.

References Foam::endl(), Foam::Info, Foam::nl, nPoints, UPstream::parRun(), and Foam::returnReduce().

Referenced by PointEdgeWave< Type, TrackingData >::data(), PointEdgeWave< Type, TrackingData >::pointToEdge(), and medialAxisMeshMover::~medialAxisMeshMover().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator=()

void operator= ( const PointEdgeWave< Type, TrackingData > &  )
delete

Disallow default bitwise assignment.

Referenced by PointEdgeWave< Type, TrackingData >::data().

Here is the caller graph for this function:

◆ countPatchType()


The documentation for this class was generated from the following files: