Class to generate coupling geometry between two primitive patches. More...
Public Member Functions | |
TypeName ("patchToPatch") | |
Runtime type information. More... | |
declareRunTimeSelectionTable (autoPtr, patchToPatch, bool,(const bool reverse),(reverse)) | |
Declare runtime constructor selection table. More... | |
patchToPatch (const bool reverse) | |
Construct from components. More... | |
patchToPatch (const patchToPatch &)=delete | |
Disallow default bitwise copy construction. More... | |
virtual | ~patchToPatch () |
Destructor. More... | |
bool | reverse () const |
Flag to indicate that the two patches are co-directional and. More... | |
label | singleProcess () const |
Index of the processor holding all faces of the patchToPatch,. More... | |
bool | isSingleProcess () const |
Is this intersection on a single process? More... | |
PackedBoolList | srcCoupled () const |
Return a list indicating which source faces are coupled. More... | |
PackedBoolList | tgtCoupled () const |
Return a list indicating which target faces are coupled. More... | |
List< List< remote > > | srcTgtProcFaces () const |
For each source face, the coupled target procs and faces. More... | |
List< List< remote > > | tgtSrcProcFaces () const |
For each target face, the coupled source procs and faces. More... | |
template<class Type > | |
tmp< Field< Type > > | srcToTgt (const Field< Type > &srcFld) const |
Interpolate a source patch field to the target with no left. More... | |
template<class Type > | |
tmp< Field< Type > > | srcToTgt (const Field< Type > &srcFld, const Field< Type > &leftOverTgtFld) const |
Interpolate a source patch field to the target with left over. More... | |
template<class Type > | |
tmp< Field< Type > > | tgtToSrc (const Field< Type > &tgtFld) const |
Interpolate a target patch field to the source with no left. More... | |
template<class Type > | |
tmp< Field< Type > > | tgtToSrc (const Field< Type > &tgtFld, const Field< Type > &leftOverSrcFld) const |
Interpolate a target patch field to the source with left. More... | |
void | update (const primitiveOldTimePatch &srcPatch, const vectorField &srcPointNormals, const vectorField &srcPointNormals0, const primitiveOldTimePatch &tgtPatch, const transformer &tgtToSrc=NullObjectRef< transformer >()) |
Update addressing and weights for the given patches. More... | |
void | update (const primitivePatch &srcPatch, const vectorField &srcPointNormals, const primitivePatch &tgtPatch, const transformer &tgtToSrc=NullObjectRef< transformer >()) |
Update addressing and weights for the given patches. More... | |
void | operator= (const patchToPatch &)=delete |
Disallow default bitwise assignment. More... | |
template<class Type > | |
Foam::tmp< Foam::Field< Type > > | srcToTgt (const Field< Type > &srcFld) const |
template<class Type > | |
Foam::tmp< Foam::Field< Type > > | srcToTgt (const Field< Type > &srcFld, const Field< Type > &leftOverTgtFld) const |
template<class Type > | |
Foam::tmp< Foam::Field< Type > > | tgtToSrc (const Field< Type > &tgtFld) const |
template<class Type > | |
Foam::tmp< Foam::Field< Type > > | tgtToSrc (const Field< Type > &tgtFld, const Field< Type > &leftOverSrcFld) const |
Static Public Member Functions | |
static autoPtr< patchToPatch > | New (const word &patchToPatchType, const bool reverse) |
Select from name. More... | |
Protected Member Functions | |
virtual treeBoundBox | srcBox (const face &srcFace, const pointField &srcPoints, const vectorField &srcPointNormals) const =0 |
Get the bound box for a source face. More... | |
treeBoundBox | srcBox (const primitiveOldTimePatch &srcPatch, const vectorField &srcPointNormals, const vectorField &srcPointNormals0, const label srcFacei) const |
Get the bound box for a source face. More... | |
treeBoundBox | srcBox (const primitiveOldTimePatch &srcPatch, const vectorField &srcPointNormals, const vectorField &srcPointNormals0) const |
Get the bound box for the source patch. More... | |
treeBoundBox | tgtBox (const primitiveOldTimePatch &tgtPatch, const label tgtFacei) const |
Get the bound box for a target face. More... | |
treeBoundBox | tgtBox (const primitiveOldTimePatch &tgtPatch) const |
Get the bound box for the target patch. More... | |
virtual bool | intersectFaces (const primitiveOldTimePatch &srcPatch, const vectorField &srcPointNormals, const vectorField &srcPointNormals0, const primitiveOldTimePatch &tgtPatch, const label srcFacei, const label tgtFacei)=0 |
Intersect two faces. More... | |
bool | findOrIntersectFaces (const primitiveOldTimePatch &srcPatch, const vectorField &srcPointNormals, const vectorField &srcPointNormals0, const primitiveOldTimePatch &tgtPatch, const label srcFacei, const label tgtFacei) |
Intersect two faces. More... | |
label | intersectPatchQueue (const primitiveOldTimePatch &srcPatch, const vectorField &srcPointNormals, const vectorField &srcPointNormals0, const primitiveOldTimePatch &tgtPatch, const bool isSrc, const DynamicList< labelPair > &queue, labelList &faceComplete, DynamicList< labelPair > &otherQueue, const labelList &otherFaceComplete, boolList &otherFaceQueued, boolList &otherFaceVisited) |
Intersect a queue of source-target face pairs. Update completion. More... | |
void | intersectPatches (const primitiveOldTimePatch &srcPatch, const vectorField &srcPointNormals, const vectorField &srcPointNormals0, const primitiveOldTimePatch &tgtPatch) |
Intersect the patches. More... | |
labelListList | tgtPatchSendFaces (const primitiveOldTimePatch &srcPatch, const vectorField &srcPointNormals, const vectorField &srcPointNormals0, const primitiveOldTimePatch &tgtPatch) const |
Determine which target faces need to be sent to the source. More... | |
virtual void | initialise (const primitiveOldTimePatch &srcPatch, const vectorField &srcPointNormals, const vectorField &srcPointNormals0, const primitiveOldTimePatch &tgtPatch) |
Initialisation. More... | |
virtual labelList | finaliseLocal (const primitiveOldTimePatch &srcPatch, const vectorField &srcPointNormals, const vectorField &srcPointNormals0, const primitiveOldTimePatch &tgtPatch) |
Finalise the intersection locally. Trims the local target patch. More... | |
virtual void | distributeSrc (const primitiveOldTimePatch &srcPatch) |
Distribute the source patch so that any information needed by. More... | |
virtual void | rDistributeTgt (const primitiveOldTimePatch &tgtPatch) |
Send data that resulted from an intersection between the source. More... | |
virtual label | finalise (const primitiveOldTimePatch &srcPatch, const vectorField &srcPointNormals, const vectorField &srcPointNormals0, const primitiveOldTimePatch &tgtPatch, const transformer &tgtToSrc) |
Finalising. More... | |
virtual tmpNrc< List< DynamicList< scalar > > > | srcWeights () const =0 |
For each source face, the coupled target weights. More... | |
virtual tmpNrc< List< DynamicList< scalar > > > | tgtWeights () const =0 |
For each target face, the coupled source weights. More... | |
Static Protected Member Functions | |
static List< remote > | distributePatch (const distributionMap &map, const primitiveOldTimePatch &patch, autoPtr< PrimitiveOldTimePatch< faceList, pointField >> &localPatchPtr) |
Distribute a patch given its distribution map. More... | |
Protected Attributes | |
const bool | reverse_ |
Flag to indicate that the two patches are co-directional and. More... | |
label | singleProcess_ |
Index of the processor holding all faces of the patchToPatch, or -1. More... | |
List< DynamicList< label > > | srcLocalTgtFaces_ |
For each source face, the coupled local target faces. More... | |
List< DynamicList< label > > | tgtLocalSrcFaces_ |
For each target face, the coupled local source faces. More... | |
autoPtr< distributionMap > | srcMapPtr_ |
Map from source patch faces to target-local source patch faces. More... | |
autoPtr< distributionMap > | tgtMapPtr_ |
Map from target patch faces to source-local target patch faces. More... | |
autoPtr< List< remote > > | localSrcProcFacesPtr_ |
When running in parallel, a map from local source face index to. More... | |
autoPtr< List< remote > > | localTgtProcFacesPtr_ |
When running in parallel, a map from local target face index to. More... | |
Class to generate coupling geometry between two primitive patches.
Definition at line 55 of file patchToPatch.H.
patchToPatch | ( | const bool | reverse | ) |
Construct from components.
Definition at line 764 of file patchToPatch.C.
|
delete |
Disallow default bitwise copy construction.
|
virtual |
Destructor.
Definition at line 779 of file patchToPatch.C.
|
protectedpure virtual |
Get the bound box for a source face.
Implemented in nearby.
Referenced by patchToPatch::srcBox(), and patchToPatch::tgtPatchSendFaces().
|
protected |
Get the bound box for a source face.
Definition at line 96 of file patchToPatch.C.
References Foam::combine(), PrimitiveOldTimePatch< FaceList, PointField >::has0(), PrimitivePatch< FaceList, PointField >::localFaces(), PrimitivePatch< FaceList, PointField >::localPoints(), and patchToPatch::srcBox().
|
protected |
Get the bound box for the source patch.
Definition at line 118 of file patchToPatch.C.
References Foam::combine(), forAll, boundBox::inflate(), and treeBoundBox::invertedBox.
|
protected |
Get the bound box for a target face.
Definition at line 143 of file patchToPatch.C.
References Foam::combine(), PrimitiveOldTimePatch< FaceList, PointField >::has0(), PrimitivePatch< FaceList, PointField >::localFaces(), and PrimitivePatch< FaceList, PointField >::localPoints().
Referenced by patchToPatch::tgtPatchSendFaces().
|
protected |
Get the bound box for the target patch.
Definition at line 163 of file patchToPatch.C.
References Foam::combine(), forAll, boundBox::inflate(), and treeBoundBox::invertedBox.
|
protectedpure virtual |
|
protected |
|
protected |
Intersect a queue of source-target face pairs. Update completion.
lists and form a new queue of target-source face pairs.
Definition at line 231 of file patchToPatch.C.
References DynamicList< T, SizeInc, SizeMult, SizeDiv >::append(), List< T >::append(), PrimitivePatch< FaceList, PointField >::edgeFaces(), PrimitivePatch< FaceList, PointField >::faceEdges(), UList< T >::first(), forAll, PrimitivePatch< FaceList, PointField >::localFaces(), Foam::max(), PrimitivePatch< FaceList, PointField >::pointFaces(), List< T >::size(), and DynamicList< T, SizeInc, SizeMult, SizeDiv >::transfer().
|
protected |
Intersect the patches.
Definition at line 373 of file patchToPatch.C.
References DynamicList< T, SizeInc, SizeMult, SizeDiv >::append(), DynamicList< T, SizeInc, SizeMult, SizeDiv >::clear(), Foam::decrIndent(), Foam::e, UList< T >::empty(), Foam::endl(), treeBoundBox::extend(), PrimitivePatch< FaceList, PointField >::faceCentres(), Foam::findNotIndex(), Foam::first(), forAll, Foam::incrIndent(), Foam::indent(), Foam::Info, Foam::ln(), PrimitivePatch< FaceList, PointField >::localFaces(), PrimitivePatch< FaceList, PointField >::localPoints(), Foam::name(), List< T >::size(), and Foam::vtkWritePolyData::write().
|
protected |
Determine which target faces need to be sent to the source.
This is done before intersection. Bound boxes are used to estimate what faces will intersect.
Definition at line 32 of file patchToPatchParallelOps.C.
References List< T >::append(), forAll, Pstream::gatherList(), UPstream::myProcNo(), UPstream::nProcs(), Pstream::scatterList(), patchToPatch::srcBox(), patchToPatch::tgtBox(), and List< T >::transfer().
|
staticprotected |
Distribute a patch given its distribution map.
Definition at line 90 of file patchToPatchParallelOps.C.
References distributionMapBase::constructMap(), PstreamBuffers::finishedSends(), forAll, PrimitiveOldTimePatch< FaceList, PointField >::has0(), PrimitivePatch< FaceList, PointField >::localFaces(), PrimitivePatch< FaceList, PointField >::localPoints(), PrimitiveOldTimePatch< FaceList, PointField >::localPoints0(), UPstream::myProcNo(), UPstream::nonBlocking, UPstream::nProcs(), PrimitivePatch< FaceList, PointField >::points(), PrimitiveOldTimePatch< FaceList, PointField >::points0(), Field< Type >::reset(), List< T >::setSize(), List< T >::size(), and distributionMapBase::subMap().
|
protectedvirtual |
Initialisation.
Reimplemented in nearest, and nearby.
Definition at line 639 of file patchToPatch.C.
References forAll.
Referenced by nearby::initialise().
|
protectedvirtual |
Finalise the intersection locally. Trims the local target patch.
so that only parts that actually intersect the source remain. Returns new-to-old map for trimming target-associated data.
Reimplemented in nearest.
Definition at line 661 of file patchToPatch.C.
References forAll, and Foam::patchToPatchTools::trimDistributionMap().
Referenced by nearest::finaliseLocal().
|
protectedvirtual |
Distribute the source patch so that any information needed by.
the target is locally available
Definition at line 709 of file patchToPatch.C.
References Foam::patchToPatchTools::distributeAddressing().
|
protectedvirtual |
Send data that resulted from an intersection between the source.
patch and a distributed source-local-target patch back to the original target processes
Reimplemented in nearest.
Definition at line 724 of file patchToPatch.C.
References Foam::patchToPatchTools::rDistributeTgtAddressing().
Referenced by nearest::rDistributeTgt().
|
protectedvirtual |
Finalising.
Reimplemented in nearest.
Definition at line 736 of file patchToPatch.C.
References forAll, and Foam::reduce().
Referenced by nearest::finalise().
|
protectedpure virtual |
For each source face, the coupled target weights.
Implemented in nearest.
|
protectedpure virtual |
For each target face, the coupled source weights.
Implemented in nearest.
Referenced by patchToPatch::srcToTgt().
TypeName | ( | "patchToPatch" | ) |
Runtime type information.
declareRunTimeSelectionTable | ( | autoPtr | , |
patchToPatch | , | ||
bool | , | ||
(const bool reverse) | , | ||
(reverse) | |||
) |
Declare runtime constructor selection table.
|
static |
Select from name.
Definition at line 785 of file patchToPatch.C.
References Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, and Foam::reverse().
|
inline |
Flag to indicate that the two patches are co-directional and.
that the orientation of one should therefore be reversed
Definition at line 31 of file patchToPatchI.H.
References patchToPatch::reverse_.
|
inline |
Index of the processor holding all faces of the patchToPatch,.
or -1 if spread across multiple processors
Definition at line 37 of file patchToPatchI.H.
|
inline |
Is this intersection on a single process?
Definition at line 43 of file patchToPatchI.H.
Foam::PackedBoolList srcCoupled | ( | ) | const |
Return a list indicating which source faces are coupled.
Definition at line 810 of file patchToPatch.C.
References PackedList< nBits >::empty(), and forAll.
Foam::PackedBoolList tgtCoupled | ( | ) | const |
Return a list indicating which target faces are coupled.
Definition at line 821 of file patchToPatch.C.
References PackedList< nBits >::empty(), and forAll.
Foam::List< Foam::List< Foam::remote > > srcTgtProcFaces | ( | ) | const |
For each source face, the coupled target procs and faces.
Definition at line 833 of file patchToPatch.C.
References Foam::patchToPatchTools::localToRemote().
Foam::List< Foam::List< Foam::remote > > tgtSrcProcFaces | ( | ) | const |
For each target face, the coupled source procs and faces.
Definition at line 847 of file patchToPatch.C.
References Foam::patchToPatchTools::localToRemote().
Interpolate a source patch field to the target with no left.
over values specified. If the interpolation weight sum is less than one for a face then they will be normalised. If the interpolation weight sum is zero for a face then that face's value will be NaN.
tmp<Field<Type> > srcToTgt | ( | const Field< Type > & | srcFld, |
const Field< Type > & | leftOverTgtFld | ||
) | const |
Interpolate a source patch field to the target with left over.
values specified. If the interpolation weight sum is less than one for a face then the average will include the left over value multiplied by one minus the weight sum.
Interpolate a target patch field to the source with no left.
over values specified. As the corresponding srcToTgt.
tmp<Field<Type> > tgtToSrc | ( | const Field< Type > & | tgtFld, |
const Field< Type > & | leftOverSrcFld | ||
) | const |
Interpolate a target patch field to the source with left.
over values specified. As the corresponding srcToTgt.
void update | ( | const primitiveOldTimePatch & | srcPatch, |
const vectorField & | srcPointNormals, | ||
const vectorField & | srcPointNormals0, | ||
const primitiveOldTimePatch & | tgtPatch, | ||
const transformer & | tgtToSrc = NullObjectRef<transformer>() |
||
) |
Update addressing and weights for the given patches.
Definition at line 860 of file patchToPatch.C.
References Foam::patchToPatchTools::constructDistributionMap(), cpuTime::cpuTimeIncrement(), Foam::decrIndent(), Foam::endl(), PrimitiveOldTimePatch< FaceList, PointField >::has0(), Foam::incrIndent(), Foam::indent(), Foam::Info, Foam::isNull(), PrimitivePatch< FaceList, PointField >::localFaces(), PrimitivePatch< FaceList, PointField >::localPoints(), PrimitiveOldTimePatch< FaceList, PointField >::localPoints0(), treeBoundBox::overlaps(), points, Foam::patchToPatchTools::procSendIndices(), tmpNrc< T >::ref(), autoPtr< T >::reset(), Foam::returnReduce(), Foam::patchToPatchTools::singleProcess(), and transformer::transformPosition().
void update | ( | const primitivePatch & | srcPatch, |
const vectorField & | srcPointNormals, | ||
const primitivePatch & | tgtPatch, | ||
const transformer & | tgtToSrc = NullObjectRef<transformer>() |
||
) |
Update addressing and weights for the given patches.
Definition at line 1067 of file patchToPatch.C.
|
delete |
Disallow default bitwise assignment.
Foam::tmp<Foam::Field<Type> > srcToTgt | ( | const Field< Type > & | srcFld | ) | const |
Definition at line 33 of file patchToPatchTemplates.C.
References Foam::patchToPatchTools::interpolate(), patchToPatch::srcMapPtr_, patchToPatch::tgtLocalSrcFaces_, and patchToPatch::tgtWeights().
Foam::tmp<Foam::Field<Type> > srcToTgt | ( | const Field< Type > & | srcFld, |
const Field< Type > & | leftOverTgtFld | ||
) | const |
Definition at line 47 of file patchToPatchTemplates.C.
References Foam::patchToPatchTools::interpolate().
Foam::tmp<Foam::Field<Type> > tgtToSrc | ( | const Field< Type > & | tgtFld | ) | const |
Definition at line 67 of file patchToPatchTemplates.C.
References Foam::patchToPatchTools::interpolate().
Foam::tmp<Foam::Field<Type> > tgtToSrc | ( | const Field< Type > & | tgtFld, |
const Field< Type > & | leftOverSrcFld | ||
) | const |
Definition at line 81 of file patchToPatchTemplates.C.
References Foam::patchToPatchTools::interpolate().
|
protected |
Flag to indicate that the two patches are co-directional and.
that the orientation of one should therefore be reversed
Definition at line 63 of file patchToPatch.H.
Referenced by patchToPatch::reverse().
|
protected |
Index of the processor holding all faces of the patchToPatch, or -1.
if spread across multiple processors
Definition at line 67 of file patchToPatch.H.
|
protected |
For each source face, the coupled local target faces.
Definition at line 70 of file patchToPatch.H.
Referenced by nearest::intersectFaces().
|
protected |
For each target face, the coupled local source faces.
Definition at line 73 of file patchToPatch.H.
Referenced by nearest::intersectFaces(), and patchToPatch::srcToTgt().
|
protected |
Map from source patch faces to target-local source patch faces.
Definition at line 76 of file patchToPatch.H.
Referenced by patchToPatch::srcToTgt().
|
protected |
Map from target patch faces to source-local target patch faces.
Definition at line 79 of file patchToPatch.H.
When running in parallel, a map from local source face index to.
source processor and face index
Definition at line 83 of file patchToPatch.H.
When running in parallel, a map from local target face index to.
target processor and face index
Definition at line 87 of file patchToPatch.H.