[Dart-dev] DART/branches Revision: 11464

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


thoar at ucar.edu
2017-04-12 18:49:45 -0600 (Wed, 12 Apr 2017)
305
model_mod_140715.f90
    Read soil texture data from surftexture_nc= 'surfdata_0.9x1.25_soiltexture_c140705.nc';
    Constrain updated first layer of soil moisture within >0, and substitude with original SM if larger than 1.0. 
    Add subroutine (build_coefg_filename) to read daily time-variant coefg;




Modified: DART/branches/Tb/models/clm/model_mod.f90
===================================================================
--- DART/branches/Tb/models/clm/model_mod.f90	2017-04-13 00:48:19 UTC (rev 11463)
+++ DART/branches/Tb/models/clm/model_mod.f90	2017-04-13 00:49:45 UTC (rev 11464)
@@ -158,12 +158,14 @@
 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=obstypelength) :: clm_state_variables(max_state_variables*num_state_table_columns) = ' '
 
 namelist /model_nml/            &
-   casename,                    & 
+   casename,                    &
+   surftexture_nc,              & 
    coefg_nc,                    &
    clm_restart_filename,        &
    clm_history_filename,        &
@@ -2751,8 +2753,7 @@
 integer, optional,        intent(in)  :: ncid
 
 integer :: i,j,ii, VarID
-real(r8), allocatable, dimension(:,:) :: org_array, org_porosity
-real(r8), allocatable, dimension(:)   :: org_watsat
+real(r8), allocatable, dimension(:,:) :: org_array
 
 if ( .not. module_initialized ) call static_init_model
 
@@ -2781,8 +2782,6 @@
 if (present(ncid)) then
 
    allocate(org_array(size(data_2d_array,1),size(data_2d_array,2)))
-   allocate(org_porosity(15,size(data_2d_array,2)))      !============Long
-   allocate(org_watsat(size(data_2d_array,2)))           !============Long
 
    call nc_check(nf90_inq_varid(ncid, progvar(ivar)%varname, VarID), &
             'vector_to_2d_prog_var', 'inq_varid '//trim(progvar(ivar)%varname))
@@ -2790,16 +2789,6 @@
    call nc_check(nf90_get_var(ncid, VarID, org_array), &
             'vector_to_2d_prog_var', 'get_var '//trim(progvar(ivar)%varname))
 
-   call nc_check(nf90_inq_varid(ncid, 'WATSAT', VarID), &
-            'vector_to_2d_prog_var', 'inq_varid WATSAT')
-
-   call nc_check(nf90_get_var(ncid, VarID, org_porosity), &
-            'vector_to_2d_prog_var', 'get_var WATSAT')
-
-   ! to convert top layer soil porosity with unit: m3/m3 to kg/m2
-   where((org_porosity>1)) org_porosity=0.5_r8
-   org_watsat=org_porosity(1,:)*(LEVGRND(6)+LEVGRND(7))/2*1000
-
    ! restoring the indeterminate original values
 
    where(data_2d_array == MISSING_R8 ) data_2d_array = org_array
@@ -2825,7 +2814,7 @@
 
 !      where(isnan(data_2d_array)) data_2d_array = org_array
 
-      where((data_2d_array(6,:) > org_watsat)) data_2d_array(6,:) = org_watsat 
+      where((data_2d_array > 1.0_r8)) data_2d_array = org_array 
       !===========================================================Long
       where((data_2d_array < 0.0_r8)) data_2d_array = org_array
    elseif (trim(progvar(ivar)%varname) == 'H2OSOI_ICE') then
@@ -2839,8 +2828,6 @@
    endif
 
    deallocate(org_array)
-   deallocate(org_porosity)
-   deallocate(org_watsat)
 
 endif
 
@@ -4393,8 +4380,9 @@
 real(r4) :: tb_out(N_POL,N_FREQ) ! calculated brightness temperature - output
 
 ! support variables 
-integer                             :: ncid, ncidcoefg
+integer                             :: ncid, ncidcoefg, ncidsurftexture
 character(len=256)                  :: filename
+character(len=256)                  :: coefg_filename
 character(len=256)                  :: priortbfile
 integer,  allocatable, dimension(:) :: columns_to_get
 real(r4), allocatable, dimension(:) :: tb
@@ -4490,6 +4478,7 @@
 ! read Tg and sm variables from CLM restart file =============Long
 ! filename = clm_restart_filename
 call build_clm_instance_filename(ens_index, state_time, filename)
+call build_coefg_filename(frequency,state_time,coefg_filename)
 
 ! call build_Prior_Tb_instance_filename(ens_index, state_time, priortbfile)
 
@@ -4498,8 +4487,10 @@
 ! write(*,*)'mark-01_Long'                           !====Long
 call nc_check(nf90_open(trim(filename), NF90_NOWRITE, ncid), &
               'get_brightness_temperature','open '//trim(filename))
-call nc_check(nf90_open(trim(coefg_nc), NF90_NOWRITE, ncidcoefg), &
-              'get_brightness_temperature','open '//trim(coefg_nc))
+call nc_check(nf90_open(trim(coefg_filename), NF90_NOWRITE, ncidcoefg), &
+              'get_brightness_temperature','open '//trim(coefg_filename))


More information about the Dart-dev mailing list