|
OOFEM 3.0
|
#include <problemcomm.h>
Public Member Functions | |
| ElementCommunicator (EngngModel *emodel, CommunicatorBuff *b, int rank, int size) | |
| virtual | ~ElementCommunicator () |
| void | setUpCommunicationMaps (EngngModel *emodel, bool excludeSelfCommFlag, bool forceReinit=false) override |
| int | setProcessCommunicatorToSendArry (ProcessCommunicator *processComm, IntArray &map) override |
| int | setProcessCommunicatorToRecvArry (ProcessCommunicator *processComm, IntArray &map) override |
| Public Member Functions inherited from oofem::ProblemCommunicator | |
| ProblemCommunicator (EngngModel *emodel, CommunicatorBuff *b, int rank, int size) | |
| virtual | ~ProblemCommunicator () |
| Destructor. | |
| int | DofManCmp (int, int) |
| Global dofManager number comparison function. | |
| int | ElemCmp (int, int) |
| Global element comparison function. | |
| Public Member Functions inherited from oofem::Communicator | |
| Communicator (EngngModel *emodel, CommunicatorBuff *buff, int rank, int size, CommunicatorMode mode=CommMode_Static) | |
| virtual | ~Communicator () |
| Destructor. | |
| ProcessCommunicator * | giveProcessCommunicator (int i) |
| template<class T> | |
| int | packAllData (T *ptr, int(T ::*packFunc)(ProcessCommunicator &)) |
| template<class T, class P> | |
| int | packAllData (T *ptr, P *src, int(T ::*packFunc)(P *, ProcessCommunicator &)) |
| template<class T> | |
| int | unpackAllData (T *ptr, int(T ::*unpackFunc)(ProcessCommunicator &)) |
| template<class T, class P> | |
| int | unpackAllData (T *ptr, P *src, int(T ::*unpackFunc)(P *, ProcessCommunicator &)) |
| int | initExchange (int tag) |
| int | initSend (int tag) |
| int | initReceive (int tag) |
| int | finishExchange () |
| void | clearBuffers () |
| virtual void | setUpCommunicationMaps (EngngModel *pm) |
| std::string | errorInfo (const char *func) const |
| Returns string for prepending output (used by error reporting macros). | |
Additional Inherited Members | |
| Protected Member Functions inherited from oofem::ProblemCommunicator | |
| void | sortCommMap (IntArray &map, int(ProblemCommunicator ::*cmp)(int, int)) |
| void | quickSortCommMap (IntArray &map, int l, int r, int(ProblemCommunicator ::*cmp)(int, int)) |
| Implementation of quicksort algorithm. | |
| int | quickSortPartition (IntArray &map, int l, int r, int(ProblemCommunicator ::*cmp)(int, int)) |
| Partitioning used in quicksort. | |
| Protected Attributes inherited from oofem::ProblemCommunicator | |
| bool | initialized |
| Protected Attributes inherited from oofem::Communicator | |
| int | rank |
| Rank of process. | |
| std::vector< ProcessCommunicator > | processComms |
| Array of process communicators. | |
| EngngModel * | engngModel |
| Engineering model. | |
| CommunicatorMode | mode |
| Mode. | |
Definition at line 129 of file problemcomm.h.
| oofem::ElementCommunicator::ElementCommunicator | ( | EngngModel * | emodel, |
| CommunicatorBuff * | b, | ||
| int | rank, | ||
| int | size ) |
Definition at line 64 of file problemcomm.C.
References oofem::ProblemCommunicator::ProblemCommunicator(), and oofem::Communicator::rank.
|
inlinevirtual |
Definition at line 133 of file problemcomm.h.
|
overridevirtual |
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.
| processComm | Process comm which received map will be set. |
| map | Received map. |
Implements oofem::ProblemCommunicator.
Definition at line 394 of file problemcomm.C.
References oofem::Communicator::engngModel, oofem::ProcessCommunicator::setToRecvArry(), and oofem::ProblemCommunicator::sortCommMap().
Referenced by setUpCommunicationMaps().
|
overridevirtual |
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.
| processComm | Domain comm which send map will be set. |
| map | Send map. |
Implements oofem::ProblemCommunicator.
Definition at line 386 of file problemcomm.C.
References oofem::Communicator::engngModel, oofem::ProcessCommunicator::setToSendArry(), and oofem::ProblemCommunicator::sortCommMap().
Referenced by setUpCommunicationMaps().
|
overridevirtual |
Service for setting up the communication patterns with other remote process. Sets up the toSend and toRecv attributes in associated process communicators.
| emodel | Associated engineering model. |
| excludeSelfCommFlag | If set to true, the communication map of receiver with itself will be forced to be empty, otherwise it will be assembled. |
| forceReinit | Forces 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::StaticCommunicationBuffer::init(), oofem::ProblemCommunicator::initialized, OOFEM_ERROR, OOFEM_LOG_DEBUG, OOFEM_LOG_RELEVANT, oofem::Communicator::processComms, oofem::Communicator::rank, oofem::IntArray::resize(), oofem::StaticCommunicationBuffer::resize(), oofem::IntArray::restoreYourself(), setProcessCommunicatorToRecvArry(), setProcessCommunicatorToSendArry(), oofem::IntArray::storeYourself(), and VERBOSEPARALLEL_PRINT.