我正在尝试在Fortran 90的MPI结构中打包1D和2D双精度数组。我已经在C ++中成功完成了一个非常相似的问题,该过程似乎几乎完全相同,但是我似乎无法找出我在哪里出错了,尽管MPI错误代码非常有帮助...
我最好的猜测是问题出在块长度或位移计算上。当对MPI_RECV()的调用被注释掉时,代码将编译并运行,但是当取消注释时会导致错误。
main.f90
program main
use mymodule
call MPI_INIT(ierr)
call MPI_COMM_SIZE(MPI_COMM_WORLD, nPROC, ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD, myID, ierr)
call PASS_MESH_MPI()
call MPI_FINALIZE(ierr)
end program
Run Code Online (Sandbox Code Playgroud)
mymodule.f90
module mymodule
use mpi
double precision, dimension(:,:) :: U(0:10,0:10)
double precision, dimension(:) :: r(0:10), z(0:10)
integer, public :: ierr, nPROC, nWRs, myID, stat(MPI_STATUS_SIZE)
type mytype
double precision, dimension(:,:), allocatable :: U
double precision, dimension(:), allocatable :: r
double precision, dimension(:), allocatable :: z
end type
contains
subroutine PASS_MESH_MPI()
implicit none
type(mytype) :: package
integer …Run Code Online (Sandbox Code Playgroud)