如何在C中并行发送/接收包含MPI数组的嵌套结构?

如何在C中并行发送/接收包含MPI数组的嵌套结构?,c,struct,parallel-processing,mpi,C,Struct,Parallel Processing,Mpi,我正在尝试用MPI开发我的CFD解算器。基本上,我的第一个结构的objectcell包含一个成员U,该成员与第二个结构成员ele1、ele2、ele3、ele4相关,每个成员都是一个二维数组 struct vectore_element{ double ele1 [N][M]; double ele2 [N][M]; double ele3 [N][M]; double ele4 [N][M]; }; struct cell center{ s

我正在尝试用MPI开发我的CFD解算器。基本上,我的第一个结构的object
cell
包含一个成员
U
,该成员与第二个结构成员
ele1、ele2、ele3、ele4
相关,每个成员都是一个二维数组

struct vectore_element{
    double ele1 [N][M];
    double ele2 [N][M];
    double ele3 [N][M];
    double ele4 [N][M];
    };

struct cell center{
     struct vector_element U;
}cell;
我的问题是,如何使用这些结构的散布来在任务之间划分数组? 我如何从一个进程向另一个进程发送/接收部分信息


基本上,如何为此类数据类型创建MPI数据类型?

这是否回答了您的问题。请注意,在您的情况下,只打包数据结构可能会快一点,尽管AFAIK无法在保持数据结构的同时以可移植的方式进行打包。该结构非常规则,因此我认为您可以一次性“分散”它。请编辑您的问题,以准确描述您所说的分散是什么意思,最好包括一个自包含和自测试的示例(如果需要,我将填补与数据类型创建和分散调用相关的空白)。