[Dart-dev] DART/branches Revision: 11471
dart at ucar.edu
dart at ucar.edu
Wed Apr 12 19:05:51 MDT 2017
thoar at ucar.edu
2017-04-12 19:05:51 -0600 (Wed, 12 Apr 2017)
308
This was called model_mod_160204.f90
Possible notes are:
model_mod.f90
current version;
change the method of reading CLM variables for TB calculation;
variables read from HIST files instead of REST files --> more
physically reasonable, regarding the calibration process of microwave parameters;
Modified: DART/branches/Tb/models/clm/model_mod.f90
===================================================================
--- DART/branches/Tb/models/clm/model_mod.f90 2017-04-13 01:03:50 UTC (rev 11470)
+++ DART/branches/Tb/models/clm/model_mod.f90 2017-04-13 01:05:51 UTC (rev 11471)
@@ -100,6 +100,7 @@
sv_to_restart_file, &
get_clm_restart_filename, &
get_state_time, &
+ get_column_value, &
get_grid_vertval, &
compute_gridcell_value, &
gridcell_components, &
@@ -114,7 +115,7 @@
character(len=32 ), parameter :: revision = "$Revision$"
character(len=128), parameter :: revdate = "$Date$"
-character(len=256) :: string1, string2, string3, string4
+character(len=256) :: string1, string2, string3
logical, save :: module_initialized = .false.
! Storage for a random sequence for perturbing a single initial state
@@ -232,6 +233,26 @@
real(r4) :: soilsat ! aux_ins(3) soil saturation [fraction]
real(r4) :: soilporos ! aux_ins(4) soil porosity [fraction]
real(r4) :: propconst ! aux_ins(5) proportionality between grain size & correlation length.
+
+ !----------------------------------------------------------------------------------------------kyh04032014
+ real(r4) :: soil_liq ! aux_ins(6) soil liquid water content (fraction)
+ real(r4) :: soil_ice ! aux_ins(7) soil ice contet (fraction)
+ real(r4) :: sandf ! aux_ins(8) sand fraction (fraction)
+ real(r4) :: clayf ! aux_ins(9) clay fraction (fraction)
+ real(r4) :: Tcanopy ! aux_ins(10) vegetation physical temperature (K)
+ real(r4) :: lai_vege ! aux_ins(11) leaf area index
+ real(r4) :: forc_pbot ! aux_ins(12) ground level pressure (Pa)
+ real(r4) :: forc_t ! aux_ins(13) ground level air temperature (K)
+ real(r4) :: forc_rh ! aux_ins(14) relative humidity
+ real(r4) :: vf ! aux_ins(15) vegetated area fraction
+ !----------------------------------------------------------------------------------------------kyh04032014
+
+ !----------------------------------------------------------------------------------------------RTM parameters !kyh11202014
+ real(r4) :: stickiness !snowpack stickiness (-)
+ real(r4) :: b_prime !vegetation RTM coefficient (-)
+ real(r4) :: x_lambda !vegetation RTM coefficient (-)
+ !----------------------------------------------------------------------------------------------RTM parameters !kyh11202014
+
integer :: nprops ! [thickness, density, diameter, liqwater, temperature]
real(r4), pointer, dimension(:) :: thickness ! LAYER THICKNESS [M]
real(r4), pointer, dimension(:) :: density ! LAYER DENSITY [KG/M3]
@@ -1798,7 +1819,7 @@
endif
allocate(data_1d_array( progvar(ivar)%dimlens(1) ) )
- call vector_to_prog_var(state_vec, ivar, data_1d_array)
+ call vector_to_prog_var(state_vec, ivar, 0, data_1d_array)
call nc_check(nf90_put_var(ncFileID, VarID, data_1d_array, &
start = ncstart(1:ncNdims), count=nccount(1:ncNdims)), &
'nc_write_model_vars', 'put_var '//trim(string2))
@@ -1817,7 +1838,7 @@
allocate(data_2d_array( progvar(ivar)%dimlens(1), &
progvar(ivar)%dimlens(2) ))
- call vector_to_prog_var(state_vec, ivar, data_2d_array)
+ call vector_to_prog_var(state_vec, ivar, 0, data_2d_array)
call nc_check(nf90_put_var(ncFileID, VarID, data_2d_array, &
start = ncstart(1:ncNdims), count=nccount(1:ncNdims)), &
'nc_write_model_vars', 'put_var '//trim(string2))
@@ -2203,10 +2224,23 @@
type(time_type), intent(in) :: dart_time
! temp space to hold data while we are writing it
-integer :: i, ni, nj, ivar
-real(r8), allocatable, dimension(:) :: data_1d_array
-real(r8), allocatable, dimension(:,:) :: data_2d_array
+integer :: i, ni, nj, ivar, j, c
+integer, allocatable, dimension(:) :: snlsno
+
+real(r8), allocatable, dimension(:) :: data_1d_array !state vector after assimilation
+real(r8), allocatable, dimension(:) :: x_1d_array !state vector before assimilation
+real(r8), allocatable, dimension(:) :: h2osno_pr,h2osno_po,snowdp_pr,snowdp_po, &
+ gain_snowdp, scf_pr, scf_po
+
+real(r8), allocatable, dimension(:,:) :: data_2d_array
+real(r8), allocatable, dimension(:,:) :: x_2d_array
+real(r8), allocatable, dimension(:,:) :: gain_h2osno_l, gain_dzsno, gain_h2oliq_l,&
+ gain_h2oice_l, dzsno_pr, dzsno_po, h2oliq_pr, &
+ h2oliq_po, h2oice_pr, h2oice_po
+
+real(r8) :: wt_liq_l, snowden, wt_swe_l, reduce_factor
+
integer, dimension(NF90_MAX_VAR_DIMS) :: dimIDs
character(len=NF90_MAX_NAME) :: varname
integer :: VarID, ncNdims, dimlen
@@ -2255,8 +2289,44 @@
! In order to avoid the negative values of H2OSNO produced by DART, I added some "if" conditions
! to set the value of H2OSNO back to the value before assimilation if negative value is found.
-UPDATE : do ivar=1, nfields
+!==========================================================================
+!!****************BLOCK and hereafter copied from Yongfei******************
+!
More information about the Dart-dev
mailing list