f_esmf_xgridcreate Subroutine

subroutine f_esmf_xgridcreate(xgrid, num_sideAGrid, sideAGrid, num_sideAMesh, sideAMesh, num_sideBGrid, sideBGrid, num_sideBMesh, sideBMesh, num_sideAGridPriority, sideAGridPriority, num_sideAMeshPriority, sideAMeshPriority, num_sideBGridPriority, sideBGridPriority, num_sideBMeshPriority, sideBMeshPriority, num_sideAMaskValues, sideAMaskValues, num_sideBMaskValues, sideBMaskValues, storeOverlay, rc)

Uses

  • proc~~f_esmf_xgridcreate~~UsesGraph proc~f_esmf_xgridcreate f_esmf_xgridcreate module~esmf_basemod ESMF_BaseMod proc~f_esmf_xgridcreate->module~esmf_basemod module~esmf_gridmod ESMF_GridMod proc~f_esmf_xgridcreate->module~esmf_gridmod module~esmf_logerrmod ESMF_LogErrMod proc~f_esmf_xgridcreate->module~esmf_logerrmod module~esmf_meshmod ESMF_MeshMod proc~f_esmf_xgridcreate->module~esmf_meshmod module~esmf_utiltypesmod ESMF_UtilTypesMod proc~f_esmf_xgridcreate->module~esmf_utiltypesmod module~esmf_xgridcreatemod ESMF_XGridCreateMod proc~f_esmf_xgridcreate->module~esmf_xgridcreatemod module~esmf_xgridgeombasemod ESMF_XGridGeomBaseMod proc~f_esmf_xgridcreate->module~esmf_xgridgeombasemod module~esmf_xgridmod ESMF_XGridMod proc~f_esmf_xgridcreate->module~esmf_xgridmod module~esmf_basemod->module~esmf_logerrmod module~esmf_basemod->module~esmf_utiltypesmod iso_c_binding iso_c_binding module~esmf_basemod->iso_c_binding module~esmf_initmacrosmod ESMF_InitMacrosMod module~esmf_basemod->module~esmf_initmacrosmod module~esmf_ioutilmod ESMF_IOUtilMod module~esmf_basemod->module~esmf_ioutilmod module~esmf_vmmod ESMF_VMMod module~esmf_basemod->module~esmf_vmmod module~esmf_gridmod->module~esmf_basemod module~esmf_gridmod->module~esmf_logerrmod module~esmf_gridmod->module~esmf_utiltypesmod module~esmf_arraybundlemod ESMF_ArrayBundleMod module~esmf_gridmod->module~esmf_arraybundlemod module~esmf_arraymod ESMF_ArrayMod module~esmf_gridmod->module~esmf_arraymod module~esmf_arrayspecmod ESMF_ArraySpecMod module~esmf_gridmod->module~esmf_arrayspecmod module~esmf_delayoutmod ESMF_DELayoutMod module~esmf_gridmod->module~esmf_delayoutmod module~esmf_distgridmod ESMF_DistGridMod module~esmf_gridmod->module~esmf_distgridmod module~esmf_f90interfacemod ESMF_F90InterfaceMod module~esmf_gridmod->module~esmf_f90interfacemod module~esmf_infomod ESMF_InfoMod module~esmf_gridmod->module~esmf_infomod module~esmf_gridmod->module~esmf_initmacrosmod module~esmf_iofiletypecheckmod ESMF_IOFileTypeCheckMod module~esmf_gridmod->module~esmf_iofiletypecheckmod module~esmf_iogridmosaicmod ESMF_IOGridmosaicMod module~esmf_gridmod->module~esmf_iogridmosaicmod module~esmf_iogridspecmod ESMF_IOGridspecMod module~esmf_gridmod->module~esmf_iogridspecmod module~esmf_ioscripmod ESMF_IOScripMod module~esmf_gridmod->module~esmf_ioscripmod module~esmf_gridmod->module~esmf_ioutilmod module~esmf_localarraymod ESMF_LocalArrayMod module~esmf_gridmod->module~esmf_localarraymod module~esmf_rhandlemod ESMF_RHandleMod module~esmf_gridmod->module~esmf_rhandlemod module~esmf_staggerlocmod ESMF_StaggerLocMod module~esmf_gridmod->module~esmf_staggerlocmod module~esmf_utilcubedspheremod ESMF_UtilCubedSphereMod module~esmf_gridmod->module~esmf_utilcubedspheremod module~esmf_gridmod->module~esmf_vmmod module~esmf_logerrmod->module~esmf_utiltypesmod module~esmf_logerrmod->module~esmf_ioutilmod module~esmf_utilstringmod ESMF_UtilStringMod module~esmf_logerrmod->module~esmf_utilstringmod module~esmf_meshmod->module~esmf_basemod module~esmf_meshmod->module~esmf_gridmod module~esmf_meshmod->module~esmf_logerrmod module~esmf_meshmod->module~esmf_utiltypesmod module~esmf_meshmod->iso_c_binding module~esmf_meshmod->module~esmf_arraymod module~esmf_meshmod->module~esmf_delayoutmod module~esmf_meshmod->module~esmf_distgridmod module~esmf_meshmod->module~esmf_f90interfacemod module~esmf_meshmod->module~esmf_initmacrosmod module~esmf_meshmod->module~esmf_ioscripmod module~esmf_iougridmod ESMF_IOUGridMod module~esmf_meshmod->module~esmf_iougridmod module~esmf_meshmod->module~esmf_ioutilmod module~esmf_meshmod->module~esmf_rhandlemod module~esmf_meshmod->module~esmf_utilcubedspheremod module~esmf_meshmod->module~esmf_vmmod module~esmf_utiltypesmod->iso_c_binding module~esmf_xgridcreatemod->module~esmf_basemod module~esmf_xgridcreatemod->module~esmf_gridmod module~esmf_xgridcreatemod->module~esmf_logerrmod module~esmf_xgridcreatemod->module~esmf_meshmod module~esmf_xgridcreatemod->module~esmf_utiltypesmod module~esmf_xgridcreatemod->module~esmf_xgridgeombasemod module~esmf_xgridcreatemod->module~esmf_xgridmod module~esmf_xgridcreatemod->module~esmf_arraymod module~esmf_xgridcreatemod->module~esmf_distgridmod module~esmf_xgridcreatemod->module~esmf_f90interfacemod module~esmf_gridutilmod ESMF_GridUtilMod module~esmf_xgridcreatemod->module~esmf_gridutilmod module~esmf_xgridcreatemod->module~esmf_initmacrosmod module~esmf_xgridcreatemod->module~esmf_staggerlocmod module~esmf_utilmod ESMF_UtilMod module~esmf_xgridcreatemod->module~esmf_utilmod module~esmf_xgridgeombasemod->module~esmf_gridmod module~esmf_xgridgeombasemod->module~esmf_logerrmod module~esmf_xgridgeombasemod->module~esmf_meshmod module~esmf_xgridgeombasemod->module~esmf_utiltypesmod module~esmf_xgridgeombasemod->module~esmf_distgridmod module~esmf_xgridgeombasemod->module~esmf_initmacrosmod module~esmf_xgridgeombasemod->module~esmf_staggerlocmod module~esmf_xgridmod->module~esmf_basemod module~esmf_xgridmod->module~esmf_gridmod module~esmf_xgridmod->module~esmf_logerrmod module~esmf_xgridmod->module~esmf_meshmod module~esmf_xgridmod->module~esmf_utiltypesmod module~esmf_xgridmod->module~esmf_xgridgeombasemod module~esmf_xgridmod->module~esmf_arraymod module~esmf_xgridmod->module~esmf_distgridmod module~esmf_xgridmod->module~esmf_initmacrosmod module~esmf_xgridmod->module~esmf_utilmod

Arguments

Type IntentOptional Attributes Name
type(ESMF_XGrid) :: xgrid
integer, intent(in) :: num_sideAGrid
type(ESMF_Pointer) :: sideAGrid(num_sideAGrid)
integer, intent(in) :: num_sideAMesh
type(ESMF_Pointer) :: sideAMesh(num_sideAMesh)
integer, intent(in) :: num_sideBGrid
type(ESMF_Pointer) :: sideBGrid(num_sideBGrid)
integer, intent(in) :: num_sideBMesh
type(ESMF_Pointer) :: sideBMesh(num_sideBMesh)
integer, intent(in) :: num_sideAGridPriority
integer :: sideAGridPriority(num_sideAGridPriority)
integer, intent(in) :: num_sideAMeshPriority
integer :: sideAMeshPriority(num_sideAMeshPriority)
integer, intent(in) :: num_sideBGridPriority
integer :: sideBGridPriority(num_sideBGridPriority)
integer, intent(in) :: num_sideBMeshPriority
integer :: sideBMeshPriority(num_sideBMeshPriority)
integer, intent(in) :: num_sideAMaskValues
integer(kind=ESMF_KIND_I4), intent(in) :: sideAMaskValues(num_sideAMaskValues)
integer, intent(in) :: num_sideBMaskValues
integer(kind=ESMF_KIND_I4), intent(in) :: sideBMaskValues(num_sideBMaskValues)
integer, intent(in) :: storeOverlay
integer, intent(out) :: rc

Calls

proc~~f_esmf_xgridcreate~~CallsGraph proc~f_esmf_xgridcreate f_esmf_xgridcreate interface~esmf_meshcreate ESMF_MeshCreate proc~f_esmf_xgridcreate->interface~esmf_meshcreate proc~esmf_logfounderror ESMF_LogFoundError proc~f_esmf_xgridcreate->proc~esmf_logfounderror proc~esmf_xgridcreate ESMF_XGridCreate proc~f_esmf_xgridcreate->proc~esmf_xgridcreate

Source Code

  subroutine f_esmf_xgridcreate(xgrid, &
       num_sideAGrid, sideAGrid, &
       num_sideAMesh, sideAMesh, &
       num_sideBGrid, sideBGrid, &
       num_sideBMesh, sideBMesh, &
       num_sideAGridPriority, sideAGridPriority, &
       num_sideAMeshPriority, sideAMeshPriority, &
       num_sideBGridPriority, sideBGridPriority, &
       num_sideBMeshPriority, sideBMeshPriority, &
       num_sideAMaskValues, sideAMaskValues, &
       num_sideBMaskValues, sideBMaskValues, &
       storeOverlay, &
!       name, &  DON'T WORRY ABOUT NAME RIGHT NOW
       rc)

    use ESMF_XGridMod
    use ESMF_XGridCreateMod
    use ESMF_XGridGeomBaseMod
    use ESMF_UtilTypesMod
    use ESMF_BaseMod
    use ESMF_LogErrMod
    use ESMF_GridMod
    use ESMF_MeshMod

    implicit none

    ! Arguments
    type(ESMF_XGrid)               :: xgrid
    integer, intent(in)            :: num_sideAGrid
    type(ESMF_Pointer)             :: sideAGrid(num_sideAGrid)
    integer, intent(in)            :: num_sideAMesh
    type(ESMF_Pointer)             :: sideAMesh(num_sideAMesh)
    integer, intent(in)            :: num_sideBGrid
    type(ESMF_Pointer)             :: sideBGrid(num_sideBGrid)
    integer, intent(in)            :: num_sideBMesh
    type(ESMF_Pointer)             :: sideBMesh(num_sideBMesh)

    integer, intent(in) :: num_sideAGridPriority
    integer             :: sideAGridPriority(num_sideAGridPriority)
    integer, intent(in) :: num_sideAMeshPriority
    integer             :: sideAMeshPriority(num_sideAMeshPriority)
    integer, intent(in) :: num_sideBGridPriority
    integer             :: sideBGridPriority(num_sideBGridPriority)
    integer, intent(in) :: num_sideBMeshPriority
    integer             :: sideBMeshPriority(num_sideBMeshPriority)

    integer, intent(in)            :: num_sideAMaskValues
    integer(ESMF_KIND_I4),intent(in) :: sideAMaskValues(num_sideAMaskValues)
    integer, intent(in)            :: num_sideBMaskValues
    integer(ESMF_KIND_I4),intent(in) :: sideBMaskValues(num_sideBMaskValues)

    integer, intent(in) :: storeOverlay
!    character(len=*),intent(in)    :: name    DON'T WORRY ABOUT NAME RIGHT NOW
    integer, intent(out)           :: rc              

    ! Local variables
    type(ESMF_Grid),allocatable :: localSideAGrid(:)
    type(ESMF_Mesh),allocatable :: localSideAMesh(:)
    type(ESMF_Grid),allocatable :: localSideBGrid(:)
    type(ESMF_Mesh),allocatable :: localSideBMesh(:)
    logical :: localStoreOverlay
    integer :: localrc
    integer :: i

    ! initialize return code; assume routine not implemented
    rc = ESMF_RC_NOT_IMPL
    localrc = ESMF_RC_NOT_IMPL

    !! Create ESMF acceptable versions of class arrays !!

    ! sideAGrid
    allocate(localSideAGrid(num_sideAGrid))
    do i=1,num_sideAGrid
       localSideAGrid(i)%this=sideAGrid(i)
       ESMF_INIT_SET_CREATED(localSideAGrid(i))
    enddo

    ! sideAMesh
    allocate(localSideAMesh(num_sideAMesh))
    do i=1,num_sideAMesh
       localSideAMesh(i)=ESMF_MeshCreate(sideAMesh(i), rc=localrc)
       if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, &
            ESMF_CONTEXT, rcToReturn=rc)) return
    enddo

    ! sideBGrid
    allocate(localSideBGrid(num_sideBGrid))
    do i=1,num_sideBGrid
       localSideBGrid(i)%this=sideBGrid(i)
       ESMF_INIT_SET_CREATED(localSideBGrid(i))
    enddo

    ! sideBMesh
    allocate(localSideBMesh(num_sideBMesh))
    do i=1,num_sideBMesh
       localSideBMesh(i)=ESMF_MeshCreate(sideBMesh(i), rc=localrc)
       if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, &
            ESMF_CONTEXT, rcToReturn=rc)) return
    enddo


    ! Translate storeOverlay
    localStoreOverlay=.false.
    if (storeOverlay .ne. 0) localStoreOverlay=.true.


    ! Call into ESMF public interface
    xgrid=ESMF_XGridCreate(&
         sideAGrid=localSideAGrid, &
         sideAMesh=localSideAMesh, &
         sideBGrid=localSideBGrid, &
         sideBMesh=localSideBMesh, &
         sideAGridPriority=sideAGridPriority, & 
         sideAMeshPriority=sideAMeshPriority, &
         sideBGridPriority=sideBGridPriority, &
         sideBMeshPriority=sideBMeshPriority, &
         sideAMaskValues=sideAMaskValues, &
         sideBMaskValues=sideBMaskValues, &
         storeOverlay=localstoreOverlay, &
         ! name, &  DON'T WORRY ABOUT NAME RIGHT NOW
         rc=localrc)
    if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, &
         ESMF_CONTEXT, rcToReturn=rc)) return
    
    ! Deallocate
    deallocate(localSideAGrid)
    deallocate(localSideAMesh)
    deallocate(localSideBGrid)
    deallocate(localSideBMesh)

    ! return success
    rc = ESMF_SUCCESS
  
  end subroutine f_esmf_xgridcreate