127 #ifndef mapDistribute_H 128 #define mapDistribute_H 146 class PstreamBuffers;
147 class globalIndexAndTransform;
158 label constructSize_;
182 static void checkReceivedSize
185 const label expectedSize,
186 const label receivedSize
189 void calcCompactAddressing
195 void calcCompactAddressing
202 void exchangeAddressing
210 void exchangeAddressing
222 void applyDummyTransforms(
List<T>& field)
const;
224 template<
class T,
class TransformOp>
229 const TransformOp& top
234 void applyDummyInverseTransforms(
List<T>& field)
const;
236 template<
class T,
class TransformOp>
237 void applyInverseTransforms
241 const TransformOp& top
262 const tensor T(forward ? vt.R() : vt.R().T());
291 template<
class Type,
template<
class>
class Container>
317 fld = vt.transformPosition(pfld);
321 fld = vt.invTransformPosition(pfld);
341 template<
template<
class>
class Container>
353 forAllIter(
typename Container<point>, map, iter)
382 const label constructSize,
464 return constructSize_;
470 return constructSize_;
488 return constructMap_;
494 return constructMap_;
501 return transformElements_;
507 return transformStart_;
539 const label globalElement
558 const label constructSize,
567 template<
class T,
class CombineOp>
572 const label constructSize,
576 const CombineOp& cop,
600 template<
class T,
class TransformOp>
605 const TransformOp& top,
613 const label constructSize,
620 template<
class T,
class TransformOp>
624 const label constructSize,
626 const TransformOp& top,
636 const label constructSize,
644 template<
class T,
class TransformOp>
648 const label constructSize,
651 const TransformOp& top,
671 "mapDistribute::updateMesh(const mapPolyMesh&)" 692 void mapDistribute::transform::operator()
699 void mapDistribute::transform::operator()
705 void mapDistribute::transform::operator()
707 const coupledPolyPatch&,
711 void mapDistribute::transform::operator()
713 const coupledPolyPatch&,
718 void mapDistribute::transform::operator()
720 const coupledPolyPatch&,
724 void mapDistribute::transform::operator()
726 const vectorTensorTransform&,
731 void mapDistribute::transform::operator()
733 const coupledPolyPatch&,
737 void mapDistribute::transform::operator()
739 const coupledPolyPatch&,
744 void mapDistribute::transform::operator()
746 const coupledPolyPatch& cpp,
750 void mapDistribute::transform::operator()
752 const vectorTensorTransform&,
757 void mapDistribute::transform::operator()
759 const coupledPolyPatch&,
763 void mapDistribute::transform::operator()
765 const coupledPolyPatch&,
void receive(PstreamBuffers &, List< T > &) const
Do all receives using PstreamBuffers.
virtual const tensorField & forwardT() const
Return face transformation tensor.
void send(PstreamBuffers &, const List< T > &) const
Do all sends using PstreamBuffers.
const labelListList & subMap() const
From subsetted data back to original data.
Determination and storage of the possible independent transforms introduced by coupledPolyPatches, as well as all of the possible permutations of these transforms generated by the presence of multiple coupledPolyPatches, i.e. more than one cyclic boundary.
Default transformation behaviour for position.
Buffers for inter-processor communications streams (UOPstream, UIPstream).
label whichTransform(const label index) const
Find transform from transformElements.
static void distribute(const Pstream::commsTypes commsType, const List< labelPair > &schedule, const label constructSize, const labelListList &subMap, const labelListList &constructMap, List< T > &, const int tag=UPstream::msgType())
Distribute data. Note:schedule only used for Pstream::scheduled.
Default transformation behaviour.
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
const labelListList & transformElements() const
For every globalIndexAndTransform::transformPermutations.
static label renumber(const globalIndex &, const List< Map< label > > &compactMap, const label globalElement)
Helper for construct from globalIndex. Renumbers element.
const labelListList & constructMap() const
From subsetted data to new reconstructed data.
Xfer< List< T > > xfer()
Transfer contents to the Xfer container.
Class containing processor-to-processor mapping information.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
A simple container for copying or transferring objects of type <T>.
#define forAllIter(Container, container, iter)
Calculates a unique integer (label so might not have enough room - 2G max) for processor + local inde...
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
void operator=(const mapDistribute &)
virtual void transformPosition(pointField &) const =0
Transform a patch-based position from other side to this side.
void compact(const boolList &elemIsUsed, const int tag=UPstream::msgType())
Compact maps. Gets per field a bool whether it is used (locally)
friend Istream & operator>>(Istream &, mapDistribute &)
Read dictionary from Istream.
mapDistribute()
Construct null.
forAllConstIter(PtrDictionary< phaseModel >, mixture.phases(), phase)
void reverseDistribute(const label constructSize, List< T > &, const bool dummyTransform=true, const int tag=UPstream::msgType()) const
Reverse distribute data using default commsType.
virtual bool parallel() const
Are the cyclic planes parallel.
commsTypes
Types of communications.
void operator()(const vectorTensorTransform &vt, const bool forward, List< Type > &fld) const
static int & msgType()
Message tag of standard messages.
Xfer< mapDistribute > xfer()
Transfer contents to the Xfer container.
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){gmvFile<< iter().position().x()<< ' ';}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){gmvFile<< iter().position().y()<< ' ';}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){gmvFile<< iter().position().z()<< ' ';}gmvFile<< nl;forAll(lagrangianScalarNames, i){const word &name=lagrangianScalarNames[i];IOField< scalar > fld(IOobject( name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE ))
Vector-tensor class used to perform translations and rotations in 3D space.
const List< labelPair > & schedule() const
Return a schedule. Demand driven. See above.
void transformList(const tensor &, UList< T > &)
Apply transformation to list. Either single transformation tensor.
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects...
const labelList & transformStart() const
Destination in constructMap for transformed elements.
Spatial transformation functions for primitive fields.
void updateMesh(const mapPolyMesh &)
Correct for topo change.
void transfer(mapDistribute &)
Transfer the contents of the argument and annul the argument.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
ClassName("mapDistribute")
#define notImplemented(functionName)
Issue a FatalErrorIn for a function not currently implemented.
The coupledPolyPatch is an abstract base class for patches that couple regions of the computational d...
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
void printLayout(Ostream &os) const
Debug: print layout. Can only be used on maps with sorted.
friend Ostream & operator<<(Ostream &, const mapDistribute &)
Write dictionary to Ostream.
label constructSize() const
Constructed data size.