[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