f_esmf_meshcreatefromfile Subroutine

subroutine f_esmf_meshcreatefromfile(meshp, filename, fileTypeFlag, convertToDual, addUserArea, meshname, mnpresent, maskFlag, mfpresent, varname, vnpresent, parametricDim, spatialDim, coordSys, rc)

Uses

  • proc~~f_esmf_meshcreatefromfile~~UsesGraph proc~f_esmf_meshcreatefromfile f_esmf_meshcreatefromfile module~esmf_logerrmod ESMF_LogErrMod proc~f_esmf_meshcreatefromfile->module~esmf_logerrmod module~esmf_meshmod ESMF_MeshMod proc~f_esmf_meshcreatefromfile->module~esmf_meshmod module~esmf_utiltypesmod ESMF_UtilTypesMod proc~f_esmf_meshcreatefromfile->module~esmf_utiltypesmod module~esmf_logerrmod->module~esmf_utiltypesmod module~esmf_ioutilmod ESMF_IOUtilMod module~esmf_logerrmod->module~esmf_ioutilmod module~esmf_utilstringmod ESMF_UtilStringMod module~esmf_logerrmod->module~esmf_utilstringmod module~esmf_meshmod->module~esmf_logerrmod module~esmf_meshmod->module~esmf_utiltypesmod iso_c_binding iso_c_binding module~esmf_meshmod->iso_c_binding module~esmf_arraymod ESMF_ArrayMod module~esmf_meshmod->module~esmf_arraymod module~esmf_basemod ESMF_BaseMod module~esmf_meshmod->module~esmf_basemod module~esmf_delayoutmod ESMF_DELayoutMod module~esmf_meshmod->module~esmf_delayoutmod module~esmf_distgridmod ESMF_DistGridMod module~esmf_meshmod->module~esmf_distgridmod module~esmf_f90interfacemod ESMF_F90InterfaceMod module~esmf_meshmod->module~esmf_f90interfacemod module~esmf_gridmod ESMF_GridMod module~esmf_meshmod->module~esmf_gridmod module~esmf_initmacrosmod ESMF_InitMacrosMod module~esmf_meshmod->module~esmf_initmacrosmod module~esmf_ioscripmod ESMF_IOScripMod 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_rhandlemod ESMF_RHandleMod module~esmf_meshmod->module~esmf_rhandlemod module~esmf_utilcubedspheremod ESMF_UtilCubedSphereMod module~esmf_meshmod->module~esmf_utilcubedspheremod module~esmf_vmmod ESMF_VMMod module~esmf_meshmod->module~esmf_vmmod module~esmf_utiltypesmod->iso_c_binding

Arguments

Type IntentOptional Attributes Name
type(ESMF_Pointer) :: meshp
character(len=*), intent(in) :: filename
type(ESMF_FileFormat_Flag) :: fileTypeFlag
type(ESMF_Logical) :: convertToDual
type(ESMF_Logical) :: addUserArea
character(len=*) :: meshname
integer :: mnpresent
type(ESMF_MeshLoc) :: maskFlag
integer :: mfpresent
character(len=*) :: varname
integer :: vnpresent
integer, intent(out) :: parametricDim
integer, intent(out) :: spatialDim
type(ESMF_CoordSys_Flag), intent(out) :: coordSys
integer, intent(out) :: rc

Calls

proc~~f_esmf_meshcreatefromfile~~CallsGraph proc~f_esmf_meshcreatefromfile f_esmf_meshcreatefromfile interface~esmf_meshcreate ESMF_MeshCreate proc~f_esmf_meshcreatefromfile->interface~esmf_meshcreate proc~esmf_logfounderror ESMF_LogFoundError proc~f_esmf_meshcreatefromfile->proc~esmf_logfounderror proc~esmf_logseterror ESMF_LogSetError proc~f_esmf_meshcreatefromfile->proc~esmf_logseterror proc~esmf_meshget ESMF_MeshGet proc~f_esmf_meshcreatefromfile->proc~esmf_meshget proc~esmf_meshgetintptr ESMF_MeshGetIntPtr proc~f_esmf_meshcreatefromfile->proc~esmf_meshgetintptr

Source Code

   subroutine f_esmf_meshcreatefromfile(meshp, filename, fileTypeFlag, &
                                        convertToDual, &
                                        addUserArea, &
                                        meshname, mnpresent, &
                                        maskFlag, mfpresent, &
                                        varname, vnpresent, &
                                        parametricDim, &
                                        spatialDim, &
                                        coordSys, &
                                        rc)
   use ESMF_UtilTypesMod
   use ESMF_LogErrMod
   use ESMF_MeshMod

   implicit none

   ! arguments
   type(ESMF_Pointer)             :: meshp
   character(len=*), intent(in)   :: filename
   type(ESMF_FileFormat_Flag)     :: fileTypeFlag
   integer                        :: mnpresent
   integer                        :: mfpresent, vnpresent
   type(ESMF_Logical)             :: convertToDual
   type(ESMF_Logical)             :: addUserArea
   character(len=*)               :: meshname
   type(ESMF_MeshLoc)             :: maskFlag
   character(len=*)               :: varname
   integer, intent(out)           :: parametricDim
   integer, intent(out)           :: spatialDim
   type(ESMF_CoordSys_Flag), intent(out) :: coordSys
   integer, intent(out)           :: rc

   type(ESMF_Mesh) :: mesh
   logical :: convertToDual_loc
   logical :: addUserArea_loc

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

   convertToDual_loc = convertToDual
   addUserArea_loc = addUserArea

   if (filetypeflag == ESMF_FILEFORMAT_SCRIP) then
      mesh = ESMF_MeshCreate(filename, fileTypeFlag, &
                             convertToDual=convertToDual_loc, &
                             addUserArea=addUserArea_loc, rc=rc)
      if (ESMF_LogFoundError(rc, ESMF_ERR_PASSTHRU, &
          ESMF_CONTEXT, rcToReturn=rc)) return
   elseif (filetypeflag == ESMF_FILEFORMAT_ESMFMESH) then
      mesh = ESMF_MeshCreate(filename, fileTypeFlag, &
                             addUserArea=addUserArea_loc, rc=rc)
      if (ESMF_LogFoundError(rc, ESMF_ERR_PASSTHRU, &
          ESMF_CONTEXT, rcToReturn=rc)) return
   elseif (filetypeflag == ESMF_FILEFORMAT_UGRID) then
       ! handle the optional arguments
       if (mnpresent == 1 .and. mfpresent == 1 .and. vnpresent == 1) then
                  mesh = ESMF_MeshCreate(filename, fileTypeFlag, &
                                         maskFlag=maskFlag, &
                                         varname=varname, rc=rc)
          if (ESMF_LogFoundError(rc, ESMF_ERR_PASSTHRU, &
              ESMF_CONTEXT, rcToReturn=rc)) return
       elseif (mnpresent == 1) then
                  mesh = ESMF_MeshCreate(filename, fileTypeFlag, &
                                         rc=rc)
          if (ESMF_LogFoundError(rc, ESMF_ERR_PASSTHRU, &
              ESMF_CONTEXT, rcToReturn=rc)) return
       elseif (mnpresent == 1 .and. mfpresent == 1 .and. vnpresent == 1) then
                  mesh = ESMF_MeshCreate(filename, fileTypeFlag, &
                                         maskFlag=maskFlag, &
                                 varname=varname, rc=rc)
          if (ESMF_LogFoundError(rc, ESMF_ERR_PASSTHRU, &
              ESMF_CONTEXT, rcToReturn=rc)) return
       elseif (mnpresent == 1) then
                  mesh = ESMF_MeshCreate(filename, fileTypeFlag, &
                                         rc=rc)
          if (ESMF_LogFoundError(rc, ESMF_ERR_PASSTHRU, &
              ESMF_CONTEXT, rcToReturn=rc)) return
       else
          PRINT*, "ESMF_Mesh_C.F90(f_esmf_meshcreatefromfile): incorrect args for UGRID"
          call ESMF_LogSetError(rcToCheck=ESMF_RC_ARG_WRONG, &
                                        msg="- incorrect args for UGRID", &
                                ESMF_CONTEXT, rcToReturn=rc)
          if (ESMF_LogFoundError(rc, ESMF_ERR_PASSTHRU, &
              ESMF_CONTEXT, rcToReturn=rc)) return
       endif
   else
   endif

    ! Get internal pointer (to native mesh ... )
   call ESMF_MeshGetIntPtr(mesh, meshp, rc=rc)
   if (ESMF_LogFoundError(rc, ESMF_ERR_PASSTHRU, &
        ESMF_CONTEXT, rcToReturn=rc)) return

   ! Get other information
   call ESMF_MeshGet(mesh, &
                     parametricDim=parametricDim, &
                     spatialDim=spatialDim, &
                     coordSys=coordSys, rc=rc)
   if (ESMF_LogFoundError(rc, ESMF_ERR_PASSTHRU, &
        ESMF_CONTEXT, rcToReturn=rc)) return

   ! Return success
   rc = ESMF_SUCCESS

   end subroutine f_esmf_meshcreatefromfile