subroutine test_mesh_create_from_med_EM_file(correct, rc)
logical :: correct
integer :: rc
type(ESMF_Mesh) :: mesh
integer :: petCount, localPet
type(ESMF_VM) :: vm
type(ESMF_DistGrid) :: nodeDistgrid, elemDistgrid
integer, allocatable :: elemIds(:)
integer :: numElems, numPerPet, numThisPet
integer :: minId,maxId
integer :: i, pos
! Init correct
correct=.true.
! get global VM
call ESMF_VMGetGlobal(vm, rc=rc)
if (rc /= ESMF_SUCCESS) return
call ESMF_VMGet(vm, localPet=localPet, petCount=petCount, rc=rc)
if (rc /= ESMF_SUCCESS) return
! Number of elems in file
numElems=936
! Approx. number per PET
numPerPet=numElems/petCount
! Figure out range for this PET
minId=localPet*numPerPet+1
maxId=(localPet+1)*numPerPet
! If this Pet is last, put the rest there
if (localPet .eq. petCount-1) maxId=numElems
!write(*,*) localPet,"# ",minId,maxId
! Allocate elemIds
allocate(elemIds(maxId-minId+1))
! Fill
pos=1
do i=minId,maxId
elemIds(pos)=i
pos=pos+1
enddo
! Create element Distgrid
elemdistgrid=ESMF_DistGridCreate(elemIds, rc=rc)
if (rc /= ESMF_SUCCESS) return
! Create Mesh from file
mesh=ESMF_MeshCreate("data/ne4np4-esmf.nc", &
fileformat=ESMF_FILEFORMAT_ESMFMESH, &
elementDistgrid=elemDistgrid, &
rc=rc)
if (rc /= ESMF_SUCCESS) return
!! Write mesh for debugging
! call ESMF_MeshWrite(mesh,"test_mesh",rc=rc)
! if (rc /= ESMF_SUCCESS) return
! Get rid of Mesh
call ESMF_MeshDestroy(mesh, rc=rc)
if (rc /= ESMF_SUCCESS) return
! Get rid of elemDistgrid
call ESMF_DistGridDestroy(elemDistgrid, rc=rc)
if (rc /= ESMF_SUCCESS) return
! Get rid of elemIds
deallocate(elemIds)
! Return success
rc=ESMF_SUCCESS
end subroutine test_mesh_create_from_med_EM_file