[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