当前位置: 首页>>代码示例>>C++>>正文


C++ ProcessCommunicatorBuff::packString方法代码示例

本文整理汇总了C++中ProcessCommunicatorBuff::packString方法的典型用法代码示例。如果您正苦于以下问题:C++ ProcessCommunicatorBuff::packString方法的具体用法?C++ ProcessCommunicatorBuff::packString怎么用?C++ ProcessCommunicatorBuff::packString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ProcessCommunicatorBuff的用法示例。


在下文中一共展示了ProcessCommunicatorBuff::packString方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: pcDataStream

int NonlocalMaterialWTP :: packRemoteElements(Domain *d, ProcessCommunicator &pc)
{
    int myrank = d->giveEngngModel()->giveRank();
    int iproc = pc.giveRank();
    int nnodes, inode;
    DofManager *node, *dofman;
    Element *elem;

    if ( iproc == myrank ) {
        return 1;                // skip local partition
    }

    // query process communicator to use
    ProcessCommunicatorBuff *pcbuff = pc.giveProcessCommunicatorBuff();
    ProcessCommDataStream pcDataStream(pcbuff);

    // here we have to pack also nodes that are shared by packed elements !!!
    // assemble set of nodes needed by those elements
    // these have to be send (except those that are shared)
    std :: set< int >nodesToSend;
    for ( int ie: toSendList [ iproc ] ) {
        //ie = d->elementGlobal2Local(gie);
        elem = d->giveElement(ie);
        nnodes = elem->giveNumberOfDofManagers();
        for ( int i = 1; i <= nnodes; i++ ) {
            node = elem->giveDofManager(i);
            if ( ( node->giveParallelMode() == DofManager_local ) ||
                ( node->isShared() && !node->givePartitionList()->contains(iproc) ) ) {
                nodesToSend.insert( node->giveGlobalNumber() );
            }
        }
    }

    // pack nodes that become null nodes on remote partition
    for ( int in: nodesToSend ) {
        inode = d->dofmanGlobal2Local(in);
        dofman = d->giveDofManager(inode);
        pcbuff->packString( dofman->giveInputRecordName() );
        dofman->saveContext(& pcDataStream, CM_Definition | CM_State | CM_UnknownDictState);
    }

    pcbuff->packString("");

    for ( int ie: toSendList [ iproc ] ) {
        //ie = d->elementGlobal2Local(gie);
        elem = d->giveElement(ie);
        // pack local element (node numbers shuld be global ones!!!)
        // pack type
        pcbuff->packString( elem->giveInputRecordName() );
        elem->saveContext(& pcDataStream, CM_Definition | CM_DefinitionGlobal | CM_State);
    }

    pcbuff->packString("");


    return 1;
}
开发者ID:vivianyw,项目名称:oofem,代码行数:57,代码来源:nonlocalmatwtp.C


注:本文中的ProcessCommunicatorBuff::packString方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。