OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
oofem::ElementCommunicator Class Reference

#include <problemcomm.h>

+ Inheritance diagram for oofem::ElementCommunicator:
+ Collaboration diagram for oofem::ElementCommunicator:

Public Member Functions

 ElementCommunicator (EngngModel *emodel, CommunicatorBuff *b, int rank, int size)
 
virtual ~ElementCommunicator ()
 
virtual void setUpCommunicationMaps (EngngModel *emodel, bool excludeSelfCommFlag, bool forceReinit=false)
 Service for setting up the communication patterns with other remote process. More...
 
virtual int setProcessCommunicatorToSendArry (ProcessCommunicator *processComm, IntArray &map)
 Assigns given map to given process communicator. More...
 
virtual int setProcessCommunicatorToRecvArry (ProcessCommunicator *processComm, IntArray &map)
 Assigns given map to given process communicator. More...
 
- Public Member Functions inherited from oofem::ProblemCommunicator
 ProblemCommunicator (EngngModel *emodel, CommunicatorBuff *b, int rank, int size)
 Constructor. More...
 
virtual ~ProblemCommunicator ()
 Destructor. More...
 
int DofManCmp (int, int)
 Global dofManager number comparison function. More...
 
int ElemCmp (int, int)
 Global element comparison function. More...
 
- Public Member Functions inherited from oofem::Communicator
 Communicator (EngngModel *emodel, CommunicatorBuff *buff, int rank, int size, CommunicatorMode mode=CommMode_Static)
 Constructor. More...
 
virtual ~Communicator ()
 Destructor. More...
 
ProcessCommunicatorgiveProcessCommunicator (int i)
 Returns i-th problem communicator. More...
 
template<class T >
int packAllData (T *ptr, int(T::*packFunc)(ProcessCommunicator &))
 Pack all problemCommunicators data to their send buffers. More...
 
template<class T , class P >
int packAllData (T *ptr, P *src, int(T::*packFunc)(P *, ProcessCommunicator &))
 Pack all problemCommuncators data to their send buffers. More...
 
template<class T >
int unpackAllData (T *ptr, int(T::*unpackFunc)(ProcessCommunicator &))
 Unpack all problemCommuncators data from recv buffers. More...
 
template<class T , class P >
int unpackAllData (T *ptr, P *src, int(T::*unpackFunc)(P *, ProcessCommunicator &))
 Unpack all problemCommuncators data from recv buffers. More...
 
int initExchange (int tag)
 Initializes data exchange with all problems. More...
 
int initSend (int tag)
 Initializes data send exchange with all problems. More...
 
int initReceive (int tag)
 Initializes data receive exchange with all problems. More...
 
int finishExchange ()
 Finishes the exchange. More...
 
void clearBuffers ()
 Clears all buffer content. More...
 
virtual void setUpCommunicationMaps (EngngModel *pm)
 Service for setting up the communication patterns with other remote processes. More...
 
std::string errorInfo (const char *func) const
 Returns string for prepending output (used by error reporting macros). More...
 

Additional Inherited Members

- Protected Member Functions inherited from oofem::ProblemCommunicator
void sortCommMap (IntArray &map, int(ProblemCommunicator::*cmp)(int, int))
 Sorts given communication map, containing local DofManager numbers according to their corresponding global numbers. More...
 
void quickSortCommMap (IntArray &map, int l, int r, int(ProblemCommunicator::*cmp)(int, int))
 Implementation of quicksort algorithm. More...
 
int quickSortPartition (IntArray &map, int l, int r, int(ProblemCommunicator::*cmp)(int, int))
 Partitioning used in quicksort. More...
 
- Protected Attributes inherited from oofem::ProblemCommunicator
bool initialized
 
- Protected Attributes inherited from oofem::Communicator
int rank
 Rank of process. More...
 
int size
 Number of processes. More...
 
ProcessCommunicator ** processComms
 Array of process communicators. More...
 
EngngModelengngModel
 Engineering model. More...
 
CommunicatorMode mode
 Mode. More...
 

Detailed Description

Definition at line 129 of file problemcomm.h.

Constructor & Destructor Documentation

oofem::ElementCommunicator::ElementCommunicator ( EngngModel emodel,
CommunicatorBuff b,
int  rank,
int  size 
)

Definition at line 64 of file problemcomm.C.

virtual oofem::ElementCommunicator::~ElementCommunicator ( )
inlinevirtual

Definition at line 133 of file problemcomm.h.

Member Function Documentation

int oofem::ElementCommunicator::setProcessCommunicatorToRecvArry ( ProcessCommunicator processComm,
IntArray map 
)
virtual

Assigns given map to given process communicator.

Sorts map according to global entity (dofmanagers or element) numbers to ensure, that local and corresponding remote process have the identical map with same ordering. This will ensure proper packing/unpacking order. The corresponding processCommunicator buffer takes care about resizing itself accordingly to hold all outgoing/incoming data using engngModel->estimateMaxPackSize service.

Parameters
processCommProcess comm which received map will be set.
mapReceived map.

Implements oofem::ProblemCommunicator.

Definition at line 393 of file problemcomm.C.

References oofem::ProblemCommunicator::ElemCmp(), oofem::Communicator::engngModel, oofem::ProcessCommunicator::setToRecvArry(), and oofem::ProblemCommunicator::sortCommMap().

Referenced by oofem::NodeCommunicator::setUpCommunicationMaps(), and setUpCommunicationMaps().

int oofem::ElementCommunicator::setProcessCommunicatorToSendArry ( ProcessCommunicator processComm,
IntArray map 
)
virtual

Assigns given map to given process communicator.

Sorts map according to global entity (dofmanagers or element) numbers to ensure, that local and corresponding remote process have the identical map with same ordering. This will ensure proper packing/unpacking order. The corresponding processCommunicator buffer takes care about resizing itself accordingly to hold all outgoing/incoming data using engngModel->estimateMaxPackSize service.

Parameters
processCommDomain comm which send map will be set.
mapSend map.

Implements oofem::ProblemCommunicator.

Definition at line 385 of file problemcomm.C.

References oofem::ProblemCommunicator::ElemCmp(), oofem::Communicator::engngModel, oofem::ProcessCommunicator::setToSendArry(), and oofem::ProblemCommunicator::sortCommMap().

Referenced by oofem::NodeCommunicator::setUpCommunicationMaps(), and setUpCommunicationMaps().

void oofem::ElementCommunicator::setUpCommunicationMaps ( EngngModel emodel,
bool  excludeSelfCommFlag,
bool  forceReinit = false 
)
virtual

Service for setting up the communication patterns with other remote process.

Sets up the toSend and toRecv attributes in associated process communicators.

Parameters
emodelAssociated engineering model.
excludeSelfCommFlagIf set to true, the communication map of receiver with itself will be forced to be empty, otherwise it will be assembled.
forceReinitForces reinitilaization.

Implements oofem::ProblemCommunicator.

Definition at line 136 of file problemcomm.C.

References oofem::IntArray::at(), oofem::StaticCommunicationBuffer::bcast(), oofem::CIO_OK, oofem::Element_local, oofem::Element_remote, oofem::IntArray::findFirstIndexOf(), oofem::EngngModel::giveDomain(), oofem::Domain::giveElement(), oofem::Element::giveGlobalNumber(), oofem::Domain::giveNumberOfElements(), oofem::IntArray::givePackSize(), oofem::Element::giveParallelMode(), oofem::Element::givePartitionList(), oofem::Communicator::giveProcessCommunicator(), oofem::IntArray::giveSize(), oofem::ProcessCommunicator::giveToRecvMap(), oofem::ProcessCommunicator::giveToSendMap(), oofem::StaticCommunicationBuffer::init(), oofem::ProblemCommunicator::initialized, OOFEM_ERROR, OOFEM_LOG_DEBUG, OOFEM_LOG_RELEVANT, oofem::IntArray::printYourself(), oofem::Communicator::rank, oofem::IntArray::resize(), oofem::StaticCommunicationBuffer::resize(), oofem::IntArray::restoreYourself(), setProcessCommunicatorToRecvArry(), setProcessCommunicatorToSendArry(), oofem::Communicator::size, oofem::IntArray::storeYourself(), and VERBOSEPARALLEL_PRINT.


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

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:35 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011