[Dart-dev] DART/branches Revision: 11466

dart at ucar.edu dart at ucar.edu
Wed Apr 12 18:51:42 MDT 2017


thoar at ucar.edu
2017-04-12 18:51:42 -0600 (Wed, 12 Apr 2017)
205
model_mod_140720.f90
   Change the assimilation scheme by: 
       1) calculate TB based on the first two soil layers' moisture and temperature;
       2) update both the first two layers' soil moisture;




Modified: DART/branches/Tb/models/clm/model_mod.f90
===================================================================
--- DART/branches/Tb/models/clm/model_mod.f90	2017-04-13 00:50:37 UTC (rev 11465)
+++ DART/branches/Tb/models/clm/model_mod.f90	2017-04-13 00:51:42 UTC (rev 11466)
@@ -2803,15 +2803,12 @@
       where((data_2d_array < 0.0_r8)) data_2d_array = org_array
    elseif (trim(progvar(ivar)%varname) == 'H2OSOI_LIQ') then
       !===========================================================Long
-      ! Currently, only update the first layer of soil, 
-      ! i.e., the 6th layer in levtot.
+      ! Currently, update the first and second layers of soil moisture, 
+      ! i.e., the 6th and 7th layers in levtot.
       ! So replace other layers' value with original value.
       data_2d_array(1:5,:)  = org_array(1:5,:)
-      data_2d_array(7:20,:) = org_array(7:20,:)
+      data_2d_array(8:20,:) = org_array(8:20,:)
 
-      ! change the positive increment to negative
-      ! data_2d_array(6,:) = org_array(6,:)-(data_2d_array(6,:)-org_array(6,:))
-
 !      where(isnan(data_2d_array)) data_2d_array = org_array
 
       where((data_2d_array > 1.0_r8)) data_2d_array = org_array 
@@ -4787,6 +4784,7 @@
 integer  :: snlsno(1) ! number of snow layers
 
 real(r8), allocatable, dimension(:) :: h2osoi_liq, h2osoi_ice, t_soisno
+real(r8) :: d1, d2    ! thinkness of first and second soil layers
 
 integer               :: varid, ilayer, nlayers, ij
 integer, dimension(2) :: ncstart, nccount, nccountw
@@ -4838,8 +4836,10 @@
 ! Fill the output array ... finally
 soilcolumn%nlayers = nlayers
 ! Currently, only consider the first layer of topsoil, i.e., the 6th layer of levtot
-soilcolumn%ssm = h2osoi_liq(6) * 0.001 / ((LEVGRND(1)+LEVGRND(2))/2) ! convert unit from kg/m2 to m3/m3 !!! mistakely using the 6th and 7th layer before, corected
-soilcolumn%stg = t_soisno(6) 
+d1 = (LEVGRND(1)+LEVGRND(2))/2
+d2 = (LEVGRND(3)-LEVGRND(1))/2
+soilcolumn%ssm = ( h2osoi_liq(6) * 0.001 + h2osoi_liq(7) * 0.001 ) / ( d1 + d2 ) ! convert unit from kg/m2 to m3/m3
+soilcolumn%stg = ( t_soisno(6) * d1 + t_soisno(7) * d2 ) / ( d1 + d2 )           ! effective temperature of top two soil layers
 
 deallocate(h2osoi_liq, h2osoi_ice, t_soisno)
 


More information about the Dart-dev mailing list