CoordInfoFromCoordDep Subroutine

private subroutine CoordInfoFromCoordDep(dimCount, coordDep1, coordDep2, coordDep3, coordDimCount, coordDimMap, rc)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: dimCount
integer, intent(in), optional :: coordDep1(:)
integer, intent(in), optional :: coordDep2(:)
integer, intent(in), optional :: coordDep3(:)
integer, intent(out), optional :: coordDimCount(:)
integer, intent(out), optional :: coordDimMap(:,:)
integer, optional :: rc

Calls

proc~~coordinfofromcoorddep~~CallsGraph proc~coordinfofromcoorddep CoordInfoFromCoordDep proc~esmf_logseterror ESMF_LogSetError proc~coordinfofromcoorddep->proc~esmf_logseterror esmf_breakpoint esmf_breakpoint proc~esmf_logseterror->esmf_breakpoint proc~esmf_logrc2msg ESMF_LogRc2Msg proc~esmf_logseterror->proc~esmf_logrc2msg proc~esmf_logwrite ESMF_LogWrite proc~esmf_logseterror->proc~esmf_logwrite c_esmc_loggeterrormsg c_esmc_loggeterrormsg proc~esmf_logrc2msg->c_esmc_loggeterrormsg c_esmc_vmwtime c_esmc_vmwtime proc~esmf_logwrite->c_esmc_vmwtime proc~esmf_logclose ESMF_LogClose proc~esmf_logwrite->proc~esmf_logclose proc~esmf_logflush ESMF_LogFlush proc~esmf_logwrite->proc~esmf_logflush proc~esmf_logopenfile ESMF_LogOpenFile proc~esmf_logwrite->proc~esmf_logopenfile proc~esmf_utiliounitflush ESMF_UtilIOUnitFlush proc~esmf_logwrite->proc~esmf_utiliounitflush proc~esmf_utilstring2array ESMF_UtilString2Array proc~esmf_logwrite->proc~esmf_utilstring2array proc~esmf_logclose->proc~esmf_logflush proc~esmf_logflush->proc~esmf_utiliounitflush proc~esmf_utilarray2string ESMF_UtilArray2String proc~esmf_logflush->proc~esmf_utilarray2string proc~esmf_logopenfile->proc~esmf_utiliounitflush proc~esmf_utiliounitget ESMF_UtilIOUnitGet proc~esmf_logopenfile->proc~esmf_utiliounitget

Called by

proc~~coordinfofromcoorddep~~CalledByGraph proc~coordinfofromcoorddep CoordInfoFromCoordDep proc~esmf_gridcreate1peridimi ESMF_GridCreate1PeriDimI proc~esmf_gridcreate1peridimi->proc~coordinfofromcoorddep proc~esmf_gridcreate1peridimr ESMF_GridCreate1PeriDimR proc~esmf_gridcreate1peridimr->proc~coordinfofromcoorddep proc~esmf_gridcreate2peridimi ESMF_GridCreate2PeriDimI proc~esmf_gridcreate2peridimi->proc~coordinfofromcoorddep proc~esmf_gridcreate2peridimr ESMF_GridCreate2PeriDimR proc~esmf_gridcreate2peridimr->proc~coordinfofromcoorddep proc~esmf_gridcreateedgeconni ESMF_GridCreateEdgeConnI proc~esmf_gridcreateedgeconni->proc~coordinfofromcoorddep proc~esmf_gridcreateedgeconnr ESMF_GridCreateEdgeConnR proc~esmf_gridcreateedgeconnr->proc~coordinfofromcoorddep proc~esmf_gridcreatenoperidimi ESMF_GridCreateNoPeriDimI proc~esmf_gridcreatenoperidimi->proc~coordinfofromcoorddep proc~esmf_gridcreatenoperidimr ESMF_GridCreateNoPeriDimR proc~esmf_gridcreatenoperidimr->proc~coordinfofromcoorddep proc~esmf_gridemptycompleteeconni ESMF_GridEmptyCompleteEConnI proc~esmf_gridemptycompleteeconni->proc~coordinfofromcoorddep proc~esmf_gridemptycompleteeconnr ESMF_GridEmptyCompleteEConnR proc~esmf_gridemptycompleteeconnr->proc~coordinfofromcoorddep interface~esmf_gridcreate ESMF_GridCreate interface~esmf_gridcreate->proc~esmf_gridcreateedgeconni interface~esmf_gridcreate->proc~esmf_gridcreateedgeconnr interface~esmf_gridcreate1peridim ESMF_GridCreate1PeriDim interface~esmf_gridcreate1peridim->proc~esmf_gridcreate1peridimi interface~esmf_gridcreate1peridim->proc~esmf_gridcreate1peridimr interface~esmf_gridcreate2peridim ESMF_GridCreate2PeriDim interface~esmf_gridcreate2peridim->proc~esmf_gridcreate2peridimi interface~esmf_gridcreate2peridim->proc~esmf_gridcreate2peridimr interface~esmf_gridcreatenoperidim ESMF_GridCreateNoPeriDim interface~esmf_gridcreatenoperidim->proc~esmf_gridcreatenoperidimi interface~esmf_gridcreatenoperidim->proc~esmf_gridcreatenoperidimr interface~esmf_gridemptycomplete ESMF_GridEmptyComplete interface~esmf_gridemptycomplete->proc~esmf_gridemptycompleteeconni interface~esmf_gridemptycomplete->proc~esmf_gridemptycompleteeconnr

Source Code

    subroutine CoordInfoFromCoordDep(dimCount, coordDep1, coordDep2, coordDep3,&
                                     coordDimCount, coordDimMap, rc)
      integer,                intent(in)            :: dimCount
      integer,               intent(in),  optional :: coordDep1(:)
      integer,               intent(in),  optional :: coordDep2(:)
      integer,               intent(in),  optional :: coordDep3(:)
      integer,               intent(out),  optional :: coordDimCount(:)
      integer,               intent(out),  optional :: coordDimMap(:,:)
      integer,optional                               :: rc
      integer :: i

      ! Initialize return code; assume failure until success is certain
      if (present(rc)) rc = ESMF_RC_NOT_IMPL


      ! Error checking
      if ((dimCount .lt. 3) .and. present(coordDep3)) then
         call ESMF_LogSetError(rcToCheck=ESMF_RC_ARG_WRONG, &
              msg="- coordDep3 not allowed when grid is less than dimCount 3", &
              ESMF_CONTEXT, rcToReturn=rc)
         return
      endif

      if (present(coordDep1)) then
         if ((size(coordDep1) < 1) .or. (size(coordDep1)>dimCount)) then
            call ESMF_LogSetError(rcToCheck=ESMF_RC_ARG_SIZE, &
                 msg="- coordDep1 size incompatible with grid dimCount", &
                 ESMF_CONTEXT, rcToReturn=rc)
            return
         endif
      endif

      if (present(coordDep2)) then
         if ((size(coordDep2) < 1) .or. (size(coordDep2)>dimCount)) then
            call ESMF_LogSetError(rcToCheck=ESMF_RC_ARG_SIZE, &
                 msg="- coordDep2 size incompatible with grid dimCount", &
                 ESMF_CONTEXT, rcToReturn=rc)
            return
         endif
      endif

      if (present(coordDep3)) then
         if ((size(coordDep3) < 1) .or. (size(coordDep3)>dimCount)) then
            call ESMF_LogSetError(rcToCheck=ESMF_RC_ARG_SIZE, &
                 msg="- coordDep3 size incompatible with grid dimCount", &
                 ESMF_CONTEXT, rcToReturn=rc)
            return
         endif
      endif


      ! Set coordDimCount and coordDimMap
      if (present(coordDep1)) then
         coordDimCount(1)=size(coordDep1)
         coordDimMap(1,:)=0
         do i=1,size(coordDep1)
            coordDimMap(1,i)=coordDep1(i)
         enddo
      else
         coordDimCount(1)=dimCount
         do i=1,dimCount
            coordDimMap(1,i)=i
         enddo
      endif

      if (present(coordDep2)) then
         coordDimCount(2)=size(coordDep2)
         coordDimMap(2,:)=0
         do i=1,size(coordDep2)
            coordDimMap(2,i)=coordDep2(i)
         enddo
      else
         coordDimCount(2)=dimCount
         do i=1,dimCount
            coordDimMap(2,i)=i
         enddo
      endif

      if (dimCount > 2) then
         if (present(coordDep3)) then
            coordDimCount(3)=size(coordDep3)
            coordDimMap(3,:)=0
            do i=1,size(coordDep3)
               coordDimMap(3,i)=coordDep3(i)
            enddo
         else
            coordDimCount(3)=dimCount
            do i=1,dimCount
               coordDimMap(3,i)=i
            enddo
         endif
      endif

    ! Return successfully
    if (present(rc)) rc = ESMF_SUCCESS

    end subroutine CoordInfoFromCoordDep