[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