本文整理汇总了C++中DofManager::hasAnySlaveDofs方法的典型用法代码示例。如果您正苦于以下问题:C++ DofManager::hasAnySlaveDofs方法的具体用法?C++ DofManager::hasAnySlaveDofs怎么用?C++ DofManager::hasAnySlaveDofs使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DofManager
的用法示例。
在下文中一共展示了DofManager::hasAnySlaveDofs方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: handleMasterSlaveDofManLinks
void ParmetisLoadBalancer :: handleMasterSlaveDofManLinks()
{
int idofman, ndofman = domain->giveNumberOfDofManagers();
DofManager *dofman;
//int myrank = domain->giveEngngModel()->giveRank();
int __i, __j, __partition, _master;
bool isSlave;
IntArray slaveMastersDofMans;
/*
* We assume that in the old partitioning, the master and slave consistency was assured. This means that master is presented
* on the same partition as slave. The master can be local (then all slaves are local) or master is shared (then slaves are on
* partitions sharing the master).
*
* If master was local, then its new partitioning can be locally resolved (as all slaves were local).
* If the master was shared, the new partitioning of master has to be communicated between old sharing partitions.
*/
// handle master slave links between dofmans (master and slave required on same partition)
for ( idofman = 1; idofman <= ndofman; idofman++ ) {
dofman = domain->giveDofManager(idofman);
isSlave = dofman->hasAnySlaveDofs();
if ( isSlave ) {
// ok have a look on its masters
dofman->giveMasterDofMans(slaveMastersDofMans);
for ( __i = 1; __i <= slaveMastersDofMans.giveSize(); __i++ ) {
// loop over all slave masters
_master = slaveMastersDofMans.at(__i);
// now loop over all slave new partitions and annd then to master's partitions
for ( __j = 1; __j <= dofManPartitions [ idofman - 1 ].giveSize(); __j++ ) {
__partition = dofManPartitions [ idofman - 1 ].at(__j);
// add slave partition to master
dofManPartitions [ _master - 1 ].insertOnce(__partition);
}
}
}
}
}