<p><b>laura@ucar.edu</b> 2011-04-05 12:11:36 -0600 (Tue, 05 Apr 2011)</p><p>updated drivers<br>
</p><hr noshade><pre><font color="gray">Modified: branches/atmos_physics/src/core_physics/module_driver_cloudiness.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_driver_cloudiness.F        2011-04-05 18:05:26 UTC (rev 775)
+++ branches/atmos_physics/src/core_physics/module_driver_cloudiness.F        2011-04-05 18:11:36 UTC (rev 776)
@@ -77,7 +77,6 @@
 
 !---------------------------------------------------------------------------------------------
 
-
 !copy all MPAS arrays to rectangular grid:
  call cloudiness_from_MPAS(diag_physics)
 

Modified: branches/atmos_physics/src/core_physics/module_driver_lsm.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_driver_lsm.F        2011-04-05 18:05:26 UTC (rev 775)
+++ branches/atmos_physics/src/core_physics/module_driver_lsm.F        2011-04-05 18:11:36 UTC (rev 776)
@@ -169,26 +169,33 @@
  end subroutine deallocate_lsm
 
 !=============================================================================================
- subroutine lsm_from_MPAS(diag_physics,sfc_physics,sfc_input)
+ subroutine lsm_from_MPAS(mesh,diag_physics,sfc_physics,sfc_input)
 !=============================================================================================
 
 !input arguments:
+ type(mesh_type),intent(in):: mesh
  type(diag_physics_type),intent(inout):: diag_physics
  type(sfc_physics_type) ,intent(inout):: sfc_physics
  type(sfc_input_type)   ,intent(inout):: sfc_input
 
+!local variables:
+ logical:: do_fill
+
+ integer:: ip,iEdg
+
 !---------------------------------------------------------------------------------------------
 
  do n = 1,num_soils
-    dzs_p(n) = diag_physics % dzs % array(n,1)
+    dzs_p(n) = maxval(sfc_input%dzs%array(n,:))
  enddo
 
  do j = jts,jte
  do n = 1,num_soils
  do i = its,ite
-    sh2o_p(i,n,j)   = diag_physics % sh2o   % array(n,i)
-    smcrel_p(i,n,j) = diag_physics % smcrel % array(n,i)
-    tslb_p(i,n,j)   = diag_physics % tslb   % array(n,i)
+    sh2o_p(i,n,j)   = sfc_input % sh2o     % array(n,i)
+    smcrel_p(i,n,j) = sfc_input % smcrel   % array(n,i)
+    smois_p(i,n,j)  = sfc_input % smois    % array(n,i)
+    tslb_p(i,n,j)   = sfc_input % tslb     % array(n,i)
  enddo
  enddo
  enddo
@@ -207,6 +214,7 @@
     grdflx_p(i,j)     = diag_physics % grdflx     % array(i)
     gsw_p(i,j)        = diag_physics % gsw        % array(i)
     hfx_p(i,j)        = diag_physics % hfx        % array(i)
+    lai_p(i,j)        = diag_physics % lai        % array(i)
     lh_p(i,j)         = diag_physics % lh         % array(i)
     noahres_p(i,j)    = diag_physics % noahres    % array(i)
     potevp_p(i,j)     = diag_physics % potevp     % array(i)
@@ -222,11 +230,8 @@
     smstot_p(i,j)     = diag_physics % smstot     % array(i)
     snotime_p(i,j)    = diag_physics % snotime    % array(i)
     snopcx_p(i,j)     = diag_physics % snopcx     % array(i)
-    snow_p(i,j)       = diag_physics % snow       % array(i)
     snowh_p(i,j)      = diag_physics % snowh      % array(i)
     sr_p(i,j)         = diag_physics % sr         % array(i)
-    tmn_p(i,j)        = diag_physics % tmn        % array(i)
-    tsk_p(i,j)        = diag_physics % tsk        % array(i)
     udrunoff_p(i,j)   = diag_physics % udrunoff   % array(i)
     z0_p(i,j)         = diag_physics % z0         % array(i)
     znt_p(i,j)        = diag_physics % znt        % array(i)
@@ -235,15 +240,17 @@
     sfc_emibck_p(i,j) = sfc_physics % sfc_emibck % array(i)
     xland_p(i,j)      = sfc_physics % xland      % array(i)
 
-    lai_p(i,j)     = sfc_input % lai     % array(i)
-    isltyp_p(i,j)  = sfc_input % isltyp  % array(i)
-    ivgtyp_p(i,j)  = sfc_input % ivgtyp  % array(i)
-    shdmin_p(i,j)  = sfc_input % shdmin  % array(i)
-    shdmax_p(i,j)  = sfc_input % shdmax  % array(i)
-    snoalb_p(i,j)  = sfc_input % snoalb  % array(i)
-    snowc_p(i,j)   = sfc_input % snowc   % array(i)
-    vegfra_p(i,j)  = sfc_input % vegfra  % array(i)
-    xice_p(i,j)    = sfc_input % xice    % array(i)
+    isltyp_p(i,j)  = sfc_input % isltyp   % array(i)
+    ivgtyp_p(i,j)  = sfc_input % ivgtyp   % array(i)
+    shdmin_p(i,j)  = sfc_input % shdmin   % array(i)
+    shdmax_p(i,j)  = sfc_input % shdmax   % array(i)
+    snoalb_p(i,j)  = sfc_input % snoalb   % array(i)
+    snow_p(i,j)    = sfc_input % snow     % array(i)
+    snowc_p(i,j)   = sfc_input % snowc    % array(i)
+    tmn_p(i,j)     = sfc_input % tmn      % array(i)
+    tsk_p(i,j)     = sfc_input % skintemp % array(i)
+    vegfra_p(i,j)  = sfc_input % vegfra   % array(i)
+    xice_p(i,j)    = sfc_input % xice     % array(i)
 
  enddo
  enddo
@@ -259,27 +266,30 @@
  end subroutine lsm_from_MPAS
  
 !=============================================================================================
- subroutine lsm_to_MPAS(diag_physics,sfc_physics,sfc_input)
+ subroutine lsm_to_MPAS(mesh,diag_physics,sfc_physics,sfc_input)
 !=============================================================================================
 
 !input arguments:
+ type(mesh_type),intent(in):: mesh
  type(diag_physics_type),intent(inout):: diag_physics
  type(sfc_physics_type) ,intent(inout):: sfc_physics
  type(sfc_input_type)   ,intent(inout):: sfc_input
 
+ integer:: ip,iEdg
+
 !---------------------------------------------------------------------------------------------
 
  do j = jts,jte
  do n = 1,num_soils
  do i = its,ite
-    diag_physics % sh2o   % array(n,i) = sh2o_p(i,n,j)
-    diag_physics % smcrel % array(n,i) = smcrel_p(i,n,j)
-    diag_physics % tslb   % array(n,i) = tslb_p(i,n,j)
+    sfc_input % sh2o   % array(n,i) = sh2o_p(i,n,j)
+    sfc_input % smcrel % array(n,i) = smcrel_p(i,n,j)
+    sfc_input % smois  % array(n,i) = smois_p(i,n,j)
+    sfc_input % tslb   % array(n,i) = tslb_p(i,n,j)
  enddo
  enddo
  enddo
 
-
  do j = jts,jte
  do i = its,ite
     diag_physics % acsnom     % array(i) = acsnom_p(i,j)
@@ -294,6 +304,7 @@
     diag_physics % grdflx     % array(i) = grdflx_p(i,j)
     diag_physics % gsw        % array(i) = gsw_p(i,j)
     diag_physics % hfx        % array(i) = hfx_p(i,j)
+    diag_physics % lai        % array(i) = lai_p(i,j)
     diag_physics % lh         % array(i) = lh_p(i,j)
     diag_physics % noahres    % array(i) = noahres_p(i,j)
     diag_physics % potevp     % array(i) = potevp_p(i,j)
@@ -309,11 +320,8 @@
     diag_physics % smstot     % array(i) = smstot_p(i,j)
     diag_physics % snotime    % array(i) = snotime_p(i,j)
     diag_physics % snopcx     % array(i) = snopcx_p(i,j)
-    diag_physics % snow       % array(i) = snow_p(i,j)
     diag_physics % snowh      % array(i) = snowh_p(i,j)
     diag_physics % sr         % array(i) = sr_p(i,j)
-    diag_physics % tmn        % array(i) = tmn_p(i,j)
-    diag_physics % tsk        % array(i) = tsk_p(i,j)
     diag_physics % udrunoff   % array(i) = udrunoff_p(i,j)
     diag_physics % z0         % array(i) = z0_p(i,j)
     diag_physics % znt        % array(i) = znt_p(i,j)
@@ -323,13 +331,17 @@
     sfc_physics % xland      % array(i) = xland_p(i,j)
 
     !not needed ?:
-    sfc_input % lai    % array(i) = lai_p(i,j)
-    sfc_input % shdmin % array(i) = shdmin_p(i,j)
-    sfc_input % shdmax % array(i) = shdmax_p(i,j)
-    sfc_input % snoalb % array(i) = snoalb_p(i,j)
-    sfc_input % snowc  % array(i) = snowc_p(i,j)
-    sfc_input % vegfra % array(i) = vegfra_p(i,j)
-    sfc_input % xice   % array(i) = xice_p(i,j)
+    sfc_input % isltyp   % array(i) = isltyp_p(i,j)
+    sfc_input % ivgtyp   % array(i) = ivgtyp_p(i,j)
+    sfc_input % shdmin   % array(i) = shdmin_p(i,j)
+    sfc_input % shdmax   % array(i) = shdmax_p(i,j)
+    sfc_input % snoalb   % array(i) = snoalb_p(i,j)
+    sfc_input % snow     % array(i) = snow_p(i,j)
+    sfc_input % snowc    % array(i) = snowc_p(i,j)
+    sfc_input % skintemp % array(i) = tsk_p(i,j)
+    sfc_input % tmn      % array(i) = tmn_p(i,j)
+    sfc_input % vegfra   % array(i) = vegfra_p(i,j)
+    sfc_input % xice     % array(i) = xice_p(i,j)
 
  enddo
  enddo
@@ -368,11 +380,12 @@
  end subroutine init_lsm
 
 !=============================================================================================
- subroutine driver_lsm(itimestep,diag_physics,sfc_physics,sfc_input)
+ subroutine driver_lsm(itimestep,mesh,diag_physics,sfc_physics,sfc_input)
 !=============================================================================================
 
 !input arguments:
  integer,intent(in):: itimestep
+ type(mesh_type),intent(in):: mesh
 
 !inout arguments:
  type(diag_physics_type),intent(inout):: diag_physics
@@ -387,14 +400,12 @@
  102 format(3i6,8(1x,e15.8))
 
 !copy all MPAS arrays to rectangular grid:
- call lsm_from_MPAS(diag_physics,sfc_physics,sfc_input)
- write(0,*) '--- end subroutine lsm_from_MPAS:'
+ call lsm_from_MPAS(mesh,diag_physics,sfc_physics,sfc_input)
 
 !call to land-surface scheme:
  lsm_select: select case (trim(lsm_scheme))
 
     case(&quot;noah&quot;)
-       write(0,*) '--- enter subroutine lsm:'
        call lsm( &amp;
                 dz8w      = dz_p      , p8w3d     = pres2_p      , t3d       = t_p          , &amp;  
                 qv3d      = qv_p      , xland     = xland_p      , xice      = xice_p       , &amp;
@@ -431,14 +442,13 @@
                 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 lsm'
 
     case default
 
  end select lsm_select
 
 !copy all arrays back to MPAS geodesic grid:
- call lsm_to_MPAS(diag_physics,sfc_physics,sfc_input)
+ call lsm_to_MPAS(mesh,diag_physics,sfc_physics,sfc_input)
  write(0,*) '--- end subroutine lsm_to_MPAS:'
 
  end subroutine driver_lsm

Modified: branches/atmos_physics/src/core_physics/module_driver_microphysics.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_driver_microphysics.F        2011-04-05 18:05:26 UTC (rev 775)
+++ branches/atmos_physics/src/core_physics/module_driver_microphysics.F        2011-04-05 18:11:36 UTC (rev 776)
@@ -15,17 +15,25 @@
 
  implicit none
  private
- public:: microphysics_allocate,   &amp;
-          microphysics_deallocate, &amp;
+ public:: allocate_microphysics,   &amp;
+          deallocate_microphysics, &amp;
           microphysics_driver  ,   &amp;
           microphysics_init
 
  contains
 
 !=============================================================================================
- subroutine microphysics_allocate
+ subroutine allocate_microphysics
 !=============================================================================================
 
+!sounding variables:
+ if(.not.allocated(rho_p)     ) allocate(rho_p(ims:ime,kms:kme,jms:jme)   )
+ if(.not.allocated(th_p)      ) allocate(th_p(ims:ime,kms:kme,jms:jme)    )
+ if(.not.allocated(pi_p)      ) allocate(pi_p(ims:ime,kms:kme,jms:jme)    )
+ if(.not.allocated(pres_p)    ) allocate(pres_p(ims:ime,kms:kme,jms:jme)  )
+ if(.not.allocated(z_p)       ) allocate(z_p(ims:ime,kms:kme,jms:jme)     )
+ if(.not.allocated(dz_p)      ) allocate(dz_p(ims:ime,kms:kme,jms:jme)    )
+
 !mass mixing ratios:
  if(.not.allocated(qv_p)      ) allocate(qv_p(ims:ime,kms:kme,jms:jme) )
  if(.not.allocated(qc_p)      ) allocate(qc_p(ims:ime,kms:kme,jms:jme) )
@@ -59,12 +67,20 @@
 
  end select microp_select
 
- end subroutine microphysics_allocate
+ end subroutine allocate_microphysics
 
 !=============================================================================================
- subroutine microphysics_deallocate
+ subroutine deallocate_microphysics
 !=============================================================================================
 
+!sounding variables:
+ if(allocated(rho_p)     ) deallocate(rho_p     )
+ if(allocated(th_p)      ) deallocate(th_p      )
+ if(allocated(pi_p)      ) deallocate(pi_p      )
+ if(allocated(pres_p)    ) deallocate(pres_p    )
+ if(allocated(z_p)       ) deallocate(z_p       )
+ if(allocated(dz_p)      ) deallocate(dz_p      )
+
 !mass mixing ratios:
  if(allocated(qv_p)      ) deallocate(qv_p      )
  if(allocated(qc_p)      ) deallocate(qc_p      )
@@ -98,7 +114,7 @@
 
  end select microp_select
 
- end subroutine microphysics_deallocate
+ end subroutine deallocate_microphysics
 
 !=============================================================================================
  subroutine microphysics_init
@@ -157,8 +173,10 @@
  write(0,*) '    jts= ',jts,' jte=',jte
  write(0,*) '    kts= ',kts,' kte=',kte
 
+!... allocation of microphysics arrays:
+ call allocate_microphysics
+
 !... initialization of precipitation related arrays:
-
  call precip_from_MPAS(diag_physics,mesh)
 
 !... initialization of soundings for non-hydrostatic or hydrostatic dynamical cores.
@@ -227,6 +245,9 @@
  call microphysics_to_MPAS(state,tend)
 #endif
 
+!... deallocation of all microphysics arrays:
+ call deallocate_microphysics
+
 !formats:
  201 format(2i6,10(1x,e15.8))
  203 format('microphysics begins:',3i6,2(1x,f6.1))

Modified: branches/atmos_physics/src/core_physics/module_driver_pbl.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_driver_pbl.F        2011-04-05 18:05:26 UTC (rev 775)
+++ branches/atmos_physics/src/core_physics/module_driver_pbl.F        2011-04-05 18:11:36 UTC (rev 776)
@@ -86,14 +86,17 @@
  end subroutine deallocate_pbl
 
 !=============================================================================================
- subroutine pbl_from_MPAS(diag_physics,sfc_physics,tend_physics)
+ subroutine pbl_from_MPAS(mesh,diag_physics,sfc_physics,tend_physics)
 !=============================================================================================
 
 !input arguments:
+ type(mesh_type),intent(in):: mesh
  type(diag_physics_type),intent(inout):: diag_physics
  type(sfc_physics_type) ,intent(inout):: sfc_physics
  type(tend_physics_type),intent(inout):: tend_physics
 
+ integer:: ip,iEdg
+
 !---------------------------------------------------------------------------------------------
 
  do j = jts,jte
@@ -133,15 +136,18 @@
  end subroutine pbl_from_MPAS
  
 !=============================================================================================
- subroutine pbl_to_MPAS(diag_physics,tend_physics)
+ subroutine pbl_to_MPAS(mesh,diag_physics,tend_physics)
 !=============================================================================================
 
 !input arguments:
+ type(mesh_type),intent(in):: mesh
  type(diag_physics_type),intent(inout):: diag_physics
  type(tend_physics_type),intent(inout):: tend_physics
 
+ integer:: ip,iEdg
+
 !---------------------------------------------------------------------------------------------
-

  do j = jts,jte
 
  do i = its,ite
@@ -158,7 +164,6 @@
     diag_physics % v10    % array(i) = v10_p(i,j)
     diag_physics % wspd   % array(i) = wspd_p(i,j)
     diag_physics % znt    % array(i) = znt_p(i,j)
-    
  enddo
 
  do k = kts,kte
@@ -178,27 +183,28 @@
  end subroutine pbl_to_MPAS
  
 !=============================================================================================
- subroutine pbl_driver(diag_physics,sfc_physics,tend_physics)
+ subroutine pbl_driver(mesh,diag_physics,sfc_physics,tend_physics)
 !=============================================================================================
 
 !input and output arguments:
 !---------------------------
+ type(mesh_type),intent(in):: mesh
  type(diag_physics_type),intent(inout):: diag_physics
  type(sfc_physics_type) ,intent(inout):: sfc_physics
  type(tend_physics_type),intent(inout):: tend_physics
 
 !--------------------------------------------------------------------------------------------- 
  write(0,*)
- write(0,*) '--- enter pbl driver:'
+ write(0,*) '--- enter pbl driver: dt_pbl=',dt_pbl
+ 101 format(i8,12(1x,e15.8))
 
 !copy all MPAS arrays to rectanguler grid arrays:
- call pbl_from_MPAS(diag_physics,sfc_physics,tend_physics)
+ call pbl_from_MPAS(mesh,diag_physics,sfc_physics,tend_physics)
  write(0,*) '--- end pbl_from_MPAS:'
 
  pbl_select: select case (trim(pbl_scheme))
 
     case(&quot;ysu&quot;)
-       write(0,*) '--- begin subroutine ysu:'
        call ysu ( &amp;
                  u3d      = u_p        , v3d      = v_p         , th3d     = th_p       , &amp;
                  t3d      = t_p        , qv3d     = qv_p        , qc3d     = qc_p       , &amp;
@@ -219,14 +225,13 @@
                  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,*) '--- begin subroutine ysu:'
 
      case default
 
  end select pbl_select
 
 !copy all arrays back to the MPAS grid:
- call pbl_to_MPAS(diag_physics,tend_physics)
+ call pbl_to_MPAS(mesh,diag_physics,tend_physics)
  write(0,*) '--- end pbl_to_MPAS:'
 
  end subroutine pbl_driver

Modified: branches/atmos_physics/src/core_physics/module_driver_radiation_lw.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_driver_radiation_lw.F        2011-04-05 18:05:26 UTC (rev 775)
+++ branches/atmos_physics/src/core_physics/module_driver_radiation_lw.F        2011-04-05 18:11:36 UTC (rev 776)
@@ -217,9 +217,12 @@
  end subroutine init_radiation_lw
 
 !=============================================================================================
- subroutine driver_radiation_lw(diag_physics,sfc_physics,sfc_input,tend_physics)
+ subroutine driver_radiation_lw(itimestep,diag_physics,sfc_physics,sfc_input,tend_physics)
 !=============================================================================================
 
+!input arguments:
+ integer,intent(in):: itimestep
+
 !inout arguments:
  type(diag_physics_type),intent(inout):: diag_physics
  type(sfc_physics_type) ,intent(inout):: sfc_physics
@@ -227,11 +230,11 @@
  type(tend_physics_type),intent(inout):: tend_physics
 
 !---------------------------------------------------------------------------------------------
- write(0,*) '--- enter subroutine driver_radiation_lw:'
+ write(0,100) itimestep
 
 !formats:
- 101 format(2i6,8(1x,e15.8))
- 102 format(3i6,8(1x,e15.8))
+ 100 format(/,'--- enter subroutine driver_radiation_lw: ',i6)
+ 101 format(i8,12(1x,e15.8))
 
 !copy all MPAS arrays to rectangular grid:
  call radiation_lw_from_MPAS(diag_physics,sfc_physics,sfc_input)

Modified: branches/atmos_physics/src/core_physics/module_driver_radiation_sw.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_driver_radiation_sw.F        2011-04-05 18:05:26 UTC (rev 775)
+++ branches/atmos_physics/src/core_physics/module_driver_radiation_sw.F        2011-04-05 18:11:36 UTC (rev 776)
@@ -231,10 +231,12 @@
  end subroutine init_radiation_sw
 
 !=============================================================================================
- subroutine driver_radiation_sw(mesh,state,diag_physics,sfc_physics,sfc_input,tend_physics)
+ subroutine driver_radiation_sw(itimestep,mesh,state,diag_physics,sfc_physics,sfc_input, &amp;
+                                tend_physics)
 !=============================================================================================
 
 !input arguments:
+ integer,intent(in):: itimestep
  type(mesh_type),intent(in) :: mesh
  type(state_type),intent(in):: state
 
@@ -250,10 +252,10 @@
  real(kind=RKIND),pointer:: xtime
 
 !---------------------------------------------------------------------------------------------
- write(0,*)
- write(0,*) '--- enter subroutine driver_radiation_sw:'
+ write(0,100) itimestep
 
 !formats:
+ 100 format(/,'--- enter subroutine driver_radiation_sw: ',i6)
  101 format(2i6,8(1x,e15.8))
  102 format(3i6,8(1x,e15.8))
 

Modified: branches/atmos_physics/src/core_physics/module_driver_sfclayer.F
===================================================================
--- branches/atmos_physics/src/core_physics/module_driver_sfclayer.F        2011-04-05 18:05:26 UTC (rev 775)
+++ branches/atmos_physics/src/core_physics/module_driver_sfclayer.F        2011-04-05 18:11:36 UTC (rev 776)
@@ -117,13 +117,17 @@
  end subroutine deallocate_sfclayer
 
 !=============================================================================================
- subroutine sfclayer_from_MPAS(diag_physics,sfc_physics)
+ subroutine sfclayer_from_MPAS(mesh,diag_physics,sfc_input,sfc_physics)
 !=============================================================================================
 
 !input arguments:
+ type(mesh_type):: mesh
  type(diag_physics_type),intent(inout):: diag_physics
+ type(sfc_input_type),intent(inout)   :: sfc_input
  type(sfc_physics_type) ,intent(inout):: sfc_physics
 
+ integer:: ip,iEdg
+
 !---------------------------------------------------------------------------------------------
 
  do j = jts,jte
@@ -155,7 +159,6 @@
     regime_p(i,j) = diag_physics % regime % array(i)
     rmol_p(i,j)   = diag_physics % rmol   % array(i)
     t2m_p(i,j)    = diag_physics % t2m    % array(i)
-    tsk_p(i,j)    = diag_physics % tsk    % array(i)
     th2m_p(i,j)   = diag_physics % th2m   % array(i)
     u10_p(i,j)    = diag_physics % u10    % array(i)
     ust_p(i,j)    = diag_physics % ust    % array(i)
@@ -165,19 +168,24 @@
     zol_p(i,j)    = diag_physics % zol    % array(i)
     znt_p(i,j)    = diag_physics % znt    % array(i)
 
-    xland_p(i,j)  = sfc_physics % xland  % array(i)       
+    tsk_p(i,j)    = sfc_input   % skintemp % array(i)
+    xland_p(i,j)  = sfc_physics % xland    % array(i)       
  enddo
  enddo
  
  end subroutine sfclayer_from_MPAS
 
 !=============================================================================================
- subroutine sfclayer_to_MPAS(diag_physics)
+ subroutine sfclayer_to_MPAS(mesh,diag_physics,sfc_input)
 !=============================================================================================
 
 !input arguments:
+ type(mesh_type):: mesh
  type(diag_physics_type),intent(inout):: diag_physics
+ type(sfc_input_type),intent(inout)   :: sfc_input
 
+ integer:: ip,iEdg
+
 !---------------------------------------------------------------------------------------------
 
  do j = jts,jte 
@@ -209,7 +217,6 @@
     diag_physics % regime % array(i) = regime_p(i,j)
     diag_physics % rmol   % array(i) = rmol_p(i,j)
     diag_physics % t2m    % array(i) = t2m_p(i,j)
-    diag_physics % tsk    % array(i) = tsk_p(i,j)
     diag_physics % th2m   % array(i) = th2m_p(i,j)
     diag_physics % u10    % array(i) = u10_p(i,j)
     diag_physics % ust    % array(i) = ust_p(i,j)
@@ -219,6 +226,8 @@
     diag_physics % zol    % array(i) = zol_p(i,j)
     diag_physics % znt    % array(i) = znt_p(i,j)
 
+    sfc_input % skintemp  % array(i) = tsk_p(i,j)
+
  enddo
  enddo
 
@@ -254,7 +263,7 @@
  end subroutine init_sfclayer
 
 !=============================================================================================
- subroutine sfclayer_driver(itimestep,mesh,diag_physics,sfc_physics)
+ subroutine sfclayer_driver(itimestep,mesh,diag_physics,sfc_input,sfc_physics)
 !=============================================================================================
 
 !input and inout arguments:
@@ -262,6 +271,7 @@
  integer,intent(in):: itimestep
  type(mesh_type),intent(in):: mesh
  type(diag_physics_type),intent(inout):: diag_physics
+ type(sfc_input_type),intent(inout)   :: sfc_input
  type(sfc_physics_type) ,intent(inout):: sfc_physics
 
 !local variables:
@@ -273,7 +283,7 @@
  write(0,*) '--- enter sfclayer_driver:'
 
 !copy all MPAS arrays to rectanguler grid arrays:
- call sfclayer_from_MPAS(diag_physics,sfc_physics)
+ call sfclayer_from_MPAS(mesh,diag_physics,sfc_input,sfc_physics)
  write(0,*) '--- end sfclayer_from_MPAS:'
 
  sfclayer_select: select case (trim(sfclayer_scheme))
@@ -282,8 +292,6 @@
        !initialization (this could be moved outside of the monin_obukhov surface scheme if an
        !other scheme needing the same arrays was used):
        dx = sqrt(maxval(mesh % areaCell % array))
-
-       write(0,*) '--- begin subroutine sfclay:'
        call sfclay( &amp;
                    u3d      = u_p      , v3d     = v_p      , t3d    = t_p     , &amp;
                    qv3d     = qv_p     , p3d     = pres_p   , dz8w   = dz_p    , &amp;
@@ -310,14 +318,14 @@
                    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,*) '--- end subroutine sfclay:'
-       
+        
     case default
 
  end select sfclayer_select
 
 !copy all arrays back to the MPAS grid:
- call sfclayer_to_MPAS(diag_physics)
+ call sfclayer_to_MPAS(mesh,diag_physics,sfc_input)
+
  write(0,*) '--- end sfclayer_to_MPAS:'
 
  end subroutine sfclayer_driver

</font>
</pre>