passing data between different communicators using PETSc

Khan, Irfan irfan.khan at
Mon Mar 9 01:24:53 CDT 2009

I have divided my processes into fluid compute ranks (n) and solid compute ranks (m), where n > m. For most of the part, the fluid compute ranks communicate among themselves and so do the solid compute nodes. However twice during each timestep the some data is transfered between the fluid and solid compute nodes. 

For instance, the fluid compute nodes generate fluid force on the solid body that needs to be transmitted every time step and the solid compute node calculate the resulting displacement from the forces and transmit back the displacement information to the fluid nodes. The force and displacement vectors for total nodes are distributed randomly on the fluid and solid nodes. I have attached a pdf that basically shows that the distribution of vectors is random

I am currently trying to use MPI_Allgatherv to accumulate all the data from send ranks to receive ranks, but I am sure this will be very costly for large data distributed over many ranks. Is there an efficient way to do this using PETSc?

Please let me know if you need more information or better explanation.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: LBM-FEM-communicationNodes.pdf
Type: application/pdf
Size: 186076 bytes
Desc: not available
URL: <>

More information about the petsc-users mailing list