void mpi_cart_map_f(MPI_Fint *comm, MPI_Fint *ndims, MPI_Fint *dims, MPI_Flogical *periods, MPI_Fint *newrank, MPI_Fint *ierr) { MPI_Comm c_comm; int size; OMPI_ARRAY_NAME_DECL(dims); OMPI_LOGICAL_ARRAY_NAME_DECL(periods); OMPI_SINGLE_NAME_DECL(newrank); c_comm = MPI_Comm_f2c(*comm); size = OMPI_FINT_2_INT(*ndims); OMPI_ARRAY_FINT_2_INT(dims, size); OMPI_ARRAY_LOGICAL_2_INT(periods, size); *ierr = OMPI_INT_2_FINT(MPI_Cart_map(c_comm, OMPI_FINT_2_INT(*ndims), OMPI_ARRAY_NAME_CONVERT(dims), OMPI_LOGICAL_ARRAY_NAME_CONVERT(periods), OMPI_SINGLE_NAME_CONVERT(newrank))); OMPI_ARRAY_FINT_2_INT_CLEANUP(dims); OMPI_ARRAY_INT_2_LOGICAL(periods, size); OMPI_ARRAY_LOGICAL_2_INT_CLEANUP(periods); OMPI_SINGLE_INT_2_FINT(newrank); }
FORTRAN_API void FORT_CALL mpi_cart_map_ ( MPI_Fint *comm_old, MPI_Fint *ndims, MPI_Fint *dims, MPI_Fint *periods, MPI_Fint *newrank, MPI_Fint *__ierr ) { int lperiods[20], i; int ldims[20]; int lnewrank; static char myname[] = "MPI_CART_MAP"; if ((int)*ndims > 20) { struct MPIR_COMMUNICATOR *comm_old_ptr; comm_old_ptr = MPIR_GET_COMM_PTR(MPI_Comm_f2c(*comm_old)); *__ierr = MPIR_Err_setmsg( MPI_ERR_DIMS, MPIR_ERR_DIMS_TOOLARGE, myname, (char *)0, (char *)0, (int)*ndims, 20 ); *__ierr = MPIR_ERROR( comm_old_ptr, *__ierr, myname ); return; } for (i=0; i<(int)*ndims; i++) { lperiods[i] = MPIR_FROM_FLOG(periods[i]); ldims[i] = (int)dims[i]; } *__ierr = MPI_Cart_map( MPI_Comm_f2c(*comm_old), (int)*ndims, ldims, lperiods, &lnewrank); *newrank = (MPI_Fint)lnewrank; }
FORT_DLL_SPEC void FORT_CALL mpi_cart_map_ ( MPI_Fint *v1, MPI_Fint *v2, MPI_Fint *v3, MPI_Fint *v4, MPI_Fint *v5, MPI_Fint *ierr ){ *ierr = MPI_Cart_map( (MPI_Comm)(*v1), *v2, v3, v4, v5 ); }