subroutine f_esmf_gridcreatecubedsphere(gridp, tilesize, &
regDecompPTile, len11, len12, rdpresent, &
decompFlagPTile, len21, len22, dfpresent, &
deLabelList, len3, llpresent, &
!delayout, &
staggerLocList, len4, &
name, &
rc)
use ESMF_UtilTypesMod
use ESMF_LogErrMod
use ESMF_GridMod
use ESMF_DistGridMod
use ESMF_StaggerLocMod
implicit none
! arguments
type(ESMF_Pointer) :: gridp
integer, intent(in) :: len11, len12, len21, len22, len3, len4
integer :: tilesize
integer :: regDecompPTile(len11, len12)
integer :: rdpresent, dfpresent, llpresent
integer :: decompFlagPTile(len21, len22)
integer :: deLabelList(len3)
!type(ESMF_DELayout) :: delayout
integer :: staggerLocList(len4)
character(len=*) :: name
integer, intent(out) :: rc
type(ESMF_Grid) :: grid
type(ESMF_Decomp_Flag) :: decompFlagPTile_local(len21, len22)
type(ESMF_StaggerLoc) :: staggerLocList_local(len4)
integer :: i, j
! initialize return code; assume routine not implemented
rc = ESMF_RC_NOT_IMPL
! glue together decompFlagPTile
if (dfpresent == 1) then
do i = 1, len21
do j = 1, len22
if (decompFlagPTile(i, j) == 1) then
decompFlagPTile_local(i, j) = ESMF_DECOMP_BALANCED
else if (decompFlagPTile(i, j) == 2) then
decompFlagPTile_local(i, j) = ESMF_DECOMP_RESTFIRST
else if (decompFlagPTile(i, j) == 3) then
decompFlagPTile_local(i, j) = ESMF_DECOMP_RESTLAST
else if (decompFlagPTile(i, j) == 4) then
decompFlagPTile_local(i, j) = ESMF_DECOMP_CYCLIC
endif
enddo
enddo
endif
do i = 1, len4
if (staggerLocList(i) == 0) then
staggerLocList_local(i) = ESMF_STAGGERLOC_CENTER
else if (staggerLocList(i) == 3) then
staggerLocList_local(i) = ESMF_STAGGERLOC_CORNER
endif
enddo
grid = ESMF_GridCreateCubedSphere(tilesize, &
regDecompPTile=regDecompPTile, &
!decompFlagPTile=decompFlagPTile_local, &
!deLabelList=deLabelList, &
!delayout=delayout, &
staggerLocList=staggerLocList_local, &
name=name, &
rc=rc)
if (ESMF_LogFoundError(rc, ESMF_ERR_PASSTHRU, &
ESMF_CONTEXT, rcToReturn=rc)) return
gridp = grid%this
rc = ESMF_SUCCESS
end subroutine f_esmf_gridcreatecubedsphere