Wave propagation of information through grid. Every iteration information goes through one layer of edges. More...
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 () | |
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... | |
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... | |
Private Member Functions | |
void | leaveDomain (const polyPatch &, const List< label > &patchPointLabels, List< Type > &pointInfo) const |
Adapt pointInfo for leaving domain. More... | |
void | enterDomain (const polyPatch &, const List< label > &patchPointLabels, List< Type > &pointInfo) const |
Adapt pointInfo for entering domain. More... | |
void | transform (const polyPatch &patch, const tensorField &rotTensor, List< Type > &pointInfo) const |
Transform. Implementation referred to Type. More... | |
bool | updatePoint (const label pointI, const label neighbourEdgeI, const Type &neighbourInfo, Type &pointInfo) |
Updates pointInfo with information from neighbour. Updates all. More... | |
bool | updatePoint (const label pointI, const Type &neighbourInfo, Type &pointInfo) |
Updates pointInfo with information from same point. Updates all. More... | |
bool | updateEdge (const label edgeI, const label neighbourPointI, const Type &neighbourInfo, Type &edgeInfo) |
Updates edgeInfo with information from neighbour. Updates all. More... | |
template<class PatchType > | |
label | countPatchType () const |
Has patches of certain type? More... | |
void | handleProcPatches () |
Merge data from across processor boundaries. More... | |
void | handleCyclicPatches () |
Merge data from across cyclic boundaries. More... | |
label | handleCollocatedPoints () |
Explicitly sync all collocated points. More... | |
PointEdgeWave (const PointEdgeWave &) | |
Disallow default bitwise copy construct. More... | |
void | operator= (const PointEdgeWave &) |
Disallow default bitwise assignment. More... | |
Private Attributes | |
const polyMesh & | mesh_ |
Reference to mesh. More... | |
UList< Type > & | allPointInfo_ |
Wall information for all points. More... | |
UList< Type > & | allEdgeInfo_ |
Information on all mesh edges. More... | |
TrackingData & | td_ |
Additional data to be passed into container. More... | |
boolList | changedPoint_ |
Has point changed. More... | |
labelList | changedPoints_ |
List of changed points. More... | |
label | nChangedPoints_ |
Number of changed points. More... | |
boolList | changedEdge_ |
Edges that have changed. More... | |
labelList | changedEdges_ |
label | nChangedEdges_ |
label | nCyclicPatches_ |
Number of cyclic patches. More... | |
label | nEvals_ |
Number of evaluations. More... | |
label | nUnvisitedPoints_ |
Number of unvisited edges/points. More... | |
label | nUnvisitedEdges_ |
Static Private Attributes | |
static scalar | propagationTol_ = 0.01 |
Relative tolerance. Stop propagation if relative changes. More... | |
static int | dummyTrackData_ = 12345 |
Used as default trackdata value to satisfy default template. More... | |
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:
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)
Definition at line 85 of file PointEdgeWave.H.
|
private |
Disallow default bitwise copy construct.
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 609 of file PointEdgeWave.C.
References Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::Info, and Foam::returnReduce().
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 682 of file PointEdgeWave.C.
Destructor.
Definition at line 709 of file PointEdgeWave.C.
|
private |
Adapt pointInfo for leaving domain.
Definition at line 76 of file PointEdgeWave.C.
References forAll, PrimitivePatch< Face, FaceList, PointField, PointType >::meshPoints(), and PrimitivePatch< Face, FaceList, PointField, PointType >::points().
|
private |
Adapt pointInfo for entering domain.
Definition at line 98 of file PointEdgeWave.C.
References forAll, PrimitivePatch< Face, FaceList, PointField, PointType >::meshPoints(), and PrimitivePatch< Face, FaceList, PointField, PointType >::points().
|
private |
Transform. Implementation referred to Type.
Definition at line 120 of file PointEdgeWave.C.
References Foam::abort(), Foam::FatalError, FatalErrorInFunction, forAll, patchIdentifier::name(), and T.
|
private |
Updates pointInfo with information from neighbour. Updates all.
statistics.
Definition at line 158 of file PointEdgeWave.C.
|
private |
Updates pointInfo with information from same point. Updates all.
statistics.
Definition at line 205 of file PointEdgeWave.C.
|
private |
Updates edgeInfo with information from neighbour. Updates all.
statistics.
Definition at line 250 of file PointEdgeWave.C.
|
private |
Has patches of certain type?
|
private |
Merge data from across processor boundaries.
Definition at line 310 of file PointEdgeWave.C.
References DynamicList::append(), DynamicList::clear(), Foam::equal(), PstreamBuffers::finishedSends(), forAll, coupledPolyPatch::forwardT(), PrimitivePatch< Face, FaceList, PointField, PointType >::meshPoints(), processorPolyPatch::neighbPoints(), processorPolyPatch::neighbProcNo(), PrimitivePatch< Face, FaceList, PointField, PointType >::nPoints(), coupledPolyPatch::parallel(), DynamicList::reserve(), and Foam::transform().
|
private |
Merge data from across cyclic boundaries.
Definition at line 423 of file PointEdgeWave.C.
References DynamicList::append(), polyPatch::boundaryMesh(), DynamicList::clear(), cyclicPolyPatch::coupledPoints(), Foam::equal(), forAll, coupledPolyPatch::forwardT(), PrimitivePatch< Face, FaceList, PointField, PointType >::meshPoints(), cyclicPolyPatch::neighbPatch(), PrimitivePatch< Face, FaceList, PointField, PointType >::nPoints(), coupledPolyPatch::parallel(), DynamicList::reserve(), and Foam::transform().
|
private |
Explicitly sync all collocated points.
Definition at line 514 of file PointEdgeWave.C.
References mapDistributeBase::constructSize(), globalMeshData::coupledPatch(), mapDistribute::distribute(), forAll, globalMeshData::globalPointSlaves(), globalMeshData::globalPointSlavesMap(), PrimitivePatch< Face, FaceList, PointField, PointType >::meshPoints(), Foam::reduce(), mapDistribute::reverseDistribute(), and List::size().
|
private |
Disallow default bitwise assignment.
|
inlinestatic |
Access to tolerance.
Definition at line 223 of file PointEdgeWave.H.
References PointEdgeWave< Type, TrackingData >::propagationTol_.
|
inlinestatic |
Change tolerance.
Definition at line 229 of file PointEdgeWave.H.
References PointEdgeWave< Type, TrackingData >::propagationTol_.
|
inline |
Access allPointInfo.
Definition at line 271 of file PointEdgeWave.H.
References PointEdgeWave< Type, TrackingData >::allPointInfo_.
|
inline |
Access allEdgeInfo.
Definition at line 277 of file PointEdgeWave.H.
References PointEdgeWave< Type, TrackingData >::allEdgeInfo_.
|
inline |
Additional data to be passed into container.
Definition at line 283 of file PointEdgeWave.H.
References PointEdgeWave< Type, TrackingData >::td_.
Referenced by patchCorrectedInterpolation::propagateDataFromPatchGroup().
Foam::label getUnsetEdges |
Get number of unvisited edges, i.e. edges that were not (yet)
reached from walking across mesh. This can happen from
Definition at line 724 of file PointEdgeWave.C.
Foam::label getUnsetPoints |
Definition at line 717 of file PointEdgeWave.C.
Referenced by medialAxisMeshMover::update().
Copy initial data into allPointInfo_.
Definition at line 733 of file PointEdgeWave.C.
References forAll.
Foam::label pointToEdge |
Propagate from point to edge. Returns total number of edges.
(over all processors) changed.
Definition at line 845 of file PointEdgeWave.C.
References Foam::abort(), Foam::FatalError, FatalErrorInFunction, forAll, Foam::nl, and Foam::reduce().
Foam::label edgeToPoint |
Propagate from edge to point. Returns total number of points.
(over all processors) changed.
Definition at line 769 of file PointEdgeWave.C.
References Foam::abort(), Foam::constant::electromagnetic::e, Foam::FatalError, FatalErrorInFunction, forAll, Foam::nl, and Foam::reduce().
Foam::label iterate | ( | const label | maxIter | ) |
Iterate until no changes or maxIter reached. Returns actual.
number of iterations.
Definition at line 914 of file PointEdgeWave.C.
References Foam::endl(), Foam::Info, Foam::nl, nPoints, and Foam::returnReduce().
Referenced by medialAxisMeshMover::calculateDisplacement(), and medialAxisMeshMover::update().
Foam::label countPatchType | ( | ) | const |
Definition at line 293 of file PointEdgeWave.C.
|
staticprivate |
Relative tolerance. Stop propagation if relative changes.
less than this tolerance (responsability for checking this is up to Type implementation)
Definition at line 94 of file PointEdgeWave.H.
Referenced by PointEdgeWave< Type, TrackingData >::propagationTol(), and PointEdgeWave< Type, TrackingData >::setPropagationTol().
|
staticprivate |
Used as default trackdata value to satisfy default template.
argument.
Definition at line 98 of file PointEdgeWave.H.
|
private |
Reference to mesh.
Definition at line 104 of file PointEdgeWave.H.
|
private |
Wall information for all points.
Definition at line 107 of file PointEdgeWave.H.
Referenced by PointEdgeWave< Type, TrackingData >::allPointInfo().
|
private |
Information on all mesh edges.
Definition at line 110 of file PointEdgeWave.H.
Referenced by PointEdgeWave< Type, TrackingData >::allEdgeInfo().
|
private |
Additional data to be passed into container.
Definition at line 113 of file PointEdgeWave.H.
Referenced by PointEdgeWave< Type, TrackingData >::data().
|
private |
Has point changed.
Definition at line 116 of file PointEdgeWave.H.
|
private |
List of changed points.
Definition at line 119 of file PointEdgeWave.H.
|
private |
Number of changed points.
Definition at line 122 of file PointEdgeWave.H.
|
private |
Edges that have changed.
Definition at line 125 of file PointEdgeWave.H.
|
private |
Definition at line 126 of file PointEdgeWave.H.
|
private |
Definition at line 127 of file PointEdgeWave.H.
|
private |
Number of cyclic patches.
Definition at line 130 of file PointEdgeWave.H.
|
private |
Number of evaluations.
Definition at line 133 of file PointEdgeWave.H.
|
private |
Number of unvisited edges/points.
Definition at line 136 of file PointEdgeWave.H.
|
private |
Definition at line 137 of file PointEdgeWave.H.
Copyright © 2011-2018 OpenFOAM | OPENFOAM® is a registered trademark of OpenCFD Ltd.