<p><b>laura@ucar.edu</b> 2010-10-14 10:35:28 -0600 (Thu, 14 Oct 2010)</p><p>updated with additional physics<br>
</p><hr noshade><pre><font color="gray">Modified: branches/atmos_physics/src/core_physics/module_physics_control.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_physics_control.F        2010-10-14 16:32:35 UTC (rev 553)
+++ branches/atmos_physics/src/core_physics/module_physics_control.F        2010-10-14 16:35:28 UTC (rev 554)
@@ -2,13 +2,18 @@
module module_physics_control
! ... description:
-! ... module_physics_namelist controls namelist parameters read in namelist.input.
+! ... module_physics_control controls namelist parameters read in namelist.input.
! physics_namelist_check: checks that physics namelist parameters are defined correctly.
! if not, mpas aborts cleanly.
+
+! ... physics_registry_init : initializes physics arrays declared in Registry for non-restart
+! runs.
+
! Laura D. Fowler (laura@ucar.edu).
! revision history:
! 06-29-2010: creation of module.
+! 09-09-2010: added initialization of arrays related to surface parameterization.
use configure
use grid_types
@@ -36,7 +41,7 @@
write(0,*) ' config_pbl_scheme = ', config_pbl_scheme
write(0,*) ' config_radt_lw_scheme = ', config_radt_lw_scheme
write(0,*) ' config_radt_sw_scheme = ', config_radt_sw_scheme
- write(0,*) ' config_sfclay_scheme = ', config_sfclay_scheme
+ write(0,*) ' config_sfclayer_scheme = ', config_sfclayer_scheme
!cloud microphysics scheme:
if(.not. (config_microp_scheme .eq. 'off' .or. &
@@ -88,7 +93,8 @@
endif
!lw radiation scheme:
- if(.not. (config_radt_lw_scheme .eq. 'off ')) then
+ if(.not. (config_radt_lw_scheme .eq. 'off ' .or. &
+ config_radt_lw_scheme .eq. 'rrtmg_lw')) then
write(0,*) 'illegal value for radt_lw_scheme: ', config_radt_lw_scheme
! call mpas_physics_abort('illegal value for longwave radiation scheme')
@@ -97,7 +103,8 @@
endif
!sw radiation scheme:
- if(.not. (config_radt_sw_scheme .eq. 'off ')) then
+ if(.not. (config_radt_sw_scheme .eq. 'off ' .or. &
+ config_radt_sw_scheme .eq. 'rrtmg_sw')) then
write(0,*) 'illegal value for radt_sw_scheme: ', config_radt_sw_scheme
! call mpas_physics_abort('illegal value for shortwave radiation scheme')
@@ -106,10 +113,10 @@
endif
!surface layer scheme:
- if(.not. (config_sfclay_scheme .eq. 'off ' .or. &
- config_sfclay_scheme .eq. 'monin_obukhov')) then
+ if(.not. (config_sfclayer_scheme .eq. 'off ' .or. &
+ config_sfclayer_scheme .eq. 'monin_obukhov')) then
- write(0,*) 'illegal value for sfclay_scheme: ', config_sfclay_scheme
+ write(0,*) 'illegal value for sfclayer_scheme: ', config_sfclayer_scheme
! call mpas_physics_abort('illegal value for surface layer scheme')
stop
@@ -125,7 +132,7 @@
config_eddy_scheme .eq. 'off' .and. &
config_radt_lw_scheme .eq. 'off' .and. &
config_radt_sw_scheme .eq. 'off' .and. &
- config_sfclay_scheme .eq. 'off') moist_physics = .false.
+ config_sfclayer_scheme .eq. 'off') moist_physics = .false.
write(0,*) '--- end subroutine physics_namelist_check:'
@@ -167,7 +174,7 @@
!.. 1-d variables:
do icell = 1, grid%nCells
- !cloud microphysics:
+ !.. cloud microphysics:
s % rainnc % array(icell) = 0.
s % rainncv % array(icell) = 0.
s % snownc % array(icell) = 0.
@@ -175,14 +182,27 @@
s % graupelnc % array(icell) = 0.
s % graupelncv % array(icell) = 0.
- !convection:
+ !.. convection:
s % rainc % array(icell) = 0.
s % raincv % array(icell) = 0.
s % nca % array(icell) = 0.
s % cubot % array(icell) = 0.
s % cutop % array(icell) = 0.
+ !.. pbl layer:
+ s % kpbl % array(icell) = 0.
+
!.. surface layer:
+ s % br % array(icell) = 0.
+ s % cd % array(icell) = 0.
+ s % cda % array(icell) = 0.
+ s % chs % array(icell) = 0.
+ s % chs2 % array(icell) = 0.
+ s % cpm % array(icell) = 0.
+ s % cqs2 % array(icell) = 0.
+ s % ck % array(icell) = 0.
+ s % cka % array(icell) = 0.
+ s % gz1oz0 % array(icell) = 0.
s % flhc % array(icell) = 0.
s % flqc % array(icell) = 0.
s % hfx % array(icell) = 0.
@@ -190,21 +210,64 @@
s % mavail % array(icell) = 0.
s % mol % array(icell) = 0.
s % pblh % array(icell) = 0.
+ s % psim % array(iCell) = 0.
+ s % psih % array(iCell) = 0.
s % q2 % array(icell) = 0.
s % qfx % array(icell) = 0.
+ s % qgh % array(icell) = 0.
s % qsfc % array(icell) = 0.
s % regime % array(icell) = 0.
s % rmol % array(icell) = 0.
s % t2 % array(icell) = 0.
- s % tsk % array(icell) = 0.
s % th2 % array(icell) = 0.
s % u10 % array(icell) = 0.
s % ust % array(icell) = 0.
s % ustm % array(icell) = 0.
s % v10 % array(icell) = 0.
- s % xland % array(icell) = 0.
+ s % wspd % array(icell) = 0.
+ s % zol % array(icell) = 0.
s % znt % array(icell) = 0.
+ !.. shortwave radiation:
+ s % gsw % array(icell) = 0.
+ s % swcf % array(icell) = 0.
+ s % swdnb % array(icell) = 0.
+ s % swdnbc % array(icell) = 0.
+ s % swdnt % array(icell) = 0.
+ s % swdntc % array(icell) = 0.
+ s % swupb % array(icell) = 0.
+ s % swupbc % array(icell) = 0.
+ s % swupt % array(icell) = 0.
+ s % swuptc % array(icell) = 0.
+ s % swdnflx % array(icell) = 0.
+ s % swdnflxc % array(icell) = 0.
+ s % swupflx % array(icell) = 0.
+ s % swupflxc % array(icell) = 0.
+
+ !.. longwave radiation:
+ s % glw % array(icell) = 0.
+ s % lwcf % array(icell) = 0.
+ s % lwdnb % array(icell) = 0.
+ s % lwdnbc % array(icell) = 0.
+ s % lwdnt % array(icell) = 0.
+ s % lwdntc % array(icell) = 0.
+ s % lwupb % array(icell) = 0.
+ s % lwupbc % array(icell) = 0.
+ s % lwupt % array(icell) = 0.
+ s % lwuptc % array(icell) = 0.
+ s % lwdnflx % array(icell) = 0.
+ s % lwdnflxc % array(icell) = 0.
+ s % lwupflx % array(icell) = 0.
+ s % lwupflxc % array(icell) = 0.
+ s % olrtoa % array(icell) = 0.
+
+ !.. surface characteristics:
+ s % emiss % array(icell) = 0.
+ s % snow % array(icell) = 0.
+ s % tsk % array(icell) = 0.
+ s % xice % array(icell) = 0.
+ s % xland % array(icell) = 0.
+
enddo
!2-d variables:
@@ -212,7 +275,10 @@
do icell = 1, grid % nCells
do k = 1, grid % nVertLevels
- !convection:
+ !.. cloud fraction:
+ s % cldfrac % array(k,icell) = 0.
+
+ !.. convection:
s % w0avg % array(k,icell) = 0.
s % rthcuten % array(k,icell) = 0.
s % rqvcuten % array(k,icell) = 0.
@@ -221,7 +287,10 @@
s % rqicuten % array(k,icell) = 0.
s % rqscuten % array(k,icell) = 0.
- !pbl:
+ !.. surface layer:
+ s % exch_h % array(k,iCell) = 0.
+
+ !.. pbl:
s % rublten % array(k,icell) = 0.
s % rvblten % array(k,icell) = 0.
s % rthblten % array(k,icell) = 0.
@@ -229,6 +298,12 @@
s % rqcblten % array(k,icell) = 0.
s % rqiblten % array(k,icell) = 0.
+ !.. shortwave radiation:
+ s % rthratensw % array(k,icell) = 0.
+
+ !.. longwave radiation:
+ s % rthratenlw % array(k,icell) = 0.
+
enddo
enddo
Modified: branches/atmos_physics/src/core_physics/module_physics_driver.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_physics_driver.F        2010-10-14 16:32:35 UTC (rev 553)
+++ branches/atmos_physics/src/core_physics/module_physics_driver.F        2010-10-14 16:35:28 UTC (rev 554)
@@ -43,7 +43,7 @@
config_eddy_scheme .ne. 'off' .or. &
config_radt_lw_scheme .ne. 'off' .or. &
config_radt_sw_scheme .ne. 'off' .or. &
- config_sfclay_scheme .ne. 'off') then
+ config_sfclayer_scheme .ne. 'off') then
block => domain % blocklist
do while(associated(block))
Modified: branches/atmos_physics/src/core_physics/module_physics_init.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_physics_init.F        2010-10-14 16:32:35 UTC (rev 553)
+++ branches/atmos_physics/src/core_physics/module_physics_init.F        2010-10-14 16:35:28 UTC (rev 554)
@@ -4,7 +4,7 @@
use configure, only: config_do_restart, &
config_microp_scheme, &
config_conv_deep_scheme, &
- config_sfclay_scheme
+ config_sfclayer_scheme
use module_driver_convection_deep
use module_driver_microphysics
@@ -36,7 +36,7 @@
if(config_microp_scheme .ne. 'off') call microphysics_init
!initialization of surface layer processes:
- if(config_sfclay_scheme .ne. 'off') then
+ if(config_sfclayer_scheme .ne. 'off') then
call sfclayer_interface_init(s)
write(0,*) '--- end subroutine sfclayer_interface_init:'
Modified: branches/atmos_physics/src/core_physics/module_physics_manager.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_physics_manager.F        2010-10-14 16:32:35 UTC (rev 553)
+++ branches/atmos_physics/src/core_physics/module_physics_manager.F        2010-10-14 16:35:28 UTC (rev 554)
@@ -124,23 +124,11 @@
endif
!initialization of variables and allocation of arrays related to pbl processes:
+ if(config_pbl_scheme .ne. 'off') pbl_scheme = trim(config_pbl_scheme)
- if(config_pbl_scheme .ne. 'off') then
-
- if(config_pbl_scheme .eq. 'ysu') pbl_scheme = pbl_ysu
- call pbl_allocate
-
- endif
-
!initialization of variables and allocation of arrays related to surface processes:
+ if(config_sfclayer_scheme .ne. 'off') sfclayer_scheme = trim(config_sfclayer_scheme)
- if(config_sfclay_scheme .ne. 'off') then
-
- if(config_sfclay_scheme .eq. 'monin_obukhov') sfclayer_scheme = sfc_mnkhov
- call sfclayer_allocate
-
- endif
-
end subroutine physics_wrf_interface
!=============================================================================================
Modified: branches/atmos_physics/src/core_physics/module_physics_vars.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_physics_vars.F        2010-10-14 16:32:35 UTC (rev 553)
+++ branches/atmos_physics/src/core_physics/module_physics_vars.F        2010-10-14 16:35:28 UTC (rev 554)
@@ -12,8 +12,10 @@
integer,public:: microp_scheme
integer,public:: conv_deep_scheme
integer,public:: conv_shallow_scheme
- integer,public:: pbl_scheme
- integer,public:: sfclayer_scheme
+ character(len=32),public:: pbl_scheme
+ character(len=32),public:: radiation_lw_scheme
+ character(len=32),public:: radiation_sw_scheme
+ character(len=32),public:: sfclayer_scheme
!--- parameterizations of cloud microphysics:
integer,parameter,public:: microp_kessler = 0
@@ -25,12 +27,6 @@
!--- parameterizations of shallow convection:
integer,parameter,public:: conv_shallow_uw = 0
-!--- parameterization of pbl processes:
- integer,parameter,public:: pbl_ysu = 0
-
-!--- parameterization of surface processes:
- integer,parameter,public:: sfc_mnkhov = 0
-
!=============================================================================================
!wrf-variables:these variables are needed to keep calls to different physics parameterizations
!as in wrf model.
</font>
</pre>