ESMF_GridToMesh Function

public function ESMF_GridToMesh(grid, staggerLoc, isSphere, isLatLonDeg, maskValues, regridConserve, rc)

Arguments

Type IntentOptional Attributes Name
type(ESMF_Grid), intent(in) :: grid
type(ESMF_StaggerLoc), intent(in) :: staggerLoc
integer, intent(in) :: isSphere
logical, intent(in), optional :: isLatLonDeg
integer(kind=ESMF_KIND_I4), optional :: maskValues(:)
type(ESMF_RegridConserve), intent(in), optional :: regridConserve
integer, intent(out), optional :: rc

Return Value type(ESMF_Mesh)


Calls

proc~~esmf_gridtomesh~~CallsGraph proc~esmf_gridtomesh ESMF_GridToMesh c_esmc_gridtomesh c_esmc_gridtomesh proc~esmf_gridtomesh->c_esmc_gridtomesh interface~esmf_gridget ESMF_GridGet proc~esmf_gridtomesh->interface~esmf_gridget interface~esmf_interarraycreate ESMF_InterArrayCreate proc~esmf_gridtomesh->interface~esmf_interarraycreate interface~esmf_meshcreate ESMF_MeshCreate proc~esmf_gridtomesh->interface~esmf_meshcreate proc~esmf_interarraydestroy ESMF_InterArrayDestroy proc~esmf_gridtomesh->proc~esmf_interarraydestroy proc~esmf_logfounderror ESMF_LogFoundError proc~esmf_gridtomesh->proc~esmf_logfounderror proc~esmf_gridgetdefault ESMF_GridGetDefault interface~esmf_gridget->proc~esmf_gridgetdefault proc~esmf_gridgetplocalde ESMF_GridGetPLocalDe interface~esmf_gridget->proc~esmf_gridgetplocalde proc~esmf_gridgetplocaldepsloc ESMF_GridGetPLocalDePSloc interface~esmf_gridget->proc~esmf_gridgetplocaldepsloc proc~esmf_gridgetpsloc ESMF_GridGetPSloc interface~esmf_gridget->proc~esmf_gridgetpsloc proc~esmf_gridgetpslocptile ESMF_GridGetPSlocPTile interface~esmf_gridget->proc~esmf_gridgetpslocptile proc~esmf_interarraycreateptr ESMF_InterArrayCreatePtr interface~esmf_interarraycreate->proc~esmf_interarraycreateptr proc~esmf_interarraycreatetrg ESMF_InterArrayCreateTrg interface~esmf_interarraycreate->proc~esmf_interarraycreatetrg proc~esmf_meshcreate1part ESMF_MeshCreate1Part interface~esmf_meshcreate->proc~esmf_meshcreate1part proc~esmf_meshcreate3part ESMF_MeshCreate3Part interface~esmf_meshcreate->proc~esmf_meshcreate3part proc~esmf_meshcreateeasyelems1type ESMF_MeshCreateEasyElems1Type interface~esmf_meshcreate->proc~esmf_meshcreateeasyelems1type proc~esmf_meshcreateeasyelemsgen ESMF_MeshCreateEasyElemsGen interface~esmf_meshcreate->proc~esmf_meshcreateeasyelemsgen proc~esmf_meshcreatefromdg ESMF_MeshCreateFromDG interface~esmf_meshcreate->proc~esmf_meshcreatefromdg proc~esmf_meshcreatefromfile ESMF_MeshCreateFromFile interface~esmf_meshcreate->proc~esmf_meshcreatefromfile proc~esmf_meshcreatefromgrid ESMF_MeshCreateFromGrid interface~esmf_meshcreate->proc~esmf_meshcreatefromgrid proc~esmf_meshcreatefrommeshes ESMF_MeshCreateFromMeshes interface~esmf_meshcreate->proc~esmf_meshcreatefrommeshes proc~esmf_meshcreatefrompointer ESMF_MeshCreateFromPointer interface~esmf_meshcreate->proc~esmf_meshcreatefrompointer proc~esmf_meshcreateredist ESMF_MeshCreateRedist interface~esmf_meshcreate->proc~esmf_meshcreateredist proc~esmf_logfounddeallocerror ESMF_LogFoundDeallocError proc~esmf_interarraydestroy->proc~esmf_logfounddeallocerror esmf_breakpoint esmf_breakpoint proc~esmf_logfounderror->esmf_breakpoint proc~esmf_logrc2msg ESMF_LogRc2Msg proc~esmf_logfounderror->proc~esmf_logrc2msg proc~esmf_logwrite ESMF_LogWrite proc~esmf_logfounderror->proc~esmf_logwrite

Called by

proc~~esmf_gridtomesh~~CalledByGraph proc~esmf_gridtomesh ESMF_GridToMesh proc~b_or_p_gridtomesh b_or_p_GridToMesh proc~b_or_p_gridtomesh->proc~esmf_gridtomesh proc~conserve_gridtomesh conserve_GridToMesh proc~conserve_gridtomesh->proc~esmf_gridtomesh proc~esmf_fieldregridgetarea ESMF_FieldRegridGetArea proc~esmf_fieldregridgetarea->proc~esmf_gridtomesh proc~esmf_fieldregridgetiwts ESMF_FieldRegridGetIwts proc~esmf_fieldregridgetiwts->proc~esmf_gridtomesh proc~esmf_locstreamcreatebybkggrid ESMF_LocStreamCreateByBkgGrid proc~esmf_locstreamcreatebybkggrid->proc~esmf_gridtomesh proc~esmf_xgridcreate ESMF_XGridCreate proc~esmf_xgridcreate->proc~esmf_gridtomesh proc~make_mesh_sph make_mesh_sph proc~make_mesh_sph->proc~esmf_gridtomesh proc~make_mesh_sph~2 make_mesh_sph proc~make_mesh_sph~2->proc~esmf_gridtomesh proc~test_regrid2xg_online test_regrid2xg_online proc~test_regrid2xg_online->proc~esmf_gridtomesh proc~test_regrid2xgsph~2 test_regrid2xgSph proc~test_regrid2xgsph~2->proc~esmf_gridtomesh program~esmf_gridtomeshutest ESMF_GridToMeshUTest program~esmf_gridtomeshutest->proc~esmf_gridtomesh

Source Code

   function ESMF_GridToMesh(grid, staggerLoc, isSphere, isLatLonDeg, maskValues, regridConserve, rc)
!
!
! !RETURN VALUE:
    type(ESMF_Mesh)                               :: ESMF_GridToMesh
!
! !ARGUMENTS:
    type(ESMF_Grid), intent(in)                :: grid
    type(ESMF_StaggerLoc),  intent(in)            :: staggerLoc
    integer,                intent(in)            :: isSphere
    logical, intent(in),   optional               :: isLatLonDeg
    type(ESMF_RegridConserve), intent(in), optional :: regridConserve
    integer(ESMF_KIND_I4), optional               :: maskValues(:)
    integer, intent(out) , optional               :: rc
!
! !DESCRIPTION:
!   Create a mesh object with the same topology as the grid.
!
!   \begin{description}
!   \item [grid]
!         The grid to copy.
!   \item [staggerLoc]
!         Stagger location on grid to build.
!   \item [isSphhere]
!         1 = a spherical grid make peridoic
!   \item [isLatLonDeg]
!         true coords of grids are lat lon in deg, default depends on isSphere
!         if isSphere=1 then default is true, else is false.
!   \item [regridConserve]
!         ESMF\_REGRID\_CONSERVE\_ON turns on the conservative regridding
!   \item [{[rc]}]
!         Return code; equals {\tt ESMF\_SUCCESS} if there are no errors.
!   \end{description}
!
!EOPI
!------------------------------------------------------------------------------
    integer :: localrc
    type(ESMF_Pointer) :: theMesh
    type(ESMF_InterArray) :: maskValuesArg
    type(ESMF_Index_Flag) :: indexflag
    type(ESMF_RegridConserve) :: lregridConserve
    integer :: localIsLatLonDeg
    type(ESMF_CoordSys_Flag) :: coordSys
    integer :: dimCount

    localrc = ESMF_SUCCESS

    ! Error check Grid
    call ESMF_GridGet(grid, indexflag=indexflag, rc=localrc)
    if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, &
          ESMF_CONTEXT, rcToReturn=rc)) return

    ! Handle optional conserve argument
    if (present(regridConserve)) then
       lregridConserve=regridConserve
    else
       lregridConserve=ESMF_REGRID_CONSERVE_OFF
    endif

    ! Handle optional isLatLonDeg argument
    if (present(isLatLonDeg)) then
       if (isLatLonDeg) then
          localIsLatLonDeg=1
       else
          localIsLatLonDeg=0
       endif
    else
       if (isSphere .eq. 1) then
           localIsLatLonDeg=1
       else
           localIsLatLonDeg=0
       endif
    endif


    ! convert mask values
    maskValuesArg = ESMF_InterArrayCreate(maskValues, rc=localrc)
        if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, &
          ESMF_CONTEXT, rcToReturn=rc)) return

    call c_esmc_gridtomesh(grid, staggerLoc%staggerloc, isSphere, &
      localIsLatLonDeg, theMesh, maskValuesArg, &
      lregridConserve%regridconserve, localrc)
    if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, &
            ESMF_CONTEXT, rcToReturn=rc)) return

    call ESMF_InterArrayDestroy(maskValuesArg, rc=localrc)
    if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, &
            ESMF_CONTEXT, rcToReturn=rc)) return

    ESMF_GridToMesh = ESMF_MeshCreate(theMesh)

    ! Set these here, eventually this will happen automatically internally inside ESMF_MeshCreate()
    call ESMF_GridGet(grid,              &
                      coordSys=coordSys, &
                      dimCount=dimCount, &
                      rc=localrc)
    if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, &
            ESMF_CONTEXT, rcToReturn=rc)) return

    if (present(rc)) rc = ESMF_SUCCESS

    end function ESMF_GridToMesh