<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(&quot;cam_lw&quot;)
+       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(&quot;cam_sw&quot;)
+       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. &amp;
            config_microp_scheme .eq. 'wsm6'     )) then
           
-    write(errmess,'(A,A10)') 'illegal value for config_microp_scheme:', &amp;
+    write(mpas_err_message,'(A,A10)') 'illegal value for config_microp_scheme:', &amp;
           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: ', &amp;
+    write(mpas_err_message,'(A,A10)') 'illegal value for config_conv_shallow_scheme: ', &amp;
           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. &amp;
            config_conv_deep_scheme .eq. 'kain_fritsch')) then
 
-    write(errmess,'(A,A10)') 'illegal value for config_deep_conv_scheme: ', &amp;
+    write(mpas_err_message,'(A,A10)') 'illegal value for config_deep_conv_scheme: ', &amp;
           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. &amp;
            config_pbl_scheme .eq. 'ysu')) then
 
-    write(errmess,'(A,A10)') 'illegal value for pbl_scheme: ', &amp;
+    write(mpas_err_message,'(A,A10)') 'illegal value for pbl_scheme: ', &amp;
           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: ', &amp;
+    write(mpas_err_message,'(A,A10)') 'illegal value for diffusion_scheme: ', &amp;
           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. &amp;
+ if(.not. (config_radt_lw_scheme .eq. 'off '   .or. &amp;
+           config_radt_lw_scheme .eq. 'cam_lw' .or. &amp;
            config_radt_lw_scheme .eq. 'rrtmg_lw')) then
  
-    write(errmess,'(A,A10)') 'illegal value for longwave radiation scheme: ', &amp;
+    write(mpas_err_message,'(A,A10)') 'illegal value for longwave radiation scheme: ', &amp;
           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. &amp;
+ if(.not. (config_radt_sw_scheme .eq. 'off '   .or. &amp;
+           config_radt_sw_scheme .eq. 'cam_sw' .or. &amp;
            config_radt_sw_scheme .eq. 'rrtmg_sw')) then
  
-    write(errmess,'(A,A10)') 'illegal value for shortwave radiation _scheme: ', &amp;
+    write(mpas_err_message,'(A,A10)') 'illegal value for shortwave radiation _scheme: ', &amp;
           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. &amp;
            config_sfclayer_scheme .eq. 'monin_obukhov')) then
  
-    write(errmess,'(A,A10)') 'illegal value for surface layer scheme: ', &amp;
+    write(mpas_err_message,'(A,A10)') 'illegal value for surface layer scheme: ', &amp;
           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. &amp;
                config_lsm_scheme .eq. 'noah')) then
  
-    write(errmess,'(A,A10)') 'illegal value for land surface scheme: ', &amp;
+    write(mpas_err_message,'(A,A10)') 'illegal value for land surface scheme: ', &amp;
           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, &amp;
+                         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) &amp;
        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) /= &quot;none&quot;) then
@@ -180,7 +179,6 @@
     call MPAS_addClockAlarm(clock,radtswAlarmID,alarmStartTime,alarmTimeStep,ierr=ierr)
     if(ierr /= 0) &amp;
        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) /= &quot;none&quot;) 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, &amp;
           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 &quot;****** compile physics_wrf ******&quot;
 
 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>