<p><b>laura@ucar.edu</b> 2011-01-14 09:09:05 -0700 (Fri, 14 Jan 2011)</p><p>updated sourcecode<br>
</p><hr noshade><pre><font color="gray">Modified: branches/atmos_physics/src/core_physics/module_driver_pbl.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_driver_pbl.F        2011-01-14 16:02:15 UTC (rev 695)
+++ branches/atmos_physics/src/core_physics/module_driver_pbl.F        2011-01-14 16:09:05 UTC (rev 696)
@@ -11,8 +11,8 @@
 
  implicit none
  private
- public:: pbl_allocate,   &amp;
-          pbl_deallocate, &amp;
+ public:: allocate_pbl,   &amp;
+          deallocate_pbl, &amp;
           pbl_driver
 
  logical,parameter,private:: pbl_flag_qi = .true. !
@@ -22,9 +22,23 @@
  contains
 
 !=============================================================================================
- subroutine pbl_allocate
+ subroutine allocate_pbl
 !=============================================================================================
 
+!from surface-layer model:
+ if(.not.allocated(br_p)      ) allocate(br_p(ims:ime,jms:jme)               )
+ if(.not.allocated(gz1oz0_p)  ) allocate(gz1oz0_p(ims:ime,jms:jme)           )
+ if(.not.allocated(hfx_p)     ) allocate(hfx_p(ims:ime,jms:jme)              )
+ if(.not.allocated(psih_p)    ) allocate(psih_p(ims:ime,jms:jme)             )
+ if(.not.allocated(psim_p)    ) allocate(psim_p(ims:ime,jms:jme)             )
+ if(.not.allocated(qfx_p)     ) allocate(qfx_p(ims:ime,jms:jme)              )
+ if(.not.allocated(u10_p)     ) allocate(u10_p(ims:ime,jms:jme)              )
+ if(.not.allocated(ust_p)     ) allocate(ust_p(ims:ime,jms:jme)              )
+ if(.not.allocated(v10_p)     ) allocate(v10_p(ims:ime,jms:jme)              )
+ if(.not.allocated(wspd_p)    ) allocate(wspd_p(ims:ime,jms:jme)             )
+ if(.not.allocated(xland_p)   ) allocate(xland_p(ims:ime,jms:jme)            )
+ if(.not.allocated(znt_p)     ) allocate(znt_p(ims:ime,jms:jme)              )
+
  if(.not.allocated(hpbl_p)    ) allocate(hpbl_p(ims:ime,jms:jme)             )
  if(.not.allocated(kpbl_p)    ) allocate(kpbl_p(ims:ime,jms:jme)             )
  if(.not.allocated(exch_p)    ) allocate(exch_p(ims:ime,kms:kme,jms:jme)     )
@@ -37,12 +51,26 @@
  if(.not.allocated(rqcblten_p)) allocate(rqcblten_p(ims:ime,kms:kme,jms:jme) )
  if(.not.allocated(rqiblten_p)) allocate(rqiblten_p(ims:ime,kms:kme,jms:jme) )
 
- end subroutine pbl_allocate
+ end subroutine allocate_pbl
 
 !=============================================================================================
- subroutine pbl_deallocate
+ subroutine deallocate_pbl
 !=============================================================================================
 
+!from surface-layer model:
+ if(allocated(br_p)      ) deallocate(br_p       )
+ if(allocated(gz1oz0_p)  ) deallocate(gz1oz0_p   )
+ if(allocated(hfx_p)     ) deallocate(hfx_p      )
+ if(allocated(psih_p)    ) deallocate(psih_p     )
+ if(allocated(psim_p)    ) deallocate(psim_p     )
+ if(allocated(qfx_p)     ) deallocate(qfx_p      )
+ if(allocated(u10_p)     ) deallocate(u10_p      )
+ if(allocated(ust_p)     ) deallocate(ust_p      )
+ if(allocated(v10_p)     ) deallocate(v10_p      )
+ if(allocated(wspd_p)    ) deallocate(wspd_p     )
+ if(allocated(xland_p)   ) deallocate(xland_p    )
+ if(allocated(znt_p)     ) deallocate(znt_p      )
+
  if(allocated(hpbl_p)    ) deallocate(hpbl_p     )
  if(allocated(kpbl_p)    ) deallocate(kpbl_p     )
  if(allocated(exch_p)    ) deallocate(exch_p     )
@@ -55,14 +83,15 @@
  if(allocated(rqcblten_p)) deallocate(rqcblten_p )
  if(allocated(rqiblten_p)) deallocate(rqiblten_p )
 
- end subroutine pbl_deallocate
+ end subroutine deallocate_pbl
 
 !=============================================================================================
- subroutine pbl_from_MPAS(diag_physics,tend_physics)
+ subroutine pbl_from_MPAS(diag_physics,sfc_physics,tend_physics)
 !=============================================================================================
 
 !input arguments:
  type(diag_physics_type),intent(inout):: diag_physics
+ type(sfc_physics_type) ,intent(inout):: sfc_physics
  type(tend_physics_type),intent(inout):: tend_physics
 
 !---------------------------------------------------------------------------------------------
@@ -81,20 +110,21 @@
     ust_p(i,j)    = diag_physics % ust    % array(i)
     v10_p(i,j)    = diag_physics % v10    % array(i)
     wspd_p(i,j)   = diag_physics % wspd   % array(i)
-    xland_p(i,j)  = diag_physics % xland  % array(i)       
     znt_p(i,j)    = diag_physics % znt    % array(i)
     kpbl_p(i,j)   = int(diag_physics % kpbl % array(i))
+
+    xland_p(i,j)  = sfc_physics % xland  % array(i)       
  enddo
 
  do k = kts,kte
  do i = its,ite
-    exch_p(i,k,j)     = diag_physics % exch_h   % array(i,k)
-    rublten_p(i,k,j)  = tend_physics % rublten  % array(i,k)
-    rvblten_p(i,k,j)  = tend_physics % rvblten  % array(i,k)
-    rthblten_p(i,k,j) = tend_physics % rthblten % array(i,k)
-    rqvblten_p(i,k,j) = tend_physics % rqvblten % array(i,k)
-    rqcblten_p(i,k,j) = tend_physics % rqcblten % array(i,k)
-    rqiblten_p(i,k,j) = tend_physics % rqiblten % array(i,k)
+    exch_p(i,k,j)     = diag_physics % exch_h   % array(k,i)
+    rublten_p(i,k,j)  = tend_physics % rublten  % array(k,i)
+    rvblten_p(i,k,j)  = tend_physics % rvblten  % array(k,i)
+    rthblten_p(i,k,j) = tend_physics % rthblten % array(k,i)
+    rqvblten_p(i,k,j) = tend_physics % rqvblten % array(k,i)
+    rqcblten_p(i,k,j) = tend_physics % rqcblten % array(k,i)
+    rqiblten_p(i,k,j) = tend_physics % rqiblten % array(k,i)
  enddo
  enddo
 
@@ -127,20 +157,19 @@
     diag_physics % ust    % array(i) = ust_p(i,j)
     diag_physics % v10    % array(i) = v10_p(i,j)
     diag_physics % wspd   % array(i) = wspd_p(i,j)
-    diag_physics % xland  % array(i) = xland_p(i,j)
     diag_physics % znt    % array(i) = znt_p(i,j)
     
  enddo
 
  do k = kts,kte
  do i = its,ite
-    diag_physics % exch_h   % array(i,k) = exch_p(i,k,j)
-    tend_physics % rublten  % array(i,k) = rublten_p(i,k,j) 
-    tend_physics % rvblten  % array(i,k) = rvblten_p(i,k,j)
-    tend_physics % rthblten % array(i,k) = rthblten_p(i,k,j)
-    tend_physics % rqvblten % array(i,k) = rqvblten_p(i,k,j)
-    tend_physics % rqcblten % array(i,k) = rqcblten_p(i,k,j)
-    tend_physics % rqiblten % array(i,k) = rqiblten_p(i,k,j)
+    diag_physics % exch_h   % array(k,i) = exch_p(i,k,j)
+    tend_physics % rublten  % array(k,i) = rublten_p(i,k,j) 
+    tend_physics % rvblten  % array(k,i) = rvblten_p(i,k,j)
+    tend_physics % rthblten % array(k,i) = rthblten_p(i,k,j)
+    tend_physics % rqvblten % array(k,i) = rqvblten_p(i,k,j)
+    tend_physics % rqcblten % array(k,i) = rqcblten_p(i,k,j)
+    tend_physics % rqiblten % array(k,i) = rqiblten_p(i,k,j)
  enddo
  enddo
 
@@ -149,12 +178,13 @@
  end subroutine pbl_to_MPAS
  
 !=============================================================================================
- subroutine pbl_driver(diag_physics,tend_physics)
+ subroutine pbl_driver(diag_physics,sfc_physics,tend_physics)
 !=============================================================================================
 
 !input and output arguments:
 !---------------------------
  type(diag_physics_type),intent(inout):: diag_physics
+ type(sfc_physics_type) ,intent(inout):: sfc_physics
  type(tend_physics_type),intent(inout):: tend_physics
 
 !--------------------------------------------------------------------------------------------- 
@@ -162,7 +192,7 @@
  write(0,*) '--- enter pbl driver:'
 
 !copy all MPAS arrays to rectanguler grid arrays:
- call pbl_from_MPAS(diag_physics,tend_physics)
+ call pbl_from_MPAS(diag_physics,sfc_physics,tend_physics)
  write(0,*) '--- end pbl_from_MPAS:'
 
  pbl_select: select case (trim(pbl_scheme))

Modified: branches/atmos_physics/src/core_physics/module_driver_radiation_lw.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_driver_radiation_lw.F        2011-01-14 16:02:15 UTC (rev 695)
+++ branches/atmos_physics/src/core_physics/module_driver_radiation_lw.F        2011-01-14 16:09:05 UTC (rev 696)
@@ -7,7 +7,7 @@
  use module_physics_vars
 
 !from wrf physics:
-!use module_ra_rrtmg_lw
+ use module_ra_rrtmg_lw
 
  implicit none
  private
@@ -24,6 +24,9 @@
  subroutine allocate_radiation_lw
 !=============================================================================================
 
+ if(.not.allocated(f_ice)        ) allocate(f_ice(ims:ime,jms:jme)       )
+ if(.not.allocated(f_rain)       ) allocate(f_rain(ims:ime,jms:jme)      )
+
  if(.not.allocated(sfc_emiss_p)  ) allocate(sfc_emiss_p(ims:ime,jms:jme) )
  if(.not.allocated(snow_p)       ) allocate(snow_p(ims:ime,jms:jme)      )
  if(.not.allocated(tsk_p)        ) allocate(tsk_p(ims:ime,jms:jme)       )
@@ -54,6 +57,8 @@
  subroutine deallocate_radiation_lw
 !=============================================================================================
 
+ if(allocated(f_ice)        ) deallocate(f_ice        )
+ if(allocated(f_rain)       ) deallocate(f_rain       )
  if(allocated(sfc_emiss_p)  ) deallocate(sfc_emiss_p  )
  if(allocated(snow_p)       ) deallocate(snow_p       )
  if(allocated(snow_p)       ) deallocate(snow_p       )
@@ -80,21 +85,23 @@
  end subroutine deallocate_radiation_lw
 
 !=============================================================================================
- subroutine radiation_lw_from_MPAS(diag_physics)
+ subroutine radiation_lw_from_MPAS(diag_physics,sfc_physics,sfc_input)
 !=============================================================================================
 
 !inout arguments:
  type(diag_physics_type),intent(inout):: diag_physics
+ type(sfc_physics_type) ,intent(inout):: sfc_physics
+ type(sfc_input_type)   ,intent(inout):: sfc_input
 
 !---------------------------------------------------------------------------------------------
 
  do j = jts,jte
  do i = its,ite
-    sfc_emiss_p(i,j) = diag_physics % sfc_emissivity % array(i)
-    snow_p(i,j)      = diag_physics % snow           % array(i)
-    tsk_p(i,j)       = diag_physics % tsk            % array(i)
-    xice_p(i,j)      = diag_physics % xice           % array(i)
-    xland_p(i,j)     = diag_physics % xland          % array(i)
+    sfc_emiss_p(i,j) = diag_physics % sfc_emiss % array(i)
+    snow_p(i,j)      = diag_physics % snow      % array(i)
+    tsk_p(i,j)       = diag_physics % tsk       % array(i)
+    xland_p(i,j)     = sfc_physics  % xland     % array(i)
+    xice_p(i,j)      = sfc_input   % xice       % array(i)
  enddo
  enddo
 
@@ -192,11 +199,13 @@
  end subroutine init_radiation_lw
 
 !=============================================================================================
- subroutine driver_radiation_lw(diag_physics,tend_physics)
+ subroutine driver_radiation_lw(diag_physics,sfc_physics,sfc_input,tend_physics)
 !=============================================================================================
 
 !inout arguments:
  type(diag_physics_type),intent(inout):: diag_physics
+ type(sfc_physics_type) ,intent(inout):: sfc_physics
+ type(sfc_input_type)   ,intent(inout):: sfc_input
  type(tend_physics_type),intent(inout):: tend_physics
 
 !---------------------------------------------------------------------------------------------
@@ -207,7 +216,7 @@
  102 format(3i6,8(1x,e15.8))
 
 !copy all MPAS arrays to rectangular grid:
- call radiation_lw_from_MPAS(diag_physics)
+ call radiation_lw_from_MPAS(diag_physics,sfc_physics,sfc_input)
 
 !call to longwave radiation scheme:
  radiation_lw_select: select case (trim(radt_lw_scheme))
@@ -233,31 +242,37 @@
        enddo
        enddo
 
-!      call rrtmg_lwrad( &amp;
-!               rthratenlw = rthratenlw_p , lwupt     = lwupt_p    , lwuptc    = lwuptc_p  , &amp;
-!               lwdnt      = lwdnt_p      , lwdntc    = lwdntc_p   , lwupb     = lwupb_p   , &amp;
-!               lwupbc     = lwupbc_p     , lwdnb     = lwdnb_p    , lwdnbc    = lwdnbc_p  , &amp;
-!               lwcf       = lwcf_p       , glw       = glw_p      , olr       = olrtoa_p  , &amp;
-!               emiss      = sfc_emiss_p  , t3d       = t_p        , t8w       = t2_p      , &amp;
-!               tsk        = tsk_p        , p3d       = pres_p     , p8w       = pres2_p   , &amp;
-!               pi3d       = pi_p         , rho3d     = rho_p      , dz8w      = dz_p      , &amp;
-!               cldfra3d   = cldfrac_p    , r         = R_d        , g         = g         , &amp;
-!               icloud     = icloud       , warm_rain = warm_rain  , f_ice_phy = f_ice     , &amp;
-!               f_rain_phy = f_rain       , xland     = xland_p    , xice      = xice_p    , &amp;
-!               snow       = snow_p       , qv3d      = qv_p       , qc3d      = qc_p      , &amp;
-!               qr3d       = qr_p         , qi3d      = qi_p       , qs3d      = qs_p      , &amp;
-!               qg3d       = qg_p         , f_qv      = f_qv       , f_qc      = f_qc      , &amp;
-!               f_qr       = f_qr         , f_qi      = f_qi       , f_qs      = f_qs      , &amp;
-!               f_qg       = f_qg         ,                                                  &amp;
-!               !begin optional arguments:
-!               lwupflx    = lwupflx_p    , lwupflxc  = lwupflxc_p , lwdnflx   = lwdnflx_p , &amp;
-!               lwdnflxc   = lwdnflxc_p   ,                                                  &amp;
-!               !end optional arguments.
-!               ids = ids , ide = ide , jds = jds , jde = jde , kds = kds , kde = kde ,      &amp;
-!               ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme ,      &amp;
-!               its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte        &amp;
-!                      )
+       f_ice(:,:)  = 0.
+       f_rain(:,:) = 0.
 
+       write(0,*)
+       write(0,*) '--- enter subroutine rrtmg_lwrad:'
+       call rrtmg_lwrad( &amp;
+                rthratenlw = rthratenlw_p , lwupt     = lwupt_p    , lwuptc    = lwuptc_p  , &amp;
+                lwdnt      = lwdnt_p      , lwdntc    = lwdntc_p   , lwupb     = lwupb_p   , &amp;
+                lwupbc     = lwupbc_p     , lwdnb     = lwdnb_p    , lwdnbc    = lwdnbc_p  , &amp;
+                lwcf       = lwcf_p       , glw       = glw_p      , olr       = olrtoa_p  , &amp;
+                emiss      = sfc_emiss_p  , t3d       = t_p        , t8w       = t2_p      , &amp;
+                tsk        = tsk_p        , p3d       = pres_p     , p8w       = pres2_p   , &amp;
+                pi3d       = pi_p         , rho3d     = rho_p      , dz8w      = dz_p      , &amp;
+                cldfra3d   = cldfrac_p    , r         = R_d        , g         = g         , &amp;
+                icloud     = icloud       , warm_rain = warm_rain  , f_ice_phy = f_ice     , &amp;
+                f_rain_phy = f_rain       , xland     = xland_p    , xice      = xice_p    , &amp;
+                snow       = snow_p       , qv3d      = qv_p       , qc3d      = qc_p      , &amp;
+                qr3d       = qr_p         , qi3d      = qi_p       , qs3d      = qs_p      , &amp;
+                qg3d       = qg_p         , f_qv      = f_qv       , f_qc      = f_qc      , &amp;
+                f_qr       = f_qr         , f_qi      = f_qi       , f_qs      = f_qs      , &amp;
+                f_qg       = f_qg         ,                                                  &amp;
+                !begin optional arguments:
+                !lwupflx    = lwupflx_p    , lwupflxc  = lwupflxc_p , lwdnflx   = lwdnflx_p, &amp;
+                !lwdnflxc   = lwdnflxc_p   ,                                                 &amp;
+                !end optional arguments.
+                ids = ids , ide = ide , jds = jds , jde = jde , kds = kds , kde = kde ,      &amp;
+                ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme ,      &amp;
+                its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte        &amp;
+                       )
+       write(0,*) '--- exit subroutine rrtmg_lwrad'
+
     case default
 
  end select radiation_lw_select
@@ -265,7 +280,7 @@
 !copy all arrays back to MPAS geodesic grid:
  call radiation_lw_to_MPAS(diag_physics,tend_physics)
 
- write(0,*) '--- end subroutine driver_radiation_lw:'
+ write(0,*) '--- end subroutine driver_radiation_lw'
  write(0,*)
 
  end subroutine driver_radiation_lw

Modified: branches/atmos_physics/src/core_physics/module_driver_radiation_sw.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_driver_radiation_sw.F        2011-01-14 16:02:15 UTC (rev 695)
+++ branches/atmos_physics/src/core_physics/module_driver_radiation_sw.F        2011-01-14 16:09:05 UTC (rev 696)
@@ -88,7 +88,7 @@
  end subroutine deallocate_radiation_sw
 
 !=============================================================================================
- subroutine radiation_sw_from_MPAS(mesh,diag_physics)
+ subroutine radiation_sw_from_MPAS(mesh,diag_physics,sfc_physics,sfc_input)
 !=============================================================================================
 
 !input arguments:
@@ -96,6 +96,8 @@
 
 !inout arguments:
  type(diag_physics_type),intent(inout):: diag_physics
+ type(sfc_physics_type) ,intent(inout):: sfc_physics
+ type(sfc_input_type)   ,intent(inout):: sfc_input
 
 !---------------------------------------------------------------------------------------------
 
@@ -103,11 +105,12 @@
  do i = its,ite
     xlat_p(i,j)       = mesh % latCell % array(i)
     xlon_p(i,j)       = mesh % lonCell % array(i)
+
     sfc_albedo_p(i,j) = diag_physics % sfc_albedo % array(i)
     snow_p(i,j)       = diag_physics % snow       % array(i)
     tsk_p(i,j)        = diag_physics % tsk        % array(i)
-    xice_p(i,j)       = diag_physics % xice       % array(i)
-    xland_p(i,j)      = diag_physics % xland      % array(i)
+    xland_p(i,j)      = sfc_physics  % xland      % array(i)
+    xice_p(i,j)       = sfc_input    % xice       % array(i)
  enddo
  enddo
 
@@ -206,7 +209,7 @@
  end subroutine init_radiation_sw
 
 !=============================================================================================
- subroutine driver_radiation_sw(mesh,state,diag_physics,tend_physics)
+ subroutine driver_radiation_sw(mesh,state,diag_physics,sfc_physics,sfc_input,tend_physics)
 !=============================================================================================
 
 !input arguments:
@@ -215,6 +218,8 @@
 
 !inout arguments:
  type(diag_physics_type),intent(inout):: diag_physics
+ type(sfc_physics_type) ,intent(inout):: sfc_physics
+ type(sfc_input_type)   ,intent(inout):: sfc_input
  type(tend_physics_type),intent(inout):: tend_physics
 
 !local variables:
@@ -231,7 +236,7 @@
  xtime =&gt; state % xtime % scalar
 
 !copy all MPAS arrays to rectangular grid:
- call radiation_sw_from_MPAS(mesh,diag_physics)
+ call radiation_sw_from_MPAS(mesh,diag_physics,sfc_physics,sfc_input)
 
 !... calculates solar declination:
  call radconst(xtime,declin,solcon,julday,degrad,dpd)

Modified: branches/atmos_physics/src/core_physics/module_physics_aquaplanet.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_physics_aquaplanet.F        2011-01-14 16:02:15 UTC (rev 695)
+++ branches/atmos_physics/src/core_physics/module_physics_aquaplanet.F        2011-01-14 16:09:05 UTC (rev 696)
@@ -19,13 +19,14 @@
  contains
 
 !=============================================================================================
- subroutine physics_aquaplanet_init(mesh,diag_physics)
+ subroutine physics_aquaplanet_init(mesh,diag_physics,sfc_input)
 !=============================================================================================
 
 !input and inout arguments:
 !--------------------------
  type(mesh_type),intent(in):: mesh
  type(diag_physics_type),intent(in):: diag_physics
+ type(sfc_input_type)   ,intent(in):: sfc_input
 
 !local variables:
  integer,parameter:: t00_c = 27.
@@ -33,10 +34,7 @@
  
  real(kind=RKIND),dimension(:),pointer:: latitude
  real(kind=RKIND),dimension(:),pointer:: longitude
- real(kind=RKIND),dimension(:),pointer:: xland
- real(kind=RKIND),dimension(:),pointer:: xice
- real(kind=RKIND),dimension(:),pointer:: sfc_albedo
- real(kind=RKIND),dimension(:),pointer:: sfc_emissivity
+ real(kind=RKIND),dimension(:),pointer:: lu_index
  real(kind=RKIND),dimension(:),pointer:: sfc_temperature
 
 !---------------------------------------------------------------------------------------------
@@ -48,18 +46,14 @@
 
  latitude  =&gt; mesh % latCell % array
  longitude =&gt; mesh % lonCell % array
- xland           =&gt; diag_physics % xland % array
- xice            =&gt; diag_physics % xice % array
- sfc_albedo      =&gt; diag_physics % sfc_albedo % array
- sfc_emissivity  =&gt; diag_physics % sfc_emissivity % array
+ lu_index        =&gt; sfc_input    % lu_index % array      
  sfc_temperature =&gt; diag_physics % tsk % array
 
 !set surface conditions to all oceans:
 
  do iCell = 1, nCells
-    xice(iCell)  = 0.  !no ice
-    xland(iCell) = 2.  !all water
- enddo
+    lu_index(iCell) = 0.
+enddo
 
 !compute fixed sea-surface temperatures:
  do iCell = 1, nCells
@@ -70,16 +64,6 @@
 
  enddo
 
-!set surface albedo:
- do iCell = 1, nCells
-    sfc_albedo(iCell) = 0.03
- enddo
-
-!set surface emissivity:
- do iCell = 1, nCells
-    sfc_emissivity(iCell) = 1.00
- enddo
-
  write(0,*) '--- end subroutine physics_aquaplanet'
  write(0,*)
 

Modified: branches/atmos_physics/src/core_physics/module_physics_driver.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_physics_driver.F        2011-01-14 16:02:15 UTC (rev 695)
+++ branches/atmos_physics/src/core_physics/module_physics_driver.F        2011-01-14 16:09:05 UTC (rev 696)
@@ -64,12 +64,18 @@
        call convection_deep_driver(itimestep,block%mesh,block%diag_physics,block%tend_physics)
 
     !call to surface-layer scheme:
-    if(config_sfclayer_scheme .ne. 'off') &amp;
-       call sfclayer_driver(itimestep,block%mesh,block%diag_physics)
+    if(config_sfclayer_scheme .ne. 'off') then
+       call allocate_sfclayer
+       call sfclayer_driver(itimestep,block%mesh,block%diag_physics,block%sfc_physics)
+       call deallocate_sfclayer
+    endif
 
     !call to pbl schemes:
-    if(config_pbl_scheme .ne. 'off' .and. config_sfclayer_scheme .ne. 'off') &amp;
-       call pbl_driver(block%diag_physics,block%tend_physics)
+    if(config_pbl_scheme .ne. 'off' .and. config_sfclayer_scheme .ne. 'off') then
+       call allocate_pbl
+       call pbl_driver(block%diag_physics,block%sfc_physics,block%tend_physics)
+       call deallocate_pbl
+    endif
 
     !call to cloud scheme:
     if(config_radt_sw_scheme.ne.'off' .or. config_radt_lw_scheme.ne.'off') then
@@ -81,13 +87,14 @@
     if(config_radt_sw_scheme .ne. 'off') then
        call allocate_radiation_sw
        call driver_radiation_sw(block%mesh,block%state%time_levs(1)%state,block%diag_physics,&amp;
-                                block%tend_physics)
+                                block%sfc_physics,block%sfc_input,block%tend_physics)
     endif
 
     !call to short wave radiation scheme:
     if(config_radt_lw_scheme .ne. 'off') then
        call allocate_radiation_lw
-       call driver_radiation_lw(block%diag_physics,block%tend_physics)
+       call driver_radiation_lw(block%diag_physics,block%sfc_physics,block%sfc_input, &amp;
+                                block%tend_physics)
     endif
 
 !   !deallocate all arrays:

Modified: branches/atmos_physics/src/core_physics/module_physics_rrtmg_swinit.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_physics_rrtmg_swinit.F        2011-01-14 16:02:15 UTC (rev 695)
+++ branches/atmos_physics/src/core_physics/module_physics_rrtmg_swinit.F        2011-01-14 16:09:05 UTC (rev 696)
@@ -7,7 +7,7 @@
  use dmpar
  use grid_types
  use module_physics_constants
- use module_physics_error
+ use module_physics_utilities
 
 !wrf physics
  use module_ra_rrtmg_sw

</font>
</pre>