本文整理汇总了C++中ProcessCommunicatorBuff::write方法的典型用法代码示例。如果您正苦于以下问题:C++ ProcessCommunicatorBuff::write方法的具体用法?C++ ProcessCommunicatorBuff::write怎么用?C++ ProcessCommunicatorBuff::write使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ProcessCommunicatorBuff
的用法示例。
在下文中一共展示了ProcessCommunicatorBuff::write方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: packSharedDofManData
int
SPRNodalRecoveryModel :: packSharedDofManData(parallelStruct *s, ProcessCommunicator &processComm)
{
int result = 1, i, j, indx, eq, size;
ProcessCommunicatorBuff *pcbuff = processComm.giveProcessCommunicatorBuff();
IntArray const *toSendMap = processComm.giveToSendMap();
size = toSendMap->giveSize();
for ( i = 1; i <= size; i++ ) {
// toSendMap contains all shared dofmans with remote partition
// one has to check, if particular shared node value is available for given region
indx = s->regionNodalNumbers->at( toSendMap->at(i) );
if ( indx && s->dofManPatchCount->at(indx) ) {
// pack "1" to indicate that for given shared node this is a valid contribution
result &= pcbuff->write(1);
eq = ( indx - 1 ) * s->regionValSize;
for ( j = 1; j <= s->regionValSize; j++ ) {
result &= pcbuff->write( s->dofManValues->at(eq + j) );
}
} else {
// ok shared node is not in active region (determined by s->regionNodalNumbers)
result &= pcbuff->write(0);
}
}
return result;
}
示例2: packSharedDmanPartitions
int
ParmetisLoadBalancer :: packSharedDmanPartitions(ProcessCommunicator &pc)
{
int myrank = domain->giveEngngModel()->giveRank();
int iproc = pc.giveRank();
int ndofman, idofman;
DofManager *dofman;
if ( iproc == myrank ) {
return 1; // skip local partition
}
// query process communicator to use
ProcessCommunicatorBuff *pcbuff = pc.giveProcessCommunicatorBuff();
// loop over dofManagers and pack shared dofMan data
ndofman = domain->giveNumberOfDofManagers();
for ( idofman = 1; idofman <= ndofman; idofman++ ) {
dofman = domain->giveDofManager(idofman);
// test if iproc is in list of existing shared partitions
if ( ( dofman->giveParallelMode() == DofManager_shared ) &&
( dofman->givePartitionList()->findFirstIndexOf(iproc) ) ) {
// send new partitions to remote representation
// fprintf (stderr, "[%d] sending shared plist of %d to [%d]\n", myrank, dofman->giveGlobalNumber(), iproc);
pcbuff->write( dofman->giveGlobalNumber() );
this->giveDofManPartitions(idofman)->storeYourself(*pcbuff);
}
}
pcbuff->write((int)PARMETISLB_END_DATA);
return 1;
}