comp1_run Subroutine

public subroutine comp1_run(gcomp, istate, ostate, clock, rc)

Arguments

Type IntentOptional Attributes Name
type(ESMF_GridComp) :: gcomp
type(ESMF_State) :: istate
type(ESMF_State) :: ostate
type(ESMF_Clock) :: clock
integer, intent(out) :: rc

Calls

proc~~comp1_run~~CallsGraph proc~comp1_run comp1_run esmf_fieldbundleget esmf_fieldbundleget proc~comp1_run->esmf_fieldbundleget esmf_fieldget esmf_fieldget proc~comp1_run->esmf_fieldget esmf_stateget esmf_stateget proc~comp1_run->esmf_stateget proc~esmf_gridcompget ESMF_GridCompGet proc~comp1_run->proc~esmf_gridcompget proc~esmf_logfounderror ESMF_LogFoundError proc~comp1_run->proc~esmf_logfounderror proc~esmf_logseterror ESMF_LogSetError proc~comp1_run->proc~esmf_logseterror proc~esmf_gridcompget->proc~esmf_logfounderror proc~esmf_compget ESMF_CompGet proc~esmf_gridcompget->proc~esmf_compget proc~esmf_compstatusget ESMF_CompStatusGet proc~esmf_gridcompget->proc~esmf_compstatusget proc~esmf_gridcompgetinit ESMF_GridCompGetInit proc~esmf_gridcompget->proc~esmf_gridcompgetinit proc~esmf_imerr ESMF_IMErr proc~esmf_gridcompget->proc~esmf_imerr 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_logseterror->esmf_breakpoint proc~esmf_logseterror->proc~esmf_logrc2msg proc~esmf_logseterror->proc~esmf_logwrite proc~esmf_compget->proc~esmf_logfounderror proc~esmf_compget->proc~esmf_logseterror proc~esmf_compget->proc~esmf_imerr c_esmc_compget c_esmc_compget proc~esmf_compget->c_esmc_compget interface~esmf_vmget ESMF_VMGet proc~esmf_compget->interface~esmf_vmget proc~esmf_basegetstatus ESMF_BaseGetStatus proc~esmf_compget->proc~esmf_basegetstatus proc~esmf_compclassgetinit ESMF_CompClassGetInit proc~esmf_compget->proc~esmf_compclassgetinit proc~esmf_configget ESMF_ConfigGet proc~esmf_compget->proc~esmf_configget proc~esmf_getname ESMF_GetName proc~esmf_compget->proc~esmf_getname proc~esmf_logfoundallocerror ESMF_LogFoundAllocError proc~esmf_compget->proc~esmf_logfoundallocerror proc~esmf_compstatusgetinit ESMF_CompStatusGetInit proc~esmf_compstatusget->proc~esmf_compstatusgetinit proc~esmf_imerrs ESMF_IMErrS proc~esmf_compstatusget->proc~esmf_imerrs proc~esmf_imerr->proc~esmf_logfounderror proc~esmf_initcheckdeep ESMF_InitCheckDeep proc~esmf_imerr->proc~esmf_initcheckdeep 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

Source Code

subroutine comp1_run(gcomp, istate, ostate, clock, rc)
    type(ESMF_GridComp)  :: gcomp
    type(ESMF_State)     :: istate, ostate
    type(ESMF_Clock)     :: clock
    integer, intent(out) :: rc

    type(ESMF_Field)      :: field
    type(ESMF_FieldBundle):: fb
    type(ESMF_Grid)       :: grid, gridCheck
    integer               :: i
    character(40)         :: fieldName

    print *, "i am comp1_run"

    rc = ESMF_SUCCESS

    call ESMF_GridCompGet(gcomp, grid=grid, rc=rc)
    if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, &
      line=__LINE__, &
      file=FILENAME)) &
      return  ! bail out

    call ESMF_StateGet(istate, "Comp1 FieldBundle", fb, rc=rc)
    if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, &
      line=__LINE__, &
      file=FILENAME)) &
      return  ! bail out

    do i=1,FB_MEMBER_COUNT
      write(fieldName,'("Comp1 Field ", I2, " in FB")') i

      call ESMF_FieldBundleGet(fb, fieldName=trim(fieldName), field=field, rc=rc)
      if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, &
        line=__LINE__, &
        file=FILENAME)) &
        return  ! bail out

      call ESMF_FieldGet(field, grid=gridCheck, rc=rc)
      if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, &
        line=__LINE__, &
        file=FILENAME)) &
        return  ! bail out

      if (gridCheck /= grid) then
        call ESMF_LogSetError(rcToCheck=ESMF_RC_OBJ_WRONG, &
          msg="The actual grid object has been changed!", &
          line=__LINE__, file=FILENAME, &
          rcToReturn=rc)
        return
      endif
    enddo

end subroutine comp1_run