/*------------------------------------------------------------------------*/ /*------------------------------------------------------------------------*/ /* Partition Functionality */ /*------------------------------------------------------------------------*/ /*------------------------------------------------------------------------*/ prefix_createPartitionMPI - collective call. // This may be embedded in loading of a mesh already partitioned. // Can have ITAPS_Comm (which can be typdefed to MPI_COMM for MPI and // so on) leading to prefix_createPartition (without MPI). prefix_destroyPartition - collective call. // like MPI_finalize (or prefix_createPartition). prefix_getPartitionCommMPI - no communication. // Can have ITAPS_Comm leading to prefix_getPartitionComm (without MPI). // May have prefix_isPartitionCommMPI. prefix_getNumPartitions - no communication. // Assuming ones on-process. prefix_getPartitions - no communication. // Assuming partition handles are on-process ones. prefix_getNumPartsPar - no communication. // like MPI_Comm_size() ---------- need to revisit (see below) ---------- prefix_getRank - likely no communication. // Collective communication in this case seems prohibitive and // point-to-point will be very difficult to control. prefix_getRankArr - likely no communication. // See comments above for prefix_getRank prefix_getNumPartIds - likely no communication. // See comments above for prefix_getRank prefix_getNumPartIdsArr - likely no communication // See comments above for prefix_getRank prefix_getPartIdsFromRank - likely no communication. // See comments above for prefix_getRank prefix_getPartIdsFromRankArr - likely no communication. // See comments above for prefix_getRank ---------- need to revisit (see above) ---------- prefix_getNumParts - no communication. // like MPI_Comm_size() prefix_getParts - no communication. // Assuming on-process ones. prefix_getNumOfTypePar - collective call. prefix_getNumOfTopoPar - collective call. prefix_getNumEntSetsPar - collective call. /*------------------------------------------------------------------------*/ /*------------------------------------------------------------------------*/ /* Part Functionality */ /*------------------------------------------------------------------------*/ /*------------------------------------------------------------------------*/ prefix_createPart - likely no communication. prefix_destroyPart - likely no communication. prefix_getPartIdsFromPartHandle - no communication. // Assuming on-process call. // Typo, see ..Ids.., should be prefix_getPartIdFromPartHandle prefix_getPartIdsFromPartHandlesArr - no communication. // Assuming on-process call. prefix_getPartHandlesFromPartId - no communication. // Assuming on-process part handle. // Typo, see ..Handles.., should be prefix_getPartHandleFromPartId prefix_getPartHandlesFromPartIdsArr - no communication. // Assuming on-process part handles. prefix_getNumPartNbors - no communication. prefix_getNumPartNborsArr - no communication. prefix_getPartNbors - no communication. prefix_getPartNborsArr - no communication. prefix_getNumPartBdryEntities - no communication. prefix_getPartBdryEntities - no communication. prefix_initPartBdryEntIter - no communication. prefix_initPartBdryEntArrIter - no communication. // No communication in functions below. // Assuming add/rmv from/to on-process parts. // Possible to achieve this from send/receiveEntArr. // May be not be accomplished by entity-set functionality. // Moreover, if we use define it will be tedious across different compilers. #define prefix_addEntToPart iMesh_addEntToSet #define prefix_rmvEntFromPart iMesh_rmvEntFromSet #define prefix_addEntArrToPart iMesh_addEntArrToSet #define prefix_rmvEntArrFromPart iMesh_rmvEntArrFromSet prefix_sendEntArrToParts - likely collective call. prefix_receiveEntArrToParts - likely collective call. // Blocking may result into deadlock. // Non-blocking send/receive will be required // with prefix_finishSendReceive (like MPI_Waitall). // Update of ghost may require another call (for example, we may not want // to keep ghosts updated during mesh adaptivity). // Moreover, part handle(s) is not required. prefix_getNumOfType - no communication. prefix_getNumOfTopo - no communication. prefix_getEntSets - no communication. prefix_getAllVtxCoords - no communication. prefix_getVtxCoordIndex - no communication. prefix_getEntities - no communication. prefix_getAdjEntities - no communication. prefix_initEntIter - no communication. prefix_getNextEntIter - no communication. prefix_resetEntIter - no communication. prefix_endEntIter - no communication. prefix_initEntArrIter - no communication. prefix_getNextEntArrIter - no communication. prefix_resetEntArrIter - no communication. prefix_endEntArrIter - no communication. /*------------------------------------------------------------------------*/ /*------------------------------------------------------------------------*/ /* Entity Functionality */ /*------------------------------------------------------------------------*/ /*------------------------------------------------------------------------*/ prefix_getEntityOwner - no communication. // Need to split into prefix_getEntityOwnerPartId nad prefix_getEntityOwnerCopy. // Part handle is absent whereas it is present in prefix_isEntOwner. prefix_getEntityOwnerArr - no communication. // See comments above for prefix_getEntityOwner prefix_isEntOwner - no communication. prefix_isEntOwnerArr - no communication. prefix_isEntParStatus - no communication. prefix_isEntParStatusArr - no communication. prefix_getCopyEntOnPart - no communication. // The idea to access a remote-entity-handle is to avoid communication. prefix_getNumCopiesEnt - no communication. prefix_getCopiesEnt - no communication. // The idea to access remote-entity-handles is to avoid communication. prefix_getOwnedEnt - no communication. // Same as prefix_getEntityOwner, see comments above. prefix_addCopyEnt - no communication. // The idea to store remote-entity-handle is to avoid communication. // Need remote-entity-handle in arguments. prefix_removeCopyEnt - no communication. // May need remote-entity-handle in arguments.