<p><b>laura@ucar.edu</b> 2011-09-27 17:32:07 -0600 (Tue, 27 Sep 2011)</p><p>modifications to include the initialization of the CAM longwave and shortwave radiation codes<br>
</p><hr noshade><pre><font color="gray">Modified: branches/atmos_physics/src/core_physics/Makefile
===================================================================
--- branches/atmos_physics/src/core_physics/Makefile        2011-09-27 23:28:45 UTC (rev 1034)
+++ branches/atmos_physics/src/core_physics/Makefile        2011-09-27 23:32:07 UTC (rev 1035)
@@ -30,6 +30,7 @@
        module_physics_landuse.o \
        module_physics_lsm_noahinit.o \
        module_physics_manager.o \
+        module_physics_ra_caminit.o \
        module_physics_rrtmg_lwinit.o \
        module_physics_rrtmg_swinit.o \
        module_physics_todynamics.o \
@@ -65,84 +66,91 @@
        module_physics_vars.o
module_driver_convection_deep.o: \
-        module_physics_constants.o \
-        module_physics_vars.o \
+        module_physics_constants.o \
+        module_physics_vars.o \
        ./physics_wrf/module_cu_kfeta.o
module_driver_lsm.o: \
-        module_physics_constants.o \
-        module_physics_landuse.o \
-        module_physics_lsm_noahinit.o \
-        module_physics_vars.o \
+        module_physics_constants.o \
+        module_physics_landuse.o \
+        module_physics_lsm_noahinit.o \
+        module_physics_vars.o \
        ./physics_wrf/module_sf_noahdrv.o
module_driver_pbl.o: \
-        module_physics_constants.o \
-        module_physics_vars.o \
+        module_physics_constants.o \
+        module_physics_vars.o \
        ./physics_wrf/module_bl_ysu.o
module_driver_radiation_lw.o: \
-        module_physics_constants.o \
-        module_physics_rrtmg_lwinit.o \
-        module_physics_vars.o \
+        module_physics_constants.o \
+        module_physics_rrtmg_lwinit.o \
+        module_physics_ra_caminit.o \
+        module_physics_vars.o \
        ./physics_wrf/module_ra_rrtmg_lw.o
module_driver_radiation_sw.o: \
-        module_physics_manager.o \
-        module_physics_constants.o \
-        module_physics_rrtmg_swinit.o \
-        module_physics_vars.o \
+        module_physics_manager.o \
+        module_physics_constants.o \
+        module_physics_ra_caminit.o \
+        module_physics_rrtmg_swinit.o \
+        module_physics_vars.o \
        ./physics_wrf/module_ra_rrtmg_sw.o
module_driver_sfclayer.o: \
-        module_physics_constants.o \
-        module_physics_vars.o \
+        module_physics_constants.o \
+        module_physics_vars.o \
        ./physics_wrf/module_sf_sfclay.o
module_physics_control.o: \
        module_physics_utilities.o
module_physics_init.o: \
-        module_driver_convection_deep.o \
-        module_driver_lsm.o \
-        module_driver_microphysics.o \
-        module_driver_radiation_lw.o \
-        module_driver_radiation_sw.o \
-        module_driver_sfclayer.o \
+        module_driver_convection_deep.o \
+        module_driver_lsm.o \
+        module_driver_microphysics.o \
+        module_driver_radiation_lw.o \
+        module_driver_radiation_sw.o \
+        module_driver_sfclayer.o \
        module_physics_landuse.o
module_physics_landuse.o: \
-        module_physics_utilities.o \
+        module_physics_utilities.o \
        module_physics_vars.o
module_physics_lsm_noahinit.o: \
-        module_physics_constants.o \
-        module_physics_utilities.o \
+        module_physics_constants.o \
+        module_physics_utilities.o \
        ./physics_wrf/module_sf_noahlsm.o
module_physics_manager.o: \
-        module_physics_constants.o \
-        module_physics_vars.o \
-        module_physics_update_surface.o \
+        module_physics_constants.o \
+        module_physics_vars.o \
+        module_physics_update_surface.o \
        module_physics_utilities.o
+module_physics_ra_caminit.o: \
+        module_physics_constants.o \
+        module_physics_utilities.o \
+        ./physics_wrf/module_ra_cam_support.o
+
module_physics_rrtmg_lwinit.o: \
-        module_physics_constants.o \
-        module_physics_utilities.o \
+        module_physics_constants.o \
+        module_physics_utilities.o \
        ./physics_wrf/module_ra_rrtmg_lw.o
module_physics_rrtmg_swinit.o: \
-        module_physics_constants.o \
-        module_physics_utilities.o \
+        module_physics_constants.o \
+        module_physics_utilities.o \
        ./physics_wrf/module_ra_rrtmg_sw.o
module_physics_todynamics.o: \
        module_physics_vars.o
module_physics_update_surface.o: \
-        module_physics_date_time.o \
-        module_physics_constants.o \
-        module_physics_landuse.o \
+        module_physics_date_time.o \
+        module_physics_constants.o \
+        module_physics_landuse.o \
        module_physics_vars.o
module_physics_update.o: \
@@ -152,48 +160,48 @@
ifeq ($(CORE),hyd_atmos)
module_physics_interface_hyd.o: \
-        module_physics_constants.o \
+        module_physics_constants.o \
        module_physics_vars.o
module__driver_microphysics.o: \
-        ./physics_wrf/module_mp_kessler.o \
-        ./physics_wrf/module_mp_thompson.o \
-        ./physics_wrf/module_mp_wsm6.o \
-        module_physics_constants.o \
-        module_physics_interface_hyd.o \
+        ./physics_wrf/module_mp_kessler.o \
+        ./physics_wrf/module_mp_thompson.o \
+        ./physics_wrf/module_mp_wsm6.o \
+        module_physics_constants.o \
+        module_physics_interface_hyd.o \
        module_physics_vars.o
module_physics_driver.o: \
-        module_driver_convection_deep.o \
-        module_driver_lsm.o \
-        module_driver_pbl.o \
-        module_driver_sfclayer.o \
-        module_physics_constants.o \
-        module_physics_interface_hyd.o \
+        module_driver_convection_deep.o \
+        module_driver_lsm.o \
+        module_driver_pbl.o \
+        module_driver_sfclayer.o \
+        module_physics_constants.o \
+        module_physics_interface_hyd.o \
        module_physics_vars.o
else
module_physics_interface_nhyd.o: \
-        module_physics_constants.o \
+        module_physics_constants.o \
        module_physics_vars.o
module_driver_microphysics.o: \
-        ./physics_wrf/module_mp_kessler.o \
-        ./physics_wrf/module_mp_thompson.o \
-        ./physics_wrf/module_mp_wsm6.o \
-        module_physics_constants.o \
-        module_physics_interface_nhyd.o \
+        ./physics_wrf/module_mp_kessler.o \
+        ./physics_wrf/module_mp_thompson.o \
+        ./physics_wrf/module_mp_wsm6.o \
+        module_physics_constants.o \
+        module_physics_interface_nhyd.o \
        module_physics_vars.o
module_physics_driver.o: \
-        module_driver_convection_deep.o \
-        module_driver_pbl.o \
-        module_driver_radiation_lw.o \
-        module_driver_radiation_sw.o \
-        module_driver_sfclayer.o \
-        module_physics_constants.o \
-        module_physics_interface_nhyd.o \
+        module_driver_convection_deep.o \
+        module_driver_pbl.o \
+        module_driver_radiation_lw.o \
+        module_driver_radiation_sw.o \
+        module_driver_sfclayer.o \
+        module_physics_constants.o \
+        module_physics_interface_nhyd.o \
        module_physics_vars.o
endif
Modified: branches/atmos_physics/src/core_physics/module_driver_radiation_lw.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_driver_radiation_lw.F        2011-09-27 23:28:45 UTC (rev 1034)
+++ branches/atmos_physics/src/core_physics/module_driver_radiation_lw.F        2011-09-27 23:32:07 UTC (rev 1035)
@@ -3,6 +3,7 @@
use grid_types
use module_physics_constants
+ use module_physics_ra_caminit
use module_physics_rrtmg_lwinit
use module_physics_vars
@@ -190,12 +191,16 @@
end subroutine radiation_lw_to_MPAS
!=============================================================================================
- subroutine init_radiation_lw(dminfo)
+ subroutine init_radiation_lw(dminfo,mesh,state_1,state_2)
!=============================================================================================
!input arguments:
type(dm_info),intent(in):: dminfo
+ type(mesh_type),intent(in),optional :: mesh
+!inout arguments:
+ type(state_type),intent(inout),optional:: state_1,state_2
+
!---------------------------------------------------------------------------------------------
write(0,*)
@@ -207,6 +212,11 @@
call rrtmg_initlw_forMPAS(dminfo)
write(0,*) ' end subroutine rrtmg_lwinit'
+ case("cam_lw")
+ write(0,*) ' enter subroutine camradinit:'
+ call camradinit(dminfo,mesh,state_1,state_2)
+ write(0,*) ' end subroutine camradinit'
+
case default
end select radiation_lw_select
Modified: branches/atmos_physics/src/core_physics/module_driver_radiation_sw.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_driver_radiation_sw.F        2011-09-27 23:28:45 UTC (rev 1034)
+++ branches/atmos_physics/src/core_physics/module_driver_radiation_sw.F        2011-09-27 23:32:07 UTC (rev 1035)
@@ -4,6 +4,7 @@
use module_physics_manager
use module_physics_constants
+ use module_physics_ra_caminit
use module_physics_rrtmg_swinit
use module_physics_vars
@@ -203,12 +204,16 @@
end subroutine radiation_sw_to_MPAS
!=============================================================================================
- subroutine init_radiation_sw(dminfo)
+ subroutine init_radiation_sw(dminfo,mesh,state_1,state_2)
!=============================================================================================
!input arguments:
type(dm_info), intent(in):: dminfo
+ type(mesh_type),intent(in),optional :: mesh
+!inout arguments:
+ type(state_type),intent(inout),optional:: state_1,state_2
+
!---------------------------------------------------------------------------------------------
write(0,*)
write(0,*) '--- begin radiation_sw initialization:'
@@ -221,6 +226,11 @@
call rrtmg_initsw_forMPAS(dminfo)
write(0,*) ' end subroutine rrtmg_swinit'
+ case("cam_sw")
+ write(0,*) ' enter subroutine camradinit:'
+ call camradinit(dminfo,mesh,state_1,state_2)
+ write(0,*) ' end subroutine camradinit'
+
case default
end select radiation_sw_select
Modified: branches/atmos_physics/src/core_physics/module_physics_control.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_physics_control.F        2011-09-27 23:28:45 UTC (rev 1034)
+++ branches/atmos_physics/src/core_physics/module_physics_control.F        2011-09-27 23:32:07 UTC (rev 1035)
@@ -33,11 +33,6 @@
subroutine physics_namelist_check
!=============================================================================================
-!local variables:
- character(len=120):: errmess
-
-!---------------------------------------------------------------------------------------------
-
write(0,*)
write(0,*) '--- enter subroutine physics_namelist_check:'
write(0,*) ' config_microp_scheme = ', config_microp_scheme
@@ -56,18 +51,18 @@
config_microp_scheme .eq. 'thompson' .or. &
config_microp_scheme .eq. 'wsm6' )) then
- write(errmess,'(A,A10)') 'illegal value for config_microp_scheme:', &
+ write(mpas_err_message,'(A,A10)') 'illegal value for config_microp_scheme:', &
trim(config_microp_scheme)
- call physics_error_fatal(errmess)
+ call physics_error_fatal(mpas_err_message)
endif
!shallow convection scheme:
if(.not. (trim(config_conv_shallow_scheme) .eq. 'off')) then
- write(errmess,'(A,A10)') 'illegal value for config_conv_shallow_scheme: ', &
+ write(mpas_err_message,'(A,A10)') 'illegal value for config_conv_shallow_scheme: ', &
trim(config_conv_shallow_scheme)
- call physics_error_fatal(errmess)
+ call physics_error_fatal(mpas_err_message)
endif
@@ -75,9 +70,9 @@
if(.not. (config_conv_deep_scheme .eq. 'off' .or. &
config_conv_deep_scheme .eq. 'kain_fritsch')) then
- write(errmess,'(A,A10)') 'illegal value for config_deep_conv_scheme: ', &
+ write(mpas_err_message,'(A,A10)') 'illegal value for config_deep_conv_scheme: ', &
trim(config_conv_deep_scheme)
- call physics_error_fatal(errmess)
+ call physics_error_fatal(mpas_err_message)
endif
@@ -85,38 +80,40 @@
if(.not. (config_pbl_scheme .eq. 'off' .or. &
config_pbl_scheme .eq. 'ysu')) then
- write(errmess,'(A,A10)') 'illegal value for pbl_scheme: ', &
+ write(mpas_err_message,'(A,A10)') 'illegal value for pbl_scheme: ', &
trim(config_pbl_scheme)
- call physics_error_fatal(errmess)
+ call physics_error_fatal(mpas_err_message)
endif
!diffusion scheme:
if(.not. (config_eddy_scheme .eq. 'off')) then
- write(errmess,'(A,A10)') 'illegal value for diffusion_scheme: ', &
+ write(mpas_err_message,'(A,A10)') 'illegal value for diffusion_scheme: ', &
trim(config_eddy_scheme)
- call physics_error_fatal(errmess)
+ call physics_error_fatal(mpas_err_message)
endif
!lw radiation scheme:
- if(.not. (config_radt_lw_scheme .eq. 'off ' .or. &
+ if(.not. (config_radt_lw_scheme .eq. 'off ' .or. &
+ config_radt_lw_scheme .eq. 'cam_lw' .or. &
config_radt_lw_scheme .eq. 'rrtmg_lw')) then
- write(errmess,'(A,A10)') 'illegal value for longwave radiation scheme: ', &
+ write(mpas_err_message,'(A,A10)') 'illegal value for longwave radiation scheme: ', &
trim(config_radt_lw_scheme)
- call physics_error_fatal(errmess)
+ call physics_error_fatal(mpas_err_message)
endif
!sw radiation scheme:
- if(.not. (config_radt_sw_scheme .eq. 'off ' .or. &
+ if(.not. (config_radt_sw_scheme .eq. 'off ' .or. &
+ config_radt_sw_scheme .eq. 'cam_sw' .or. &
config_radt_sw_scheme .eq. 'rrtmg_sw')) then
- write(errmess,'(A,A10)') 'illegal value for shortwave radiation _scheme: ', &
+ write(mpas_err_message,'(A,A10)') 'illegal value for shortwave radiation _scheme: ', &
trim(config_radt_sw_scheme)
- call physics_error_fatal(errmess)
+ call physics_error_fatal(mpas_err_message)
endif
@@ -124,9 +121,9 @@
if(.not. (config_sfclayer_scheme .eq. 'off ' .or. &
config_sfclayer_scheme .eq. 'monin_obukhov')) then
- write(errmess,'(A,A10)') 'illegal value for surface layer scheme: ', &
+ write(mpas_err_message,'(A,A10)') 'illegal value for surface layer scheme: ', &
trim(config_sfclayer_scheme)
- call physics_error_fatal(errmess)
+ call physics_error_fatal(mpas_err_message)
endif
@@ -140,9 +137,9 @@
elseif(.not. (config_lsm_scheme .eq. 'off ' .or. &
config_lsm_scheme .eq. 'noah')) then
- write(errmess,'(A,A10)') 'illegal value for land surface scheme: ', &
+ write(mpas_err_message,'(A,A10)') 'illegal value for land surface scheme: ', &
trim(config_lsm_scheme)
- call physics_error_fatal(errmess)
+ call physics_error_fatal(mpas_err_message)
endif
Modified: branches/atmos_physics/src/core_physics/module_physics_init.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_physics_init.F        2011-09-27 23:28:45 UTC (rev 1034)
+++ branches/atmos_physics/src/core_physics/module_physics_init.F        2011-09-27 23:32:07 UTC (rev 1035)
@@ -26,7 +26,8 @@
contains
!=============================================================================================
- subroutine physics_init(dminfo,clock,config_do_restart,mesh,state,diag_physics,sfc_input)
+ subroutine physics_init(dminfo,clock,config_do_restart,mesh,state_1,state_2, &
+ diag_physics,sfc_input)
!=============================================================================================
!input arguments:
@@ -36,12 +37,14 @@
type(MPAS_Clock_type),intent(in):: clock
!inout arguments:
- type(state_type),intent(inout):: state
+ type(state_type),intent(inout):: state_1,state_2
type(diag_physics_type),intent(inout):: diag_physics
type(sfc_input_type) ,intent(inout):: sfc_input
!local variables:
type(MPAS_Time_Type):: currTime
+
+ logical:: init_done
integer:: iCell,iLag,ierr,julday
!---------------------------------------------------------------------------------------------
@@ -90,10 +93,31 @@
if(config_lsm_scheme .ne. 'off') call init_lsm(dminfo,mesh,diag_physics,sfc_input)
!initialization of shortwave radiation processes:
- if(config_radt_sw_scheme.ne.'off') call init_radiation_sw(dminfo)
+ init_done = .false.
+ if(config_radt_sw_scheme.ne.'off') then
+ if(trim(config_radt_sw_scheme) .eq. 'cam_sw') then
+ call init_radiation_sw(dminfo,mesh,state_1,state_2)
+ init_done = .true.
+ else
+ call init_radiation_sw(dminfo)
+ endif
+ endif
-!initialization of longwave radiation processes:
- if(config_radt_lw_scheme.ne.'off') call init_radiation_lw(dminfo)
+!initialization of longwave radiation processes: if we run the CAM radiation codes, the initia
+!lization of the longwave and shortwave parameterizations is the same, and needs to be called
+!only once:
+ if(config_radt_lw_scheme.ne.'off') then
+ if(trim(config_radt_lw_scheme) .eq. 'cam_lw') then
+ if(.not. init_done) then
+ call init_radiation_lw(dminfo,mesh,state_1,state_2)
+ else
+ write(0,*)
+ write(0,*) '--- camrad lw initialization done above'
+ endif
+ else
+ call init_radiation_lw(dminfo)
+ endif
+ endif
write(0,*)
write(0,*) '--- end subroutine physics_init'
Modified: branches/atmos_physics/src/core_physics/module_physics_manager.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_physics_manager.F        2011-09-27 23:28:45 UTC (rev 1034)
+++ branches/atmos_physics/src/core_physics/module_physics_manager.F        2011-09-27 23:32:07 UTC (rev 1035)
@@ -171,7 +171,6 @@
call MPAS_addClockAlarm(clock,radtlwAlarmID,alarmStartTime,alarmTimeStep,ierr=ierr)
if(ierr /= 0) &
call physics_error_fatal('subroutine physics_init: error creating alarm radtlw')
- write(0,*) '--- end define alarm lw ierr: ',ierr
endif
if(trim(config_radtsw_interval) /= "none") then
@@ -180,7 +179,6 @@
call MPAS_addClockAlarm(clock,radtswAlarmID,alarmStartTime,alarmTimeStep,ierr=ierr)
if(ierr /= 0) &
call physics_error_fatal('subroutine physics_init: error creating alarm radtsw')
- write(0,*) '--- end define alarm sw ierr: ',ierr
endif
if(trim(config_conv_interval) /= "none") then
Modified: branches/atmos_physics/src/core_physics/module_physics_utilities.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_physics_utilities.F        2011-09-27 23:28:45 UTC (rev 1034)
+++ branches/atmos_physics/src/core_physics/module_physics_utilities.F        2011-09-27 23:32:07 UTC (rev 1035)
@@ -6,6 +6,8 @@
public:: physics_error_fatal, &
physics_message
+ character(len=120),public:: mpas_err_message
+
contains
!=============================================================================================
Modified: branches/atmos_physics/src/core_physics/physics_wrf/Makefile
===================================================================
--- branches/atmos_physics/src/core_physics/physics_wrf/Makefile        2011-09-27 23:28:45 UTC (rev 1034)
+++ branches/atmos_physics/src/core_physics/physics_wrf/Makefile        2011-09-27 23:32:07 UTC (rev 1035)
@@ -6,47 +6,62 @@
        echo "****** compile physics_wrf ******"
OBJS = \
-        libmassv.o \
-        module_bl_ysu.o \
-        module_cu_kfeta.o \
-        module_mp_kessler.o \
-        module_mp_thompson.o \
-        module_mp_wsm6.o \
-        module_ra_rrtmg_lw.o \
-        module_ra_rrtmg_sw.o \
-        module_sf_bem.o \
-        module_sf_bep.o \
-        module_sf_bep_bem.o \
-        module_sf_noahdrv.o \
-        module_sf_noahlsm.o \
-        module_sf_sfclay.o \
+        libmassv.o \
+        module_bl_ysu.o \
+        module_cam_shr_kind_mod.o \
+        module_cam_support.o \
+        module_cu_kfeta.o \
+        module_mp_kessler.o \
+        module_mp_thompson.o \
+        module_mp_wsm6.o \
+        module_ra_cam.o \
+        module_ra_cam_support.o \
+        module_ra_rrtmg_lw.o \
+        module_ra_rrtmg_sw.o \
+        module_sf_bem.o \
+        module_sf_bep.o \
+        module_sf_bep_bem.o \
+        module_sf_noahdrv.o \
+        module_sf_noahlsm.o \
+        module_sf_sfclay.o \
        module_sf_urban.o
physics_wrf: $(OBJS)
        ar -ru ./../libphys.a $(OBJS)
# DEPENDENCIES:
-module_mp_thompson.o: \
+module_cam_support.o: \
+        module_cam_shr_kind_mod.o \
        ../module_physics_utilities.o
+module_mp_thompson.o:\
+        ../module_physics_utilities.o
+
module_mp_wsm6.o: \
        libmassv.o
-module_sf_bep.o: \
+module_ra_cam.o: \
+        module_cam_support.o \
+        module_ra_cam_support.o
+
+module_ra_cam_support.o: \
+        module_cam_support.o
+
+module_sf_bep.o: \
        module_sf_urban.o
-module_sf_bep_bem.o: \
-        module_sf_bem.o \
+module_sf_bep_bem.o: \
+        module_sf_bem.o \
        module_sf_urban.o
-module_sf_noahdrv.o: \
-         module_sf_bem.o \
-        module_sf_bep.o \
-        module_sf_bep_bem.o \
-        module_sf_noahlsm.o \
+module_sf_noahdrv.o: \
+         module_sf_bem.o \
+        module_sf_bep.o \
+        module_sf_bep_bem.o \
+        module_sf_noahlsm.o \
        module_sf_urban.o
-module_sf_noahlsm.o: \
+module_sf_noahlsm.o: \
        ../module_physics_constants.o
clean:
</font>
</pre>