本文整理汇总了C++中ProcessCommunicatorBuff::unpackDouble方法的典型用法代码示例。如果您正苦于以下问题:C++ ProcessCommunicatorBuff::unpackDouble方法的具体用法?C++ ProcessCommunicatorBuff::unpackDouble怎么用?C++ ProcessCommunicatorBuff::unpackDouble使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ProcessCommunicatorBuff
的用法示例。
在下文中一共展示了ProcessCommunicatorBuff::unpackDouble方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: unpackSharedDofManData
int
NodalAveragingRecoveryModel :: unpackSharedDofManData(parallelStruct *s, ProcessCommunicator &processComm)
{
int result = 1;
int i, j, eq, indx, size, flag, intValue;
IntArray const *toRecvMap = processComm.giveToRecvMap();
ProcessCommunicatorBuff *pcbuff = processComm.giveProcessCommunicatorBuff();
double value;
size = toRecvMap->giveSize();
for ( i = 1; i <= size; i++ ) {
indx = s->regionNodalNumbers->at( toRecvMap->at(i) );
// toRecvMap contains all shared dofmans with remote partition
// one has to check, if particular shared node received contribution is available for given region
result &= pcbuff->unpackInt(flag);
if ( flag ) {
// "1" to indicates that for given shared node this is a valid contribution
result &= pcbuff->unpackInt(intValue);
// now check if we have a valid number
if ( indx ) {
s->regionDofMansConnectivity->at(indx) += intValue;
}
eq = ( indx - 1 ) * s->regionValSize;
for ( j = 1; j <= s->regionValSize; j++ ) {
result &= pcbuff->unpackDouble(value);
if ( indx ) {
s->lhs->at(eq + j) += value;
}
}
}
}
return result;
}
示例2: unpackDofManagers
int
StructuralEngngModel :: unpackDofManagers(FloatArray *dest, ProcessCommunicator &processComm, bool prescribedEquations)
{
int result = 1;
int i, size;
int j, ndofs, eqNum;
Domain *domain = this->giveDomain(1);
dofManagerParallelMode dofmanmode;
IntArray const *toRecvMap = processComm.giveToRecvMap();
ProcessCommunicatorBuff *pcbuff = processComm.giveProcessCommunicatorBuff();
DofManager *dman;
Dof *jdof;
double value;
size = toRecvMap->giveSize();
for ( i = 1; i <= size; i++ ) {
dman = domain->giveDofManager( toRecvMap->at(i) );
ndofs = dman->giveNumberOfDofs();
dofmanmode = dman->giveParallelMode();
for ( j = 1; j <= ndofs; j++ ) {
jdof = dman->giveDof(j);
if ( prescribedEquations ) {
eqNum = jdof->__givePrescribedEquationNumber();
} else {
eqNum = jdof->__giveEquationNumber();
}
if ( jdof->isPrimaryDof() && eqNum ) {
result &= pcbuff->unpackDouble(value);
if ( dofmanmode == DofManager_shared ) {
dest->at(eqNum) += value;
} else if ( dofmanmode == DofManager_remote ) {
dest->at(eqNum) = value;
} else {
_error("unpackReactions: unknown dof namager parallel mode");
}
}
}
}
return result;
}