6 #include "petsc/finclude/petsc.h" 9 INTEGER,
DIMENSION(:),
INTENT(IN) :: ndim
10 INTEGER,
INTENT(OUT) :: comm_cart
11 INTEGER,
DIMENSION(:),
POINTER :: comm_one_d, coord_cart
12 LOGICAL,
DIMENSION(SIZE(ndim)) :: period, remain
14 INTEGER :: dim, nb_procs, code, n, i, rank
17 CALL mpi_comm_size(petsc_comm_world, nb_procs, code)
24 WRITE(*,*)
' CREATE_CART_COMM: Nb of procs not compatible with Cartesian decomposition' 29 ALLOCATE(comm_one_d(dim),coord_cart(dim))
32 CALL mpi_cart_create(petsc_comm_world, dim, ndim, period, reorder, comm_cart, code)
33 CALL mpi_comm_rank(comm_cart, rank, code)
34 CALL mpi_cart_coords(comm_cart, rank, dim, coord_cart, code)
40 CALL mpi_cart_sub(comm_cart, remain, comm_one_d(i), code)
subroutine, public create_cart_comm(ndim, comm_cart, comm_one_d, coord_cart)