# PetscGatherMessageLengths2

Computes info about messages that a MPI-node will receive, including (from-id,length) pairs for each message. Same functionality as PetscGatherMessageLengths() except it takes TWO ilenths and output TWO olengths.

### Synopsis

    #include "petscsys.h"
    PetscErrorCode  PetscGatherMessageLengths2(MPI_Comm comm,PetscMPIInt nsends,PetscMPIInt nrecvs,PetscMPIInt *ilengths1,PetscMPIInt *ilengths2,PetscMPIInt **onodes,PetscMPIInt **olengths1,PetscMPIInt **olengths2)

Collective on MPI_Comm

### Input Parameters

| comm | - Communicator
| nsends | - number of messages that are to be sent.
| nrecvs | - number of messages being received
| ilengths1, ilengths2 | - array of integers of length sizeof(comm) a non zero ilengths[i] represent a message to i of length ilengths[i]

### Output Parameters

| onodes | - list of node-ids from which messages are expected
| olengths1, olengths2 | - corresponding message lengths

### Notes

With this info, the correct MPI_Irecv() can be posted with the correct from-id, with a buffer with the right amount of memory required.

The calling function deallocates the memory in onodes and olengths

To determine nrecevs, one can use PetscGatherNumberOfMessages()

### See Also

PetscGatherMessageLengths() and PetscGatherNumberOfMessages()

Level:developer
Location:src/sys/utils/mpimesg.c
Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages