[Dart-dev] DART/branches Revision: 11468

dart at ucar.edu dart at ucar.edu
Wed Apr 12 18:58:49 MDT 2017


thoar at ucar.edu
2017-04-12 18:58:49 -0600 (Wed, 12 Apr 2017)
164
model_mod_141112.f90 ---> the perfect model for DA_opt_case1-4
  using Qh RTM instead of wg RTM,
  and modify relevant codes to read LAI and other RTM parameters.




Modified: DART/branches/Tb/models/clm/model_mod.f90
===================================================================
--- DART/branches/Tb/models/clm/model_mod.f90	2017-04-13 00:57:26 UTC (rev 11467)
+++ DART/branches/Tb/models/clm/model_mod.f90	2017-04-13 00:58:49 UTC (rev 11468)
@@ -62,7 +62,8 @@
                              KIND_GEOPOTENTIAL_HEIGHT,&
                              KIND_BRIGHTNESS_TEMPERATURE, &
                              paramname_length,        &
-                             get_raw_obs_kind_index
+                             get_raw_obs_kind_index,  &
+                             KIND_CANOPY_TEMPERATURE
 
 use mpi_utilities_mod, only: my_task_id
 
@@ -158,15 +159,15 @@
 character(len=256) :: clm_restart_filename = 'clm_restart.nc'
 character(len=256) :: clm_history_filename = 'clm_history.nc'
 character(len=256) :: casename = 'clm_dart'
-character(len=256) :: surftexture_nc= 'surfdata_0.9x1.25_soiltexture_c140705.nc'
-character(len=256) :: coefg_nc = 'coefg_amsre2003_10D.nc'
+character(len=256) :: surfpara_nc= 'Yangpara_0.9x1.25_c140822.nc'
+character(len=256) :: lai_nc = 'LAI_GLASS.nc'
 
 character(len=obstypelength) :: clm_state_variables(max_state_variables*num_state_table_columns) = ' '
 
 namelist /model_nml/            &
    casename,                    &
-   surftexture_nc,              & 
-   coefg_nc,                    &
+   surfpara_nc,                 & 
+   lai_nc,                      &
    clm_restart_filename,        &
    clm_history_filename,        &
    output_state_vector,         &
@@ -212,11 +213,17 @@
    private
    integer  :: nlayers  ! snow layers
    real(r4) :: ssm      ! aux_ins(1) surface soil moisture [m3m-3]
-   real(r4) :: stg      ! aux_ins(2) surface layer temperature [k]   
-   real(r4) :: sat      ! aux_ins(3) topsoil porosity
-   real(r4) :: ssand    ! aux_ins(4) soil sand content percentage (0~100)
-   real(r4) :: sclay    ! aux_ins(5) soil clay content percentage (0~100)
-   real(r4) :: scoefg   ! aux_ins(6) background value for coefficient "g"
+   real(r4) :: stg      ! aux_ins(2) surface layer temperature [k]
+   real(r4) :: stv      ! aux_ins(3) ground vegetation temperature [K]  
+   real(r4) :: sat      ! aux_ins(4) topsoil porosity (0~1)
+   real(r4) :: ssand    ! aux_ins(5) soil sand content percentage (0~100)
+   real(r4) :: sclay    ! aux_ins(6) soil clay content percentage (0~100)
+   real(r4) :: lai      ! aux_ins(7) MODIS (GLASS) leaf area index
+   real(r4) :: fmv      ! aux_ins(8) coefficient f in calculating vegetation water content
+   real(r4) :: bmv      ! aux_ins(9) coefficient in calculating Tao
+   real(r4) :: xmv      ! aux_ins(10) coefficient in calculating Tao
+   real(r4) :: qmv      ! aux_ins(11) surface roughness parameters
+   real(r4) :: hmv      ! aux_ins(12) surface roughness parameters
 end type soilprops
 
 type(soilprops) :: soilcolumn
@@ -2276,6 +2283,8 @@
    call compute_gridcell_value(x, location, 'leafc',    interp_val, istatus)
 elseif (obs_kind == KIND_WATER_TABLE_DEPTH ) then
    call compute_gridcell_value(x, location, 'ZWT',    interp_val, istatus)
+elseif (obs_kind == KIND_CANOPY_TEMPERATURE ) then
+   call compute_gridcell_value(x, location, 'T_VEG',  interp_val, istatus)
 elseif (obs_kind == KIND_SNOW_THICKNESS ) then
    write(string1,*)'model_interpolate for DZSNO not written yet.'
    call error_handler(E_ERR,'model_interpolate',string1,source,revision,revdate)
@@ -2403,7 +2412,7 @@
    interp_val = total/total_area
    istatus    = 0
 else
-   if ((debug > 0) .and. do_output()) then
+   if ((debug > 1) .and. do_output()) then
       write(string1, *)'Variable '//trim(varstring)//' had no viable data'
       write(string2, *)'at gridcell ilon/jlat = (',gridloni,',',gridlatj,')'
       write(string3, *)'obs lon/lat = (',loc_lon,',',loc_lat,')'
@@ -2552,7 +2561,7 @@
 enddo GRIDCELL
 
 if ( (counter1+counter2) == 0 ) then
-   if ((debug > 0) .and. do_output()) then
+   if ((debug > 1) .and. do_output()) then
       write(string1, *)'statevector variable '//trim(varstring)//' had no viable data'
       write(string2, *)'at gridcell lon/lat = (',gridloni,',',gridlatj,')'
       write(string3, *)'obs lon/lat/lev (',loc_lon,',',loc_lat,',',loc_lev,')'
@@ -2807,7 +2816,9 @@
       ! 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(8:20,:) = org_array(8:20,:)
+      
+      data_2d_array(7:20,:) = org_array(7:20,:)
+!      data_2d_array(8:20,:) = org_array(8:20,:)
 
 !      where(isnan(data_2d_array)) data_2d_array = org_array
 
@@ -4371,15 +4382,15 @@
 
 ! variables required by forward_wg() routine
 
-real(r4) :: aux_ins(6)     ! [surface_sm, ground_T, porosity, %sand, %clay, 'g']
+real(r4) :: aux_ins(12)     ! [surface_sm, ground_T, porosity, %sand, %clay, 'g']


More information about the Dart-dev mailing list