ESMF_TestStart Subroutine

public subroutine ESMF_TestStart(file, line, unit, rc)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: file
integer, intent(in) :: line
integer, intent(in), optional :: unit
integer, intent(out), optional :: rc

Calls

proc~~esmf_teststart~~CallsGraph proc~esmf_teststart ESMF_TestStart interface~esmf_vmget ESMF_VMGet proc~esmf_teststart->interface~esmf_vmget proc~esmf_initialize ESMF_Initialize proc~esmf_teststart->proc~esmf_initialize proc~esmf_logset ESMF_LogSet proc~esmf_teststart->proc~esmf_logset proc~esmf_logwrite ESMF_LogWrite proc~esmf_teststart->proc~esmf_logwrite proc~esmf_vmgetdefault ESMF_VMGetDefault interface~esmf_vmget->proc~esmf_vmgetdefault proc~esmf_vmgetpetspecific ESMF_VMGetPetSpecific interface~esmf_vmget->proc~esmf_vmgetpetspecific 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 proc~esmf_logset->proc~esmf_logwrite c_esmc_logset c_esmc_logset proc~esmf_logset->c_esmc_logset c_esmc_logsettrace c_esmc_logsettrace proc~esmf_logset->c_esmc_logsettrace proc~esmf_logentrycopy ESMF_LogEntryCopy proc~esmf_logset->proc~esmf_logentrycopy proc~esmf_logflush ESMF_LogFlush proc~esmf_logset->proc~esmf_logflush proc~esmf_utiliounitflush ESMF_UtilIOUnitFlush proc~esmf_logset->proc~esmf_utiliounitflush 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_logwrite->proc~esmf_logflush proc~esmf_logopenfile ESMF_LogOpenFile proc~esmf_logwrite->proc~esmf_logopenfile proc~esmf_logwrite->proc~esmf_utiliounitflush proc~esmf_utilstring2array ESMF_UtilString2Array proc~esmf_logwrite->proc~esmf_utilstring2array

Called by

AttributeUpdateReconcilewESMF_TestStart
w
ESMF_AlarmTestw
w
ESMF_ArrayArbIdxSMMUTestw
w
ESMF_ArrayBundleCreateUTestw
w
ESMF_ArrayBundleIOUTestw
w
ESMF_ArrayBundleRedistUTestw
w
ESMF_ArrayCreateGetUTestw
w
ESMF_ArrayDataUTestw
w
ESMF_ArrayGatherUTestw
w
ESMF_ArrayHaloUTestw
w
ESMF_ArrayInfoUTestw
w
ESMF_ArrayIOTypesUTestw
w
ESMF_ArrayIOUTestw
w
ESMF_ArrayRedistPerfUTestw
w
ESMF_ArrayRedistUTestw
w
ESMF_ArrayScatterUTestw
w
ESMF_ArraySMMFromFileUTestw
w
ESMF_ArraySMMUTestw
w
ESMF_ArraySpecUTestw
w
ESMF_AttributeProfileUTestw
w
ESMF_AttributeUpdateContainerStressUTestw
w
ESMF_AttributeUpdateMultiReconcileUTestw
w
ESMF_AttributeUpdateRemoveOnlyUTestw
w
ESMF_AttributeUpdateUTestw
w
ESMF_AttributeUpdateUTestw
w
ESMF_AttributeUtilUTestw
w
ESMF_BaseUTestw
w
ESMF_CalendarUTestw
w
ESMF_CalRangeUTestw
w
ESMF_ClockTestw
w
ESMF_ComponentUTestw
w
ESMF_CompSetServUTestw
w
ESMF_CompTunnelUTestw
w
ESMF_Config_Testw
w
ESMF_ContainerUTestw
w
ESMF_CplCompCreateUTestw
w
ESMF_DELayoutUTestw
w
ESMF_DELayoutWQUTestw
w
ESMF_DistGridCreateGetUTestw
w
ESMF_F95PTRUTestw
w
ESMF_FieldArbGridUTestw
w
ESMF_FieldBundleCrGetUTestw
w
ESMF_FieldBundleIOUTestw
w
ESMF_FieldBundleRegridUTestw
w
ESMF_FieldBundleSMMUTestw
w
ESMF_FieldBundleUTestw
w
ESMF_FieldCreateGetUTestw
w
ESMF_FieldGatherUTestw
w
ESMF_FieldHaloUTestw
w
ESMF_FieldIOUTestw
w
ESMF_FieldLSSMMUTestw
w
ESMF_FieldMeshSMMUTestw
w
ESMF_FieldRedistArbUTestw
w
ESMF_FieldRedistUTestw
w
ESMF_FieldRegridCsrv2ndUTestw
w
ESMF_FieldRegridCsrvUTestw
w
ESMF_FieldRegridUTestw
w
ESMF_FieldRegridUTestw
w
ESMF_FieldRegridXGSMMUTestw
w
ESMF_FieldRegridXGUTestw
w
ESMF_FieldSMMFromFileUTestw
w
ESMF_FieldSMMUTestw
w
ESMF_FieldStressUTestw
w
ESMF_FieldUTestw
w
ESMF_FileRegridUTestw
w
ESMF_FortranWordsizeUTestw
w
ESMF_FrameworkUTestw
w
ESMF_GeomUTestw
w
ESMF_GridArbitraryUTestw
w
ESMF_GridCompCreateUTestw
w
ESMF_GridCoordUTestw
w
ESMF_GridCreateUTestw
w
ESMF_GridItemUTestw
w
ESMF_GridToMeshUTestw
w
ESMF_HConfigUTestw
w
ESMF_InfoArrayUTestw
w
ESMF_InfoCacheUTestw
w
ESMF_InfoDescribeUTestw
w
ESMF_InfoProfileUTestw
w
ESMF_InfoSyncUTestw
w
ESMF_InfoUTestw
w
ESMF_InitMacrosTestw
w
ESMF_InternalStateUTestw
w
ESMF_IO_FileTypeCheckUTestw
w
ESMF_IO_MultitileUTestw
w
ESMF_IO_YAMLUTestw
w
ESMF_IOCompUTestw
w
ESMF_IOGridCompUTestw
w
ESMF_IOUTestw
w
ESMF_LAPACKUTestw
w
ESMF_LocalArrayDataUTestw
w
ESMF_LocalArrayTestw
w
ESMF_LocStreamCreateUTestw
w
ESMF_LogErrPerfUTestw
w
ESMF_LogErrUTestw
w
ESMF_LogErrUTestw
w
ESMF_MeshFileIOUTestw
w
ESMF_MeshOpUTestw
w
ESMF_MeshUTestw
w
ESMF_NamedAliasUTestw
w
ESMF_NUOPC_UTestw
w
ESMF_PointListUTestw
w
ESMF_ProfileUTestw
w
ESMF_RedistUTestw
w
ESMF_RegridWeightGenUTestw
w
ESMF_RouteHandleAdvancedUTestw
w
ESMF_RouteHandleUTestw
w
ESMF_SciCompCreateUTestw
w
ESMF_StateCreateUTestw
w
ESMF_StateReconcileProxyUTestw
w
ESMF_StateReconcileUTestw
w
ESMF_StateUTestw
w
ESMF_StdCompMethodsUTestw
w
esmf_test_harnessw
w
ESMF_TestUTestw
w
ESMF_TimeIntervalUTestw
w
ESMF_TimeUTestw
w
ESMF_TraceClkMonoSyncUTestw
w
ESMF_TraceClkMonoUTestw
w
ESMF_TraceIOUTestw
w
ESMF_TraceMPIUTestw
w
ESMF_TraceUTestw
w
ESMF_TypeKindGetUTestw
w
ESMF_UtilUTestw
w
ESMF_VMAccUTestw
w
ESMF_VMAllGatherUTestw
w
ESMF_VMAllGatherVUTestw
w
ESMF_VMAllToAllUTestw
w
ESMF_VMAllToAllVUTestw
w
ESMF_VMBarrierUTestw
w
ESMF_VMBroadcastUTestw
w
ESMF_VMComponentUTestw
w
ESMF_VMEpochLargeMsgUTestw
w
ESMF_VMGatherUTestw
w
ESMF_VMOpenMPUTestw
w
ESMF_VMScatterUTestw
w
ESMF_VMSendNbVMRecvNbUTestw
w
ESMF_VMSendRecvNbUTestw
w
ESMF_VMSendrecvUTestw
w
ESMF_VMSendVMRecvUTestw
w
ESMF_VMUTestw
w
ESMF_VMUTestw
w
ESMF_WebServComponentUTestw
w
ESMF_XGridMaskingUTestw
w
ESMF_XGridUTestw
w
ExceptionsUTestw
w
FeatureTestw
w
StringTestw
w
testw
w
WordsizeTestw
w

Source Code

      subroutine ESMF_TestStart(file, line, unit, rc)

! !ARGUMENTS:
      character(*), intent(in) :: file      ! test file name
      integer, intent(in) :: line           ! test file line number
      integer, intent(in), optional :: unit ! additional output unit number
      integer, intent(out), optional :: rc  ! return code

! !DESCRIPTION:
!     Initializes the ESMF framework, and prints a standard start message
!     which is parsed by the nightly build scripts.  Must be called once
!     at the start of test code.
!     If {\tt unit} is specified, will in addition write the same message 
!     to that Fortran unit number.
!
!EOP
!-------------------------------------------------------------------------------

      character(ESMF_MAXSTR) :: msg, logFileName
      type(ESMF_VM) :: globalVM
      integer :: numPETs, localrc, underScore, Period
      character(16) :: linestr

      write (linestr,*) line
      linestr = adjustl (linestr)

      ! create a file name for the log file
      ! find locations of the underscore and period
      underScore = index (file, "_")
      Period = index (file, substring=".", back=.true.) ! search from back of string,
                                                        ! safe for ./file start
      logFileName = file(underScore+1:Period)  // "Log"

      ! initialize the framework.  if this fails, print a message directly
      ! because there is no guarentee that the log code will be working.
      call ESMF_Initialize(vm=globalVM, defaultlogfilename=logFileName, &
                           logkindflag=ESMF_LOGKIND_MULTI, rc=localrc)
                           !logkindflag=ESMF_LOGKIND_SINGLE, rc=localrc)
      if (localrc .ne. ESMF_SUCCESS) then
          write(msg, *) "FAIL  Unable to initialize the ESMF Framework.  Error code ", localrc
          print *, trim(msg)
          if (present(unit)) write(unit, *) trim(msg)
          if (present(rc)) rc = localrc
          return
      endif

      call ESMF_LogSet (flush=.true.)

      ! get test start time
      call cpu_time(start_time)

      call ESMF_VMGet(globalVM, petCount=numPETs, localPet=PETnum, rc=localrc)
      if (localrc .ne. ESMF_SUCCESS) then
          write(msg, *) "FAIL  Unable to get number of PETs.  Error code ", localrc
          print *, trim(msg)
          if (present(unit)) write(unit, *) trim(msg)
          if (present(rc)) rc = localrc
          return
       endif

      write(msg, *) "Beginning Test, file ", trim(file), ", line ", trim (linestr)
      print *, trim(msg)
      call ESMF_LogWrite(trim(msg), ESMF_LOGMSG_INFO)
      if (present(unit)) write(unit, *) trim(msg)

      write(msg, *) "NUMBER_OF_PROCESSORS", numPETs
      print *, trim(msg)
      call ESMF_LogWrite(trim(msg), ESMF_LOGMSG_INFO)
      if (present(unit)) write(unit, *) trim(msg)
      
      if (present(rc)) rc=ESMF_SUCCESS

      end subroutine ESMF_TestStart