def num_owned_indices_from_cyclic(dd):
    """Given a dimension dictionary `dd` with dist_type 'c', return the number
    of indices owned.
    """
    block_size = dd.get('block_size', 1)
    global_nblocks, partial = divmod(dd['size'], block_size)
    local_nblocks = ((global_nblocks - 1 - dd['proc_grid_rank']) //
                     dd['proc_grid_size']) + 1
    local_partial = partial if dd['proc_grid_rank'] == 0 else 0
    local_size = local_nblocks * dd['block_size'] + local_partial
    return local_size