function mk_field_common(tk, regDecomp, minIndex, maxIndex, indexflag, name, ungriddedLBound, ungriddedUBound, rc) result(field)
type(ESMF_TypeKind_Flag), intent(in) :: tk
integer, dimension(:), intent(in) :: regDecomp
integer, dimension(:), intent(in) :: minIndex
integer, dimension(:), intent(in) :: maxIndex
type(ESMF_Index_Flag), intent(in) :: indexflag
character(len=*), intent(in) :: name
integer, optional, intent(in) :: ungriddedLBound(:)
integer, optional, intent(in) :: ungriddedUBound(:)
integer, optional, intent(out) :: rc
character(len=*), parameter :: GRID_SUFFIX = '_grid'
character(len=*), parameter :: FIELD_SUFFIX = '_field'
type(ESMF_Field) :: field
type(ESMF_Grid) :: grid
integer :: status
grid = mk_grid(regDecomp=regDecomp, minIndex=minIndex, maxIndex=maxIndex, indexflag = indexflag, grid_name = name // GRID_SUFFIX, _RC)
field = ESMF_FieldCreate(grid, typekind = tk, name = name // FIELD_SUFFIX, ungriddedLBound = ungriddedLBound, ungriddedUBound = ungriddedUBound, _RC)
_RETURN(_SUCCESS)
end function mk_field_common