@@ -194,7 +194,7 @@ subroutine SetServices ( GC, RC )
194194 integer :: RFRSHINT
195195 integer :: AVRGNINT
196196 integer :: IQVAINC
197- real :: DT
197+ real :: HEARTBEAT
198198
199199 character(len=ESMF_MAXSTR) :: FRIENDLIES_NCPL , FRIENDLIES_NCPI , &
200200 FRIENDLIES_NRAIN, FRIENDLIES_NSNOW, FRIENDLIES_NGRAUPEL
@@ -252,10 +252,10 @@ subroutine SetServices ( GC, RC )
252252 ! Set the state variable specs.
253253 ! -----------------------------
254254
255- call ESMF_ConfigGetAttribute ( CF, DT , Label="RUN_DT:", RC=STATUS)
255+ call ESMF_ConfigGetAttribute ( CF, HEARTBEAT , Label="RUN_DT:", RC=STATUS)
256256 VERIFY_(STATUS)
257257
258- call ESMF_ConfigGetAttribute( CF, RFRSHINT, Label="REFRESH_INTERVAL:", default=nint(DT ), RC=STATUS)
258+ call ESMF_ConfigGetAttribute( CF, RFRSHINT, Label="REFRESH_INTERVAL:", default=nint(HEARTBEAT ), RC=STATUS)
259259 VERIFY_(STATUS)
260260
261261 call ESMF_ConfigGetAttribute( CF, AVRGNINT, Label='AVERAGING_INTERVAL:',default=RFRSHINT, RC=STATUS)
@@ -5124,13 +5124,16 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC )
51245124 real, pointer, dimension(:,:,:) :: Q, QLLS, QLCN, QILS, QICN, QRAIN, QSNOW, QGRAUPEL, QW
51255125 real, dimension(:,:,:), pointer :: PTR3
51265126
5127- integer unit
5128-
5129- real DCS, QCVAR_, WBFFACTOR, NC_CST, NI_CST, NG_CST
5130- logical :: nccons, nicons, ngcons, do_graupel
5131- integer :: LM
5127+ integer :: unit
5128+ real :: HEARTBEAT, MOIST_DT
5129+ type (ESMF_Time) :: CurrentTime
5130+ type (ESMF_Alarm) :: MoistAlarm
5131+ type (ESMF_TimeInterval) :: MoistIntvl
5132+ real :: DCS, QCVAR_, WBFFACTOR, NC_CST, NI_CST, NG_CST
5133+ logical :: nccons, nicons, ngcons, do_graupel
5134+ integer :: LM
51325135
5133- real(ESMF_KIND_R8) Dcsr8, qcvarr8, micro_mg_berg_eff_factor_in, ncnstr8, ninstr8, ngnstr8
5136+ real(ESMF_KIND_R8) :: Dcsr8, qcvarr8, micro_mg_berg_eff_factor_in, ncnstr8, ninstr8, ngnstr8
51345137 !=============================================================================
51355138
51365139 ! Begin...
@@ -5148,6 +5151,29 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC )
51485151 call MAPL_GetObjectFromGC ( GC, MAPL, RC=STATUS )
51495152 VERIFY_(STATUS)
51505153
5154+ call ESMF_ConfigGetAttribute (CF, HEARTBEAT, Label="RUN_DT:", RC=STATUS)
5155+ VERIFY_(STATUS)
5156+
5157+ call ESMF_ConfigGetAttribute (CF, MOIST_DT, Label="MOIST_DT:", default = HEARTBEAT, RC=STATUS)
5158+ VERIFY_(STATUS)
5159+
5160+ call ESMF_ClockGet(CLOCK, currTime=CurrentTime, rc=STATUS)
5161+ _VERIFY(status)
5162+
5163+ call ESMF_TimeIntervalSet(MoistIntvl, s=MOIST_DT, rc=status)
5164+ _VERIFY(status)
5165+
5166+ MoistAlarm = ESMF_AlarmCreate( &
5167+ CLOCK, &
5168+ name='MoistAlarm', &
5169+ ringTime=CurrentTime, &
5170+ ringInterval = MoistIntvl, &
5171+ ringTimeStepCount=1, &
5172+ sticky=.false., &
5173+ rc=status &
5174+ )
5175+ _VERIFY(status)
5176+
51515177 ! Call Generic Initialize for MOIST GC
51525178 !----------------------------------------
51535179
@@ -5351,7 +5377,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC )
53515377 type (MAPL_MetaComp), pointer :: STATE
53525378 type (ESMF_Config ) :: CF
53535379 type (ESMF_State ) :: INTERNAL
5354- type (ESMF_Alarm ) :: ALARM
5380+ type (ESMF_Alarm ) :: ALARM, MoistAlarm
53555381
53565382 type (RASPARAM_TYPE) :: RASPARAMS
53575383 type (CLDPARAM_TYPE) :: CLDPARAMS
@@ -5381,6 +5407,13 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC )
53815407 call MAPL_GetObjectFromGC ( GC, STATE, RC=STATUS)
53825408 VERIFY_(STATUS)
53835409
5410+ call ESMF_ClockGetAlarm(CLOCK, 'MoistAlarm', MoistAlarm, rc=status)
5411+ _VERIFY(status)
5412+
5413+ if ( .not. ESMF_AlarmIsRinging(MoistAlarm)) then
5414+ RETURN_(ESMF_SUCCESS)
5415+ endif
5416+
53845417 call MAPL_TimerOn (STATE,"TOTAL")
53855418
53865419 ! Get parameters from generic state.
@@ -5397,7 +5430,6 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC )
53975430
53985431
53995432
5400-
54015433 ! If its time, calculate convective tendencies
54025434 ! --------------------------------------------
54035435
@@ -5904,7 +5936,7 @@ subroutine MOIST_DRIVER(IM,JM,LM, RC)
59045936
59055937 real :: CBL_TPERTi, CBL_TPERT, CBL_QPERT, RASAL1, RASAL2
59065938 real :: RHEXCESS,CBL_TPERT_MXOCN,CBL_TPERT_MXLND
5907- real :: HEARTBEAT
5939+ real :: HEARTBEAT, Moist_DT
59085940
59095941 integer :: L, K, I, J, KM, KK , Kii, NAER, N !DONIF
59105942
@@ -6337,6 +6369,8 @@ subroutine MOIST_DRIVER(IM,JM,LM, RC)
63376369 !----------------------------------
63386370 call ESMF_ConfigGetAttribute (CF, HEARTBEAT, Label="RUN_DT:", RC=STATUS)
63396371 VERIFY_(STATUS)
6372+ call ESMF_ConfigGetAttribute ( CF, Moist_DT, Label="MOIST_DT:", default = HEARTBEAT RC=STATUS)
6373+ VERIFY_(STATUS)
63406374
63416375 call ESMF_ConfigGetAttribute( CF, RAS_NO_NEG, Label='RAS_NO_NEG:', default=.FALSE. , RC=STATUS)
63426376 VERIFY_(STATUS)
@@ -6391,7 +6425,7 @@ subroutine MOIST_DRIVER(IM,JM,LM, RC)
63916425 call MAPL_GetResource(STATE, ORG_INFAC, 'ORG_INFAC:', DEFAULT= 1.0, RC=STATUS)
63926426 call MAPL_GetResource(STATE, SS_INFAC, 'SS_INFAC:', DEFAULT= 1.0, RC=STATUS)
63936427
6394- call MAPL_GetResource(STATE, DT_MICRO, 'DT_MICRO:', DEFAULT= HEARTBEAT , RC=STATUS) ! time step of the microphysics substepping (s) (MG2) (5 min)
6428+ call MAPL_GetResource(STATE, DT_MICRO, 'DT_MICRO:', DEFAULT= Moist_DT , RC=STATUS) ! time step of the microphysics substepping (s) (MG2) (5 min)
63956429 call MAPL_GetResource(STATE, UR_SCALE, 'URSCALE:', DEFAULT= 1.0, RC=STATUS) !Scaling factor for sed vel of rain
63966430
63976431 call MAPL_GetResource(STATE, USE_NATURE_WSUB, 'USE_NAT_WSUB:', DEFAULT= 1.0 ,RC=STATUS) !greater than zero reads wsub from nature run
0 commit comments