Skip to content

Commit fb1d28f

Browse files
committed
implement flexible moist grid comp DT
1 parent fc71edb commit fb1d28f

1 file changed

Lines changed: 47 additions & 13 deletions

File tree

GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90

Lines changed: 47 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)