test_pointlist_from_inputs Subroutine

subroutine test_pointlist_from_inputs(rc)

Arguments

Type IntentOptional Attributes Name
integer, intent(out) :: rc

Calls

proc~~test_pointlist_from_inputs~~CallsGraph proc~test_pointlist_from_inputs test_pointlist_from_inputs interface~esmf_pointlistcreate ESMF_PointListCreate proc~test_pointlist_from_inputs->interface~esmf_pointlistcreate interface~esmf_vmget ESMF_VMGet proc~test_pointlist_from_inputs->interface~esmf_vmget proc~esmf_logfounderror ESMF_LogFoundError proc~test_pointlist_from_inputs->proc~esmf_logfounderror proc~esmf_pointlistadd ESMF_PointListAdd proc~test_pointlist_from_inputs->proc~esmf_pointlistadd proc~esmf_pointlistdestroy ESMF_PointListDestroy proc~test_pointlist_from_inputs->proc~esmf_pointlistdestroy proc~esmf_pointlistget ESMF_PointListGet proc~test_pointlist_from_inputs->proc~esmf_pointlistget proc~esmf_pointlistgetforloc ESMF_PointListGetForLoc proc~test_pointlist_from_inputs->proc~esmf_pointlistgetforloc proc~esmf_vmgetglobal ESMF_VMGetGlobal proc~test_pointlist_from_inputs->proc~esmf_vmgetglobal proc~esmf_pointlistcreatefrmgrid ESMF_PointListCreateFrmGrid interface~esmf_pointlistcreate->proc~esmf_pointlistcreatefrmgrid proc~esmf_pointlistcreatefrminput ESMF_PointListCreateFrmInput interface~esmf_pointlistcreate->proc~esmf_pointlistcreatefrminput proc~esmf_pointlistcreatefrmlocstream ESMF_PointListCreateFrmLocStream interface~esmf_pointlistcreate->proc~esmf_pointlistcreatefrmlocstream proc~esmf_pointlistcreatefrmmesh ESMF_PointListCreateFrmMesh interface~esmf_pointlistcreate->proc~esmf_pointlistcreatefrmmesh proc~esmf_vmgetdefault ESMF_VMGetDefault interface~esmf_vmget->proc~esmf_vmgetdefault proc~esmf_vmgetpetspecific ESMF_VMGetPetSpecific interface~esmf_vmget->proc~esmf_vmgetpetspecific 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 proc~esmf_pointlistadd->proc~esmf_logfounderror c_esmc_pointlistadd c_esmc_pointlistadd proc~esmf_pointlistadd->c_esmc_pointlistadd c_esmc_pointlistaddworig c_esmc_pointlistaddworig proc~esmf_pointlistadd->c_esmc_pointlistaddworig proc~esmf_imerr ESMF_IMErr proc~esmf_pointlistadd->proc~esmf_imerr proc~esmf_pointlistgetinit ESMF_PointListGetInit proc~esmf_pointlistadd->proc~esmf_pointlistgetinit proc~esmf_pointlistdestroy->proc~esmf_logfounderror c_esmc_pointlistdestroy c_esmc_pointlistdestroy proc~esmf_pointlistdestroy->c_esmc_pointlistdestroy proc~esmf_pointlistdestroy->proc~esmf_imerr proc~esmf_pointlistdestroy->proc~esmf_pointlistgetinit proc~esmf_pointlistget->proc~esmf_logfounderror c_esmc_pointlistgetdims c_esmc_pointlistgetdims proc~esmf_pointlistget->c_esmc_pointlistgetdims c_esmc_pointlistgetmaxpts c_esmc_pointlistgetmaxpts proc~esmf_pointlistget->c_esmc_pointlistgetmaxpts c_esmc_pointlistgetnumpts c_esmc_pointlistgetnumpts proc~esmf_pointlistget->c_esmc_pointlistgetnumpts proc~esmf_pointlistget->proc~esmf_imerr proc~esmf_pointlistget->proc~esmf_pointlistgetinit proc~esmf_pointlistgetforloc->proc~esmf_logfounderror c_esmc_pointlistgetcoords c_esmc_pointlistgetcoords proc~esmf_pointlistgetforloc->c_esmc_pointlistgetcoords c_esmc_pointlistgetid c_esmc_pointlistgetid proc~esmf_pointlistgetforloc->c_esmc_pointlistgetid proc~esmf_pointlistgetforloc->proc~esmf_imerr proc~esmf_pointlistgetforloc->proc~esmf_pointlistgetinit

Called by

proc~~test_pointlist_from_inputs~~CalledByGraph proc~test_pointlist_from_inputs test_pointlist_from_inputs program~esmf_pointlistutest ESMF_PointListUTest program~esmf_pointlistutest->proc~test_pointlist_from_inputs

Source Code

  subroutine test_pointlist_from_inputs(rc)
    integer, intent(out) :: rc

    integer :: localrc
    integer :: petCount,localPet

    type(ESMF_PointList) :: pointlist
    type(ESMF_VM) :: vm
    integer :: maxpts, mydims, mypts, myid
    real(ESMF_KIND_R8), dimension(3) :: mycoords1=(/11.0,13.0,17.0/)
    real(ESMF_KIND_R8), dimension(3) :: mycoords2=(/19.0,23.0,29.0/)
    real(ESMF_KIND_R8), dimension(3) :: mycoords3=(/31.0,37.0,41.0/)
    real(ESMF_KIND_R8), dimension(3) :: mycoords4=(/43.0,47.0,53.0/)

    ! get global VM
    call ESMF_VMGetGlobal(vm, rc=localrc)
    if (ESMF_LogFoundError(localrc, &
        ESMF_ERR_PASSTHRU, &
        ESMF_CONTEXT, rcToReturn=rc)) return

    call ESMF_VMGet(vm, localPet=localPet, petCount=petCount, rc=localrc)
    if (ESMF_LogFoundError(localrc, &
        ESMF_ERR_PASSTHRU, &
        ESMF_CONTEXT, rcToReturn=rc)) return

    !------------------------------------------------------------------------

    maxpts=-99
    mypts=-99
    mydims=-99
    myid=-99

    pointlist = ESMF_PointListCreate(maxpts=7,numdims=3, rc=localrc)
    if (localrc /= ESMF_SUCCESS) then
       print*,'ERROR:  trouble creating pointlist'
       rc=ESMF_FAILURE
       return
    endif       

    call ESMF_PointListGet(pointlist, dims=mydims, numpts=mypts, maxpts=maxpts, rc=localrc)
    if (localrc /= ESMF_SUCCESS) then
       print*,'ERROR:  trouble accessing pointlist data with get routine'
       rc=ESMF_FAILURE
       return
    endif       

    if (maxpts .ne. 7 .or. mypts .ne. 0 .or. mydims .ne. 3) then
       print*,'ERROR:  unexpected values for newly created pointlist:'
       print*,'maxpts should be: 7  got: ',maxpts
       print*,'numpts should be: 0  got: ',mypts
       print*,'dims should be: 3  got: ',mydims
       rc=ESMF_FAILURE
       return
    endif       

    call ESMF_PointListAdd(pointlist=pointlist,id=123,loc_coords=mycoords1,rc=localrc)
    if (localrc /= ESMF_SUCCESS) then
       print*,'ERROR:  trouble adding point to pointlist'
       rc=ESMF_FAILURE
       return
    endif       
    call ESMF_PointListAdd(pointlist=pointlist,id=234,loc_coords=mycoords2,rc=localrc)
    if (localrc /= ESMF_SUCCESS) then
       print*,'ERROR:  trouble adding point to pointlist'
       rc=ESMF_FAILURE
       return
    endif       
    call ESMF_PointListAdd(pointlist=pointlist,id=345,loc_coords=mycoords3,rc=localrc)
    if (localrc /= ESMF_SUCCESS) then
       print*,'ERROR:  trouble adding point to pointlist'
       rc=ESMF_FAILURE
       return
    endif       
    call ESMF_PointListAdd(pointlist=pointlist,id=456,loc_coords=mycoords4,rc=localrc)
    if (localrc /= ESMF_SUCCESS) then
       print*,'ERROR:  trouble adding point to pointlist'
       rc=ESMF_FAILURE
       return
    endif       

    call ESMF_PointListGet(pointlist, dims=mydims, numpts=mypts, maxpts=maxpts, rc=localrc)
    if (localrc /= ESMF_SUCCESS) then
       print*,'ERROR:  trouble accessing pointlist data with get routine'
       rc=ESMF_FAILURE
       return
    endif       

    if (maxpts .ne. 7 .or. mypts .ne. 4 .or. mydims .ne. 3) then
       print*,'ERROR:  unexpected values for newly created pointlist:'
       print*,'maxpts should be: 7  got: ',maxpts
       print*,'numpts should be: 4  got: ',mypts
       print*,'dims should be: 3  got: ',mydims
       rc=ESMF_FAILURE
       return
    endif       

!    call ESMF_PointListPrint(pointlist)
!    if (localrc /= ESMF_SUCCESS) then
!       rc=ESMF_FAILURE
!       return
!    endif      

!    call ESMF_PointListWriteVTK(pointlist,"TestPointList")
!    if (localrc /= ESMF_SUCCESS) then
!       rc=ESMF_FAILURE
!       return
!    endif      


    !locations values are zero based
    call ESMF_PointListGetForLoc(pointlist,2,id=myid,rc=localrc)
    if (localrc /= ESMF_SUCCESS) then
       print*,'ERROR:  trouble accessing pointlist data with get for location routine'
       rc=ESMF_FAILURE
       return
    endif       

    if (myid .ne. 345) then
       print*,'ERROR:  unexpected values for newly created pointlist:'
       print*,'id should be: 345  got: ',myid
       rc=ESMF_FAILURE
       return
    endif       

    call ESMF_PointListDestroy(pointlist,rc=localrc)
    if (localrc /= ESMF_SUCCESS) then
       print*,'ERROR:  trouble destroying pointlist'
       rc=ESMF_FAILURE
       return
    endif       

    rc=ESMF_SUCCESS

  end subroutine test_pointlist_from_inputs