|
OOFEM 3.0
|
#include <parmetisloadbalancer.h>
Public Member Functions | |
| ParmetisLoadBalancer (Domain *d) | |
| virtual | ~ParmetisLoadBalancer () |
| void | calculateLoadTransfer () override |
| DofManMode | giveDofManState (int idofman) override |
| Returns the label of dofmanager after load balancing. | |
| IntArray * | giveDofManPartitions (int idofman) override |
| Returns the partition list of given dofmanager after load balancing. | |
| int | giveElementPartition (int ielem) override |
| Returns the new partition number assigned to local element after LB. | |
| Public Member Functions inherited from oofem::LoadBalancer | |
| LoadBalancer (Domain *d) | |
| virtual | ~LoadBalancer () |
| void | migrateLoad (Domain *d) |
| virtual void | printStatistics () const |
| Print receiver statistics. | |
| virtual void | initializeFrom (InputRecord &ir) |
| Initializes receiver according to object description stored in input record. | |
| Domain * | giveDomain () |
| Returns reference to its domain. | |
| virtual void | setDomain (Domain *d) |
| sets associated Domain | |
Protected Member Functions | |
| void | handleMasterSlaveDofManLinks () |
| void | initGlobalParmetisElementNumbering () |
| int | giveLocalElementNumber (int globnum) |
| int | giveGlobalElementNumber (int locnum) |
| void | labelDofManagers () |
| int | determineDofManState (int idofman, int myrank, int npart, IntArray *dofManPartitions) |
| int | packSharedDmanPartitions (ProcessCommunicator &pc) |
| int | unpackSharedDmanPartitions (ProcessCommunicator &pc) |
| void | addSharedDofmanPartitions (int _locnum, IntArray _partitions) |
| const char * | giveClassName () const override |
| Returns class name of the receiver. | |
| int | packMigratingData (Domain *, ProcessCommunicator &pc) |
| int | unpackMigratingData (Domain *, ProcessCommunicator &pc) |
| void | deleteRemoteDofManagers (Domain *) |
| void | deleteRemoteElements (Domain *) |
| void | initializeWtp (IntArray &wtp) |
Protected Attributes | |
| IntArray | gToLMap |
| Element numbering maps. | |
| IntArray | lToGMap |
| idx_t * | elmdist |
| int | myGlobNumOffset |
| real_t * | tpwgts |
| Partition weights (user input). | |
| IntArray | dofManState |
| Array of DofManMode(s). | |
| std ::vector< IntArray > | dofManPartitions |
| Array of dof man partitions. | |
| IntArray | elementPart |
| Partition vector of the locally-stored elements. | |
| Protected Attributes inherited from oofem::LoadBalancer | |
| Domain * | domain |
| std ::vector< std ::unique_ptr< WorkTransferPlugin > > | wtpList |
| List of work transfer plugins. | |
Additional Inherited Members | |
| Public Types inherited from oofem::LoadBalancer | |
| enum | DofManMode { DM_NULL , DM_Local , DM_Shared , DM_Remote } |
ParMetis load balancer.
Definition at line 57 of file parmetisloadbalancer.h.
| oofem::ParmetisLoadBalancer::ParmetisLoadBalancer | ( | Domain * | d | ) |
Definition at line 55 of file parmetisloadbalancer.C.
References elmdist, oofem::LoadBalancer::LoadBalancer(), and tpwgts.
|
virtual |
Definition at line 61 of file parmetisloadbalancer.C.
|
protected |
Definition at line 558 of file parmetisloadbalancer.C.
References dofManPartitions.
Referenced by unpackSharedDmanPartitions().
|
overridevirtual |
Implements oofem::LoadBalancer.
Definition at line 74 of file parmetisloadbalancer.C.
References oofem::LoadBalancer::domain, oofem::Element_local, elementPart, elmdist, oofem::Element::giveDofManager(), oofem::DofManager::giveGlobalNumber(), oofem::Element::giveNumberOfDofManagers(), oofem::Element::giveParallelMode(), oofem::LoadBalancerMonitor::giveProcessorWeights(), initGlobalParmetisElementNumbering(), labelDofManagers(), OOFEM_ERROR, oofem::Element::predictRelativeComputationalCost(), and tpwgts.
|
protected |
Definition at line 410 of file parmetisloadbalancer.C.
References oofem::LoadBalancer::DM_Local, oofem::LoadBalancer::DM_NULL, oofem::LoadBalancer::DM_Remote, oofem::LoadBalancer::DM_Shared, oofem::DofManager_local, oofem::DofManager_shared, dofManPartitions, and oofem::LoadBalancer::domain.
Referenced by labelDofManagers().
|
inlineoverrideprotectedvirtual |
Returns class name of the receiver.
Implements oofem::LoadBalancer.
Definition at line 105 of file parmetisloadbalancer.h.
|
overridevirtual |
Returns the partition list of given dofmanager after load balancing.
Implements oofem::LoadBalancer.
Definition at line 475 of file parmetisloadbalancer.C.
References dofManPartitions.
Referenced by packSharedDmanPartitions().
|
overridevirtual |
Returns the label of dofmanager after load balancing.
Implements oofem::LoadBalancer.
Definition at line 468 of file parmetisloadbalancer.C.
References dofManState.
|
overridevirtual |
Returns the new partition number assigned to local element after LB.
Implements oofem::LoadBalancer.
Definition at line 481 of file parmetisloadbalancer.C.
References elementPart.
Referenced by labelDofManagers().
|
inlineprotected |
Definition at line 89 of file parmetisloadbalancer.h.
References lToGMap.
|
inlineprotected |
Definition at line 88 of file parmetisloadbalancer.h.
References gToLMap, and myGlobNumOffset.
|
protected |
Definition at line 565 of file parmetisloadbalancer.C.
References oofem::IntArray::at(), dofManPartitions, oofem::LoadBalancer::domain, oofem::DofManager::giveMasterDofMans(), oofem::IntArray::giveSize(), and oofem::DofManager::hasAnySlaveDofs().
Referenced by labelDofManagers().
|
protected |
Definition at line 248 of file parmetisloadbalancer.C.
References oofem::LoadBalancer::domain, oofem::Element_local, elmdist, oofem::IntArray::givePointer(), gToLMap, lToGMap, myGlobNumOffset, and OOFEM_ERROR.
Referenced by calculateLoadTransfer().
|
protected |
Label local partition nodes (the nodes that are local or shared). Labeling consist of assigning corresponding id that characterize the status of local dof manager after balancing the load. Labeling determines which of local nodes remain local, or became local on other partition, or became shared, etc.
Definition at line 306 of file parmetisloadbalancer.C.
References oofem::IntArray::at(), oofem::CBT_dynamic, oofem::IntArray::clear(), oofem::CommMode_Dynamic, determineDofManState(), oofem::LoadBalancer::DM_Local, oofem::LoadBalancer::DM_NULL, oofem::LoadBalancer::DM_Remote, oofem::LoadBalancer::DM_Shared, oofem::DofManager_local, oofem::DofManager_shared, dofManPartitions, dofManState, oofem::LoadBalancer::domain, oofem::Element_local, oofem::Communicator::finishExchange(), oofem::ConnectivityTable::giveDofManConnectivityArray(), giveElementPartition(), oofem::DofManager::giveParallelMode(), oofem::Element::giveParallelMode(), oofem::IntArray::giveSize(), handleMasterSlaveDofManLinks(), oofem::Communicator::initExchange(), oofem::Communicator::packAllData(), SHARED_DOFMAN_PARTITIONS_TAG, and oofem::Communicator::unpackAllData().
Referenced by calculateLoadTransfer().
|
protected |
Definition at line 487 of file parmetisloadbalancer.C.
References oofem::DofManager_shared, oofem::LoadBalancer::domain, oofem::IntArray::findFirstIndexOf(), giveDofManPartitions(), oofem::DofManager::giveGlobalNumber(), oofem::DofManager::giveParallelMode(), oofem::DofManager::givePartitionList(), oofem::ProcessCommunicator::giveProcessCommunicatorBuff(), oofem::ProcessCommunicator::giveRank(), PARMETISLB_END_DATA, and oofem::ProcessCommunicatorBuff::write().
|
protected |
Definition at line 519 of file parmetisloadbalancer.C.
References addSharedDofmanPartitions(), oofem::LoadBalancer::domain, oofem::ProcessCommunicator::giveProcessCommunicatorBuff(), oofem::ProcessCommunicator::giveRank(), OOFEM_ERROR, PARMETISLB_END_DATA, oofem::ProcessCommunicatorBuff::read(), and oofem::IntArray::restoreYourself().
|
protected |
Array of dof man partitions.
Definition at line 69 of file parmetisloadbalancer.h.
Referenced by addSharedDofmanPartitions(), determineDofManState(), giveDofManPartitions(), handleMasterSlaveDofManLinks(), and labelDofManagers().
|
protected |
Array of DofManMode(s).
Definition at line 67 of file parmetisloadbalancer.h.
Referenced by giveDofManState(), and labelDofManagers().
|
protected |
Partition vector of the locally-stored elements.
Definition at line 71 of file parmetisloadbalancer.h.
Referenced by calculateLoadTransfer(), and giveElementPartition().
|
protected |
Definition at line 62 of file parmetisloadbalancer.h.
Referenced by calculateLoadTransfer(), initGlobalParmetisElementNumbering(), ParmetisLoadBalancer(), and ~ParmetisLoadBalancer().
|
protected |
Element numbering maps.
Definition at line 61 of file parmetisloadbalancer.h.
Referenced by giveLocalElementNumber(), and initGlobalParmetisElementNumbering().
|
protected |
Definition at line 61 of file parmetisloadbalancer.h.
Referenced by giveGlobalElementNumber(), and initGlobalParmetisElementNumbering().
|
protected |
Definition at line 63 of file parmetisloadbalancer.h.
Referenced by giveLocalElementNumber(), and initGlobalParmetisElementNumbering().
|
protected |
Partition weights (user input).
Definition at line 65 of file parmetisloadbalancer.h.
Referenced by calculateLoadTransfer(), ParmetisLoadBalancer(), and ~ParmetisLoadBalancer().