def get_block_index(axis_len, axis_size, axis_coord):
    """ Get start/end array index range along axis for data block.

    Parameters
    ----------
    axis_len : int
        Length of array data along axis.
    axis_size : int
        Number of processes along axis.
    axis_coord : int
        Cartesian coorindate along axis for local process.

    Returns
    -------
    [start_index, end_index) : tuple
        Index range along axis for data block.
    """
    axis_num = axis_len // axis_size
    axis_rem = axis_len % axis_size

    if axis_coord < axis_rem:
        local_len = axis_num + 1
        start_index = axis_coord * local_len
    else:
        local_len = axis_num
        start_index = \
            axis_rem * (axis_num + 1) + (axis_coord - axis_rem) * axis_num
    end_index = start_index + local_len

    return (start_index, end_index)