<p><b>laura@ucar.edu</b> 2012-03-01 16:17:44 -0700 (Thu, 01 Mar 2012)</p><p>added alarm, and initialization of accumulated radiation diagnostics and accumulated radiation counters<br>
</p><hr noshade><pre><font color="gray">Modified: branches/atmos_physics/src/core_atmos_physics/mpas_atmphys_init.F
===================================================================
--- branches/atmos_physics/src/core_atmos_physics/mpas_atmphys_init.F        2012-03-01 22:42:29 UTC (rev 1567)
+++ branches/atmos_physics/src/core_atmos_physics/mpas_atmphys_init.F        2012-03-01 23:17:44 UTC (rev 1568)
@@ -63,11 +63,53 @@
!threshold value:
if(.not. config_do_restart) then
do iCell = 1, mesh % nCellsSolve
- diag_physics % i_rainc % array(iCell) = 0._RKIND
- diag_physics % i_rainnc % array(iCell) = 0._RKIND
+ diag_physics % i_rainc % array(iCell) = 0
+ diag_physics % i_rainnc % array(iCell) = 0
enddo
endif
+!initialization of counters i_acsw* and i_aclw*. i_acsw* and i_aclw* track the number of times
+!the accumulated long and short-wave radiation fluxes exceed their prescribed theshold values.
+ if(.not. config_do_restart) then
+ do iCell = 1, mesh % nCellsSolve
+ diag_physics % i_acswdnb % array(iCell) = 0
+ diag_physics % i_acswdnbc % array(iCell) = 0
+ diag_physics % i_acswdnt % array(iCell) = 0
+ diag_physics % i_acswdntc % array(iCell) = 0
+ diag_physics % i_acswupb % array(iCell) = 0
+ diag_physics % i_acswupbc % array(iCell) = 0
+ diag_physics % i_acswupt % array(iCell) = 0
+ diag_physics % i_acswuptc % array(iCell) = 0
+
+ diag_physics % i_aclwdnb % array(iCell) = 0
+ diag_physics % i_aclwdnbc % array(iCell) = 0
+ diag_physics % i_aclwdnt % array(iCell) = 0
+ diag_physics % i_aclwdntc % array(iCell) = 0
+ diag_physics % i_aclwupb % array(iCell) = 0
+ diag_physics % i_aclwupbc % array(iCell) = 0
+ diag_physics % i_aclwupt % array(iCell) = 0
+ diag_physics % i_aclwuptc % array(iCell) = 0
+
+ diag_physics % acswdnb % array(iCell) = 0._RKIND
+ diag_physics % acswdnbc % array(iCell) = 0._RKIND
+ diag_physics % acswdnt % array(iCell) = 0._RKIND
+ diag_physics % acswdntc % array(iCell) = 0._RKIND
+ diag_physics % acswupb % array(iCell) = 0._RKIND
+ diag_physics % acswupbc % array(iCell) = 0._RKIND
+ diag_physics % acswupt % array(iCell) = 0._RKIND
+ diag_physics % acswuptc % array(iCell) = 0._RKIND
+
+ diag_physics % aclwdnb % array(iCell) = 0._RKIND
+ diag_physics % aclwdnbc % array(iCell) = 0._RKIND
+ diag_physics % aclwdnt % array(iCell) = 0._RKIND
+ diag_physics % aclwdntc % array(iCell) = 0._RKIND
+ diag_physics % aclwupb % array(iCell) = 0._RKIND
+ diag_physics % aclwupbc % array(iCell) = 0._RKIND
+ diag_physics % aclwupt % array(iCell) = 0._RKIND
+ diag_physics % aclwuptc % array(iCell) = 0._RKIND
+ enddo
+ endif
+
!initialization of temperatures needed for updating the deep soil temperature:
if(.not. config_do_restart) then
do iCell = 1, mesh % nCellsSolve
Modified: branches/atmos_physics/src/core_atmos_physics/mpas_atmphys_manager.F
===================================================================
--- branches/atmos_physics/src/core_atmos_physics/mpas_atmphys_manager.F        2012-03-01 22:42:29 UTC (rev 1567)
+++ branches/atmos_physics/src/core_atmos_physics/mpas_atmphys_manager.F        2012-03-01 23:17:44 UTC (rev 1568)
@@ -46,9 +46,14 @@
!defines alarm to check if the accumulated rain due to cloud microphysics and convection is
!greater than its maximum allowed value:
- integer, parameter:: rainAlarmID = 19
- type(MPAS_TimeInterval_Type):: rainTimeStep
+ integer, parameter:: acrainAlarmID = 19
+ type(MPAS_TimeInterval_Type):: acrainTimeStep
+!defines alarm to check if the accumulated radiation diagnostics due to long- and short-wave
+!radiation is greater than its maximum allowed value:
+ integer, parameter:: acradtAlarmID = 20
+ type(MPAS_TimeInterval_Type):: acradtTimeStep
+
integer :: h, m, s, s_n, s_d, DoY, yr
real(kind=RKIND) :: utc_h
@@ -191,12 +196,21 @@
!check to see if it is time to apply limit to the accumulated rain due to cloud microphysics
!and convection:
- l_rain = .false.
- if(mpas_is_alarm_ringing(clock,rainAlarmID,rainTimeStep,ierr=ierr)) then
- call mpas_reset_clock_alarm(clock,rainAlarmID,rainTimeStep,ierr=ierr)
- l_rain = .true.
+ l_acrain = .false.
+ if(mpas_is_alarm_ringing(clock,acrainAlarmID,acrainTimeStep,ierr=ierr)) then
+ call mpas_reset_clock_alarm(clock,acrainAlarmID,acrainTimeStep,ierr=ierr)
+ l_acrain = .true.
endif
- write(0,*) '--- time to apply limit to accumulated rainc and rainnc L_RAIN =',l_rain
+ write(0,*) '--- time to apply limit to accumulated rainc and rainnc L_ACRAIN =',l_acrain
+
+!check to see if it is time to apply limit to the accumulated radiation diagnostics due to
+!long- and short-wave radiation:
+ l_acradt = .false.
+ if(mpas_is_alarm_ringing(clock,acradtAlarmID,acradtTimeStep,ierr=ierr)) then
+ call mpas_reset_clock_alarm(clock,acradtAlarmID,acradtTimeStep,ierr=ierr)
+ l_acradt = .true.
+ endif
+ write(0,*) '--- time to apply limit to accumulated radiation diagnostics L_ACRADT =',l_acradt
!formats:
101 format(3x,'l_radtlw = ',l1,3x,'l_radtsw = ',l1)
@@ -372,14 +386,25 @@
!set alarm to check if the accumulated rain due to cloud microphysics and convection is
!greater than its maximum allowed value:
if(config_bucket_update /= "none") then
- call mpas_set_timeInterval(rainTimeStep,dt=config_dt,ierr=ierr)
+ call mpas_set_timeInterval(acrainTimeStep,dt=config_dt,ierr=ierr)
call mpas_set_timeInterval(alarmTimeStep,timeString=config_bucket_update,ierr=ierr)
alarmStartTime = startTime + alarmTimeStep
- call mpas_add_clock_alarm(clock,rainAlarmID,alarmStartTime,alarmTimeStep,ierr=ierr)
+ call mpas_add_clock_alarm(clock,acrainAlarmID,alarmStartTime,alarmTimeStep,ierr=ierr)
if(ierr /= 0) &
call physics_error_fatal('subroutine physics_init: error creating alarm rain limit')
endif
+!set alarm to check if the accumulated radiation diagnostics due to long- and short-wave radiation
+!is greater than its maximum allowed value:
+ if(config_bucket_update /= "none") then
+ call mpas_set_timeInterval(acradtTimeStep,dt=config_dt,ierr=ierr)
+ call mpas_set_timeInterval(alarmTimeStep,timeString=config_bucket_update,ierr=ierr)
+ alarmStartTime = startTime + alarmTimeStep
+ call mpas_add_clock_alarm(clock,acradtAlarmID,alarmStartTime,alarmTimeStep,ierr=ierr)
+ if(ierr /= 0) &
+ call physics_error_fatal('subroutine physics_init: error creating alarm radiation limit')
+ endif
+
write(0,102) dt_radtlw,dt_radtsw,dt_cu,dt_pbl
!initialization of physics dimensions to mimic a rectangular grid:
</font>
</pre>