OOFEM
2.4
OOFEM.org - Object Oriented Finite Element Solver
|
Class representing communicator for FETI solver. More...
#include <feticommunicator.h>
Public Types | |
enum | { FETICommunicatorZeroTag, NumberOfBoundaryDofManagersMsg, BoundaryDofManagersRecMsg } |
Enumeration used to define necessary communication tags, used to identify different messages send/received. More... | |
Public Member Functions | |
FETICommunicator (EngngModel *emodel, CommunicatorBuff *b, int rank, int size) | |
Creates new communicator. More... | |
virtual | ~FETICommunicator () |
Destructor. More... | |
int | giveNumberOfDomainEquations () |
void | setUpCommunicationMaps (EngngModel *pm) |
Service for setting up the communication patterns with other remote processes. More... | |
FETIBoundaryDofManager * | giveDofManager (int i) |
Returns reference to i-th boundary dof manager. More... | |
IntArray * | giveMasterCommMapPtr () |
Returns pointer to master comm map stored in receiver. 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... | |
ProcessCommunicator * | giveProcessCommunicator (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... | |
std::string | errorInfo (const char *func) const |
Returns string for prepending output (used by error reporting macros). More... | |
Protected Attributes | |
int | numberOfEquations |
Number of equations at master level (determined form boundary nodes). More... | |
vector< FETIBoundaryDofManager > | boundaryDofManList |
List of boundary dof managers records. More... | |
IntArray | masterCommMap |
Master communication map. More... | |
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... | |
EngngModel * | engngModel |
Engineering model. More... | |
CommunicatorMode | mode |
Mode. More... | |
Class representing communicator for FETI solver.
It is attribute of FETI solver numerical method class running on master partition (rank equal to 0). This Communicator provides necessary services for communication with associated slave partitions. It manages several domain communicators, each for communication with particular partition.
Definition at line 56 of file feticommunicator.h.
anonymous enum |
Enumeration used to define necessary communication tags, used to identify different messages send/received.
Enumerator | |
---|---|
FETICommunicatorZeroTag | |
NumberOfBoundaryDofManagersMsg | |
BoundaryDofManagersRecMsg |
Definition at line 60 of file feticommunicator.h.
oofem::FETICommunicator::FETICommunicator | ( | EngngModel * | emodel, |
CommunicatorBuff * | b, | ||
int | rank, | ||
int | size | ||
) |
Creates new communicator.
emodel | Engineering model for communication. |
b | Communicator buffer. |
rank | Rank of associated partition. |
size | Number of collaborating processes. |
Definition at line 47 of file feticommunicator.C.
References OOFEM_ERROR.
|
virtual |
Destructor.
Definition at line 56 of file feticommunicator.C.
|
inline |
Returns reference to i-th boundary dof manager.
Available only on master partition.
Definition at line 92 of file feticommunicator.h.
Referenced by oofem::FETISolver::estimateMaxPackSize(), oofem::FETISolver::masterMapDirectionVector(), oofem::FETISolver::masterMapPPVector(), oofem::FETISolver::masterMapRBM(), oofem::FETISolver::masterMapResiduals(), oofem::FETISolver::masterMapSolution(), oofem::FETISolver::masterUnpackRBM(), oofem::FETISolver::packDirectionVector(), oofem::FETISolver::packSolution(), oofem::FETISolver::unpackPPVector(), and oofem::FETISolver::unpackResiduals().
|
inline |
Returns pointer to master comm map stored in receiver.
Definition at line 98 of file feticommunicator.h.
Referenced by oofem::FETISolver::masterMapDirectionVector(), oofem::FETISolver::masterMapPPVector(), oofem::FETISolver::masterMapRBM(), oofem::FETISolver::masterMapResiduals(), and oofem::FETISolver::masterMapSolution().
|
inline |
Definition at line 85 of file feticommunicator.h.
Referenced by oofem::FETISolver::solve().
|
virtual |
Service for setting up the communication patterns with other remote processes.
Sets up the toSend and toRecv attributes in associated problem communicators.
pm | Engineering model to use for setup. |
Reimplemented from oofem::Communicator.
Definition at line 61 of file feticommunicator.C.
References oofem::IntArray::at(), BoundaryDofManagersRecMsg, boundaryDofManList, oofem::DofManager_shared, oofem::Communicator::engngModel, oofem::DofManager::giveCompleteLocationArray(), oofem::Domain::giveDofManager(), oofem::EngngModel::giveDomain(), oofem::DofManager::giveGlobalNumber(), oofem::Domain::giveNumberOfDofManagers(), oofem::CommunicationBuffer::givePackSizeOfInt(), oofem::DofManager::giveParallelMode(), oofem::Communicator::giveProcessCommunicator(), oofem::IntArray::giveSize(), oofem::StaticCommunicationBuffer::init(), oofem::StaticCommunicationBuffer::iRecv(), masterCommMap, NumberOfBoundaryDofManagersMsg, numberOfEquations, OOFEM_ERROR, OOFEM_LOG_DEBUG, oofem::Communicator::rank, oofem::StaticCommunicationBuffer::read(), oofem::StaticCommunicationBuffer::resize(), oofem::ProcessCommunicator::setToRecvArry(), oofem::ProcessCommunicator::setToSendArry(), oofem::Communicator::size, oofem::StaticCommunicationBuffer::testCompletion(), and VERBOSEPARALLEL_PRINT.
Referenced by oofem::FETISolver::solve().
|
protected |
List of boundary dof managers records.
Definition at line 66 of file feticommunicator.h.
Referenced by setUpCommunicationMaps().
|
protected |
Master communication map.
Not stored in corresponding domain comm, but required in order to allow direct (memory) mapping instead of communication.
Definition at line 71 of file feticommunicator.h.
Referenced by setUpCommunicationMaps().
|
protected |
Number of equations at master level (determined form boundary nodes).
Definition at line 64 of file feticommunicator.h.
Referenced by setUpCommunicationMaps().