# MPI_Type_create_darray

Creates a datatype corresponding to a distributed, multidimensional array

## Synopsis

    #include "mpi.h"
    int MPI_Type_create_darray(int size, int rank, int ndims,
                             int *array_of_gsizes, int *array_of_distribs,
                               int *array_of_dargs, int *array_of_psizes,
                               int order, MPI_Datatype oldtype,
                               MPI_Datatype *newtype)

## Input Parameters

| size | size of process group (positive integer)
| rank | rank in process group (nonnegative integer)
| ndims | number of array dimensions as well as process grid dimensions (positive integer)
| array_of_gsizes | number of elements of type oldtype in each dimension of global array (array of positive integers)
| array_of_distribs | distribution of array in each dimension (array of state)
| array_of_dargs | distribution argument in each dimension (array of positive integers)
| array_of_psizes | size of process grid in each dimension (array of positive integers)
| order | array storage order flag (state)
| oldtype | old datatype (handle)

## Output Parameters

newtype
  new datatype (handle)

## Notes for Fortran

All MPI routines in Fortran (except for `MPI_WTIME` and `MPI_WTICK`) have an additional argument `ierr` at the end of the argument list. `ierr` is an integer and has the same meaning as the return value of the routine in C. In Fortran, MPI routines are subroutines, and are invoked with the `call` statement.

All MPI objects (e.g., `MPI_Datatype`, `MPI_Comm`) are of type `INTEGER` in Fortran.

Location:darray.c