ESMF_FieldPrint Subroutine

public subroutine ESMF_FieldPrint(field, keywordEnforcer, rc)

Arguments

Type IntentOptional Attributes Name
type(ESMF_Field), intent(in) :: field
type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
integer, intent(out), optional :: rc

Calls

proc~~esmf_fieldprint~~CallsGraph proc~esmf_fieldprint ESMF_FieldPrint esmf_arrayget esmf_arrayget proc~esmf_fieldprint->esmf_arrayget proc~esmf_arrayprint ESMF_ArrayPrint proc~esmf_fieldprint->proc~esmf_arrayprint proc~esmf_basegetstatus ESMF_BaseGetStatus proc~esmf_fieldprint->proc~esmf_basegetstatus proc~esmf_baseprint ESMF_BasePrint proc~esmf_fieldprint->proc~esmf_baseprint proc~esmf_fieldgetinit ESMF_FieldGetInit proc~esmf_fieldprint->proc~esmf_fieldgetinit proc~esmf_geomget ESMF_GeomGet proc~esmf_fieldprint->proc~esmf_geomget proc~esmf_getname ESMF_GetName proc~esmf_fieldprint->proc~esmf_getname proc~esmf_imerr ESMF_IMErr proc~esmf_fieldprint->proc~esmf_imerr proc~esmf_logfounderror ESMF_LogFoundError proc~esmf_fieldprint->proc~esmf_logfounderror proc~esmf_statusstring ESMF_StatusString proc~esmf_fieldprint->proc~esmf_statusstring proc~esmf_arrayprint->proc~esmf_imerr proc~esmf_arrayprint->proc~esmf_logfounderror c_esmc_arrayprint c_esmc_arrayprint proc~esmf_arrayprint->c_esmc_arrayprint esmf_arraygetinit esmf_arraygetinit proc~esmf_arrayprint->esmf_arraygetinit proc~esmf_utiliounitflush ESMF_UtilIOUnitFlush proc~esmf_arrayprint->proc~esmf_utiliounitflush proc~esmf_basegetstatus->proc~esmf_logfounderror c_esmc_basegetstatus c_esmc_basegetstatus proc~esmf_basegetstatus->c_esmc_basegetstatus proc~esmf_baseprint->proc~esmf_imerr proc~esmf_baseprint->proc~esmf_logfounderror c_esmc_baseprint c_esmc_baseprint proc~esmf_baseprint->c_esmc_baseprint proc~esmf_basegetinit ESMF_BaseGetInit proc~esmf_baseprint->proc~esmf_basegetinit proc~esmf_baseprint->proc~esmf_utiliounitflush proc~esmf_geomget->proc~esmf_imerr proc~esmf_geomget->proc~esmf_logfounderror interface~esmf_distgridget ESMF_DistGridGet proc~esmf_geomget->interface~esmf_distgridget interface~esmf_gridget ESMF_GridGet proc~esmf_geomget->interface~esmf_gridget interface~esmf_xgridget ESMF_XGridGet proc~esmf_geomget->interface~esmf_xgridget proc~esmf_delayoutget ESMF_DELayoutGet proc~esmf_geomget->proc~esmf_delayoutget proc~esmf_geomgetinit ESMF_GeomGetInit proc~esmf_geomget->proc~esmf_geomgetinit proc~esmf_locstreamget ESMF_LocStreamGet proc~esmf_geomget->proc~esmf_locstreamget proc~esmf_meshget ESMF_MeshGet proc~esmf_geomget->proc~esmf_meshget proc~esmf_xgridgeombaseget ESMF_XGridGeomBaseGet proc~esmf_geomget->proc~esmf_xgridgeombaseget interface~c_esmc_getname c_ESMC_GetName proc~esmf_getname->interface~c_esmc_getname proc~esmf_imerr->proc~esmf_logfounderror proc~esmf_initcheckdeep ESMF_InitCheckDeep proc~esmf_imerr->proc~esmf_initcheckdeep 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

Called by

proc~~esmf_fieldprint~~CalledByGraph proc~esmf_fieldprint ESMF_FieldPrint proc~f_esmf_fieldprint f_esmf_fieldprint proc~f_esmf_fieldprint->proc~esmf_fieldprint proc~myruninfortran~2 myRunInFortran proc~myruninfortran~2->proc~esmf_fieldprint proc~test_regridxg test_regridxg proc~test_regridxg->proc~esmf_fieldprint proc~user_run~22 user_run proc~user_run~22->proc~esmf_fieldprint proc~user_run~51 user_run proc~user_run~51->proc~esmf_fieldprint proc~user_run~68 user_run proc~user_run~68->proc~esmf_fieldprint program~esmf_fieldhaloutest ESMF_FieldHaloUTest program~esmf_fieldhaloutest->proc~esmf_fieldprint program~esmf_fieldioutest ESMF_FieldIOUTest program~esmf_fieldioutest->proc~esmf_fieldprint

Source Code

  subroutine ESMF_FieldPrint(field, keywordEnforcer, rc)
!
!
! !ARGUMENTS:
    type(ESMF_Field), intent(in)            :: field
type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below
    integer,          intent(out), optional :: rc
!
! !STATUS:
! \begin{itemize}
! \item\apiStatusCompatibleVersion{5.2.0r}
! \end{itemize}
!
! !DESCRIPTION:
!     Prints information about the {\tt field} to {\tt stdout}.
!     This subroutine goes through the internal data members of a field
!     data type and prints information of each data member.
!
!     The arguments are:
!     \begin{description}
!     \item [field]
!           An {\tt ESMF\_Field} object.
!     \item [{[rc]}]
!           Return code; equals {\tt ESMF\_SUCCESS} if there are no errors.
!     \end{description}
!
!EOP

    character(len=ESMF_MAXSTR)      :: name, str
    type(ESMF_FieldType), pointer   :: fp
    integer                         :: i, localrc
    integer                         :: gridrank, arrayrank
    character(len=6)                :: defaultopts
    type(ESMF_Status)               :: fieldstatus

!       Initialize
    localrc = ESMF_RC_NOT_IMPL
    if (present(rc)) rc = ESMF_RC_NOT_IMPL

    ! check variables
    ESMF_INIT_CHECK_DEEP(ESMF_FieldGetInit,field,rc)

    ! print option is not implemented, but it has to pass to c_ESMC_BasePrint()
    defaultopts = "brief"

    fp => field%ftypep

    call ESMF_BaseGetStatus(fp%base, fieldstatus, rc=localrc)
    if (ESMF_LogFoundError(localrc, &
         ESMF_ERR_PASSTHRU, &
         ESMF_CONTEXT, rcToReturn=rc)) return

    !nsc call ESMF_LogWrite("Field Print:", ESMF_LOGMSG_INFO)
    write(ESMF_UtilIOStdout,*) "Field Print Starts ====>"

    call ESMF_StatusString(fieldstatus, str, localrc)
    if (ESMF_LogFoundError(localrc, &
        ESMF_ERR_PASSTHRU, &
        ESMF_CONTEXT, rcToReturn=rc)) return
    write(ESMF_UtilIOStdout,*)  "Field base status = ", trim(str)

    if (fieldstatus .ne. ESMF_STATUS_READY) then
      write(ESMF_UtilIOStdout,*) "Empty or Uninitialized Field"
      write(ESMF_UtilIOStdout,*) "Field Print Ends   ====>"
      if (present(rc)) rc = ESMF_SUCCESS
      return
    endif

    if (.not. associated(field%ftypep)) then
      !jw  call ESMF_LogWrite("Empty or Uninitialized Field", ESMF_LOGMSG_INFO)
      write(ESMF_UtilIOStdout,*) "Empty or Uninitialized Field"
      write(ESMF_UtilIOStdout,*) "Field Print Ends   ====>"
      if (present(rc)) rc = ESMF_SUCCESS
      return
    endif

    call ESMF_GetName(fp%base, name, localrc)
    if (ESMF_LogFoundError(localrc, &
        ESMF_ERR_PASSTHRU, &
        ESMF_CONTEXT, rcToReturn=rc)) return
    !jw  write(msgbuf, *)  "  Name = '",  trim(name), "'"
    !jw  call ESMF_LogWrite(msgbuf, ESMF_LOGMSG_INFO)
    write(ESMF_UtilIOStdout,*)  "  Name = '",  trim(name), "'"

    call ESMF_BasePrint(fp%base, options=defaultopts, rc=localrc)
    if (ESMF_LogFoundError(localrc, &
        ESMF_ERR_PASSTHRU, &
        ESMF_CONTEXT, rcToReturn=rc)) return

    write(ESMF_UtilIOStdout,*)  "Field status = ", fp%status
    if (fp%status .eq. ESMF_FIELDSTATUS_GRIDSET .or. &
         fp%status .eq. ESMF_FIELDSTATUS_COMPLETE) then
!      call ESMF_GeomPrint(fp%geom, "", localrc)
!      if (ESMF_LogFoundError(localrc, &
!          ESMF_ERR_PASSTHRU, &
!          ESMF_CONTEXT, rcToReturn=rc)) return
      call ESMF_GeomGet(fp%geom, dimCount=gridrank, rc=localrc)
      if (ESMF_LogFoundError(localrc, &
          ESMF_ERR_PASSTHRU, &
          ESMF_CONTEXT, rcToReturn=rc)) return
      write(ESMF_UtilIOStdout,*) "gridrank = ", gridrank
    endif

    if (fp%status .eq. ESMF_FIELDSTATUS_COMPLETE) then
      call ESMF_ArrayPrint(fp%array, rc=localrc)
      if (ESMF_LogFoundError(localrc, &
          ESMF_ERR_PASSTHRU, &
          ESMF_CONTEXT, rcToReturn=rc)) return
      call ESMF_ArrayGet(fp%array, rank=arrayrank, rc=localrc)
      if (ESMF_LogFoundError(localrc, &
          ESMF_ERR_PASSTHRU, &
          ESMF_CONTEXT, rcToReturn=rc)) return
      write(ESMF_UtilIOStdout,*) "arrayrank = ", arrayrank
    endif

    write(ESMF_UtilIOStdout,*) "gridToFieldMap ungriddedLBound ungriddedUBound totalLWidth", &
          " totalUWidth"
    do i = 1, ESMF_MAXDIM
      write(ESMF_UtilIOStdout,*) fp%gridToFieldMap(i), fp%ungriddedLBound(i), fp%ungriddedUBound(i), &
            "    ", fp%totalLWidth(i), fp%totalUWidth(i)
    enddo
    write(ESMF_UtilIOStdout,*) "Field Print Ends   ====>"

    if (present(rc)) rc = ESMF_SUCCESS

  end subroutine ESMF_FieldPrint