ESMF_ArraySpecEx Program

Uses

  • program~~esmf_arrayspecex~~UsesGraph program~esmf_arrayspecex ESMF_ArraySpecEx module~esmf ESMF program~esmf_arrayspecex->module~esmf module~esmf_testmod ESMF_TestMod program~esmf_arrayspecex->module~esmf_testmod

Calls

program~~esmf_arrayspecex~~CallsGraph program~esmf_arrayspecex ESMF_ArraySpecEx proc~esmf_arrayspecget ESMF_ArraySpecGet program~esmf_arrayspecex->proc~esmf_arrayspecget proc~esmf_arrayspecset ESMF_ArraySpecSet program~esmf_arrayspecex->proc~esmf_arrayspecset proc~esmf_finalize ESMF_Finalize program~esmf_arrayspecex->proc~esmf_finalize proc~esmf_initialize ESMF_Initialize program~esmf_arrayspecex->proc~esmf_initialize proc~esmf_stest ESMF_STest program~esmf_arrayspecex->proc~esmf_stest proc~esmf_arrayspecgetinit ESMF_ArraySpecGetInit proc~esmf_arrayspecget->proc~esmf_arrayspecgetinit proc~esmf_imerrs ESMF_IMErrS proc~esmf_arrayspecget->proc~esmf_imerrs proc~esmf_logseterror ESMF_LogSetError proc~esmf_arrayspecset->proc~esmf_logseterror c_esmc_getcompliancechecktrace c_esmc_getcompliancechecktrace proc~esmf_finalize->c_esmc_getcompliancechecktrace proc~esmf_calendarfinalize ESMF_CalendarFinalize proc~esmf_finalize->proc~esmf_calendarfinalize proc~esmf_logfinalize ESMF_LogFinalize proc~esmf_finalize->proc~esmf_logfinalize proc~esmf_logflush ESMF_LogFlush proc~esmf_finalize->proc~esmf_logflush proc~esmf_logrc2msg ESMF_LogRc2Msg proc~esmf_finalize->proc~esmf_logrc2msg proc~esmf_logwrite ESMF_LogWrite proc~esmf_finalize->proc~esmf_logwrite proc~esmf_traceclose ESMF_TraceClose proc~esmf_finalize->proc~esmf_traceclose proc~esmf_vmabort ESMF_VMAbort proc~esmf_finalize->proc~esmf_vmabort proc~esmf_vmfinalize ESMF_VMFinalize proc~esmf_finalize->proc~esmf_vmfinalize proc~esmf_frameworkinternalinit ESMF_FrameworkInternalInit proc~esmf_initialize->proc~esmf_frameworkinternalinit proc~esmf_logfounderror ESMF_LogFoundError proc~esmf_initialize->proc~esmf_logfounderror proc~esmf_vmbarrier ESMF_VMBarrier proc~esmf_initialize->proc~esmf_vmbarrier proc~esmf_vmgetglobal ESMF_VMGetGlobal proc~esmf_initialize->proc~esmf_vmgetglobal interface~esmf_vmget ESMF_VMGet proc~esmf_stest->interface~esmf_vmget proc~esmf_stest->proc~esmf_logwrite proc~esmf_test ESMF_Test proc~esmf_stest->proc~esmf_test proc~esmf_stest->proc~esmf_vmgetglobal

Variables

Type Attributes Name Initial
character(len=ESMF_MAXSTR) :: failMsg
character(len=ESMF_MAXSTR) :: testname
integer :: finalrc
integer :: myrank
integer :: rc
integer :: result
type(ESMF_ArraySpec) :: arrayDS
type(ESMF_TypeKind_Flag) :: mytypekind

Source Code

      program ESMF_ArraySpecEx

!------------------------------------------------------------------------------
!ESMF_EXAMPLE   String used by test script to count examples.
!==============================================================================
!BOC
! !PROGRAM: ESMF_ArraySpecEx - ArraySpec manipulation examples
!
! !DESCRIPTION:
!
! This program shows examples of ArraySpec set and get usage
!-----------------------------------------------------------------------------
#include "ESMF.h"

      ! ESMF Framework module
      use ESMF
      use ESMF_TestMod
      implicit none

      ! local variables
      type(ESMF_ArraySpec) :: arrayDS
      integer :: myrank
      type(ESMF_TypeKind_Flag) :: mytypekind


      ! return code
      integer:: rc, result
      character(ESMF_MAXSTR) :: testname
      character(ESMF_MAXSTR) :: failMsg
!EOC

      ! result code
      integer :: finalrc
      finalrc = ESMF_SUCCESS
!-------------------------------------------------------------------------
!-------------------------------------------------------------------------

  write(failMsg, *) "Example failure"
  write(testname, *) "Example ESMF_ArraySpecEx"

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



!BOC
      ! initialize ESMF framework
      call ESMF_Initialize(defaultlogfilename="ArraySpecEx.Log", &
                    logkindflag=ESMF_LOGKIND_MULTI, rc=rc)
!EOC

      if (rc /= ESMF_SUCCESS) call ESMF_Finalize(endflag=ESMF_END_ABORT)

!BOP
!\subsubsection{Set ArraySpec values}

! This example shows how to set values in an {\tt ESMF\_ArraySpec}.
!EOP

!BOC
      call ESMF_ArraySpecSet(arrayDS, rank=2, &
                             typekind=ESMF_TYPEKIND_R8, rc=rc)
!EOC

      if (rc /= ESMF_SUCCESS) call ESMF_Finalize(endflag=ESMF_END_ABORT)

!BOP
!\subsubsection{Get ArraySpec values}

! This example shows how to query an {\tt ESMF\_ArraySpec}.
!EOP

!BOC
      call ESMF_ArraySpecGet(arrayDS, rank=myrank, &
        typekind=mytypekind, rc=rc)
      print *, "Returned values from ArraySpec:"
      print *, "rank =", myrank
!EOC

      if (rc /= ESMF_SUCCESS) call ESMF_Finalize(endflag=ESMF_END_ABORT)

      ! IMPORTANT: ESMF_STest() prints the PASS string and the # of processors in the log
      ! file that the scripts grep for.
      call ESMF_STest((finalrc.eq.ESMF_SUCCESS), testname, failMsg, result, ESMF_SRCLINE)


!BOC
      ! finalize ESMF framework
      call ESMF_Finalize(rc=rc)
!EOC

      if (rc.NE.ESMF_SUCCESS) finalrc = ESMF_FAILURE

      if (finalrc.EQ.ESMF_SUCCESS) then
        print *, "PASS: ESMF_ArraySpecEx.F90"
      else
        print *, "FAIL: ESMF_ArraySpecEx.F90"
      end if

!BOC
      end program ESMF_ArraySpecEx