[Dart-dev] DART/branches Revision: 12911

dart at ucar.edu dart at ucar.edu
Wed Oct 24 11:37:42 MDT 2018


thoar at ucar.edu
2018-10-24 11:37:42 -0600 (Wed, 24 Oct 2018)
194
Now uses the DART_params.csh for variable specification.
Tested with perfect_model_obs and sourcemods for SIF.
Using DART_params.csh means the perfect_model.csh script is no longer a template.




Modified: DART/branches/cesm_clm/assimilation_code/programs/perfect_model_obs/perfect_model_obs.f90
===================================================================
--- DART/branches/cesm_clm/assimilation_code/programs/perfect_model_obs/perfect_model_obs.f90	2018-10-24 16:40:07 UTC (rev 12910)
+++ DART/branches/cesm_clm/assimilation_code/programs/perfect_model_obs/perfect_model_obs.f90	2018-10-24 17:37:42 UTC (rev 12911)
@@ -177,7 +177,7 @@
 type(file_info_type) :: file_info_true
 
 character(len=256), allocatable :: input_filelist(:), output_filelist(:), true_state_filelist(:)
-integer :: nfilesin, nfilesout
+integer :: nfilesin, nfilesout, ipos
 
 ! Initialize all modules used that require it
 call perfect_initialize_modules_used()
@@ -550,9 +550,15 @@
          ! If observation is not being evaluated or assimilated, skip it
          ! Ends up setting a 1000 qc field so observation is not used again.
          if( qc_ens_handle%vars(i, 1) == 0 ) then
-            obs_value(1) = random_gaussian(random_seq, true_obs(1), &
-               sqrt(get_obs_def_error_variance(obs_def)))
 
+            ! TJH Emergency ... want soil moisture obs to be positive
+            POSITIVE : do ipos = 1,100
+               obs_value(1) = random_gaussian(random_seq, true_obs(1), &
+                  sqrt(get_obs_def_error_variance(obs_def)))
+               if (obs_value(1) > 0.0_r8) exit POSITIVE
+               obs_value(1) = true_obs(1)  ! in case it goes past 100 cycles
+            enddo POSITIVE
+
             ! FIX ME SPINT: if the foward operater passed can we directly set the
             ! qc status?
 
@@ -569,7 +575,7 @@
 
          endif
 
-         ! true obs is fowrard op
+         ! true obs is forward op
          ! obs value is forward op plus noise
          call set_obs_values(obs, obs_value, 1)
          call set_obs_values(obs, true_obs, 2)

Modified: DART/branches/cesm_clm/models/clm/model_mod.f90
===================================================================
--- DART/branches/cesm_clm/models/clm/model_mod.f90	2018-10-24 16:40:07 UTC (rev 12910)
+++ DART/branches/cesm_clm/models/clm/model_mod.f90	2018-10-24 17:37:42 UTC (rev 12911)
@@ -72,6 +72,7 @@
                              QTY_DEAD_STEM_CARBON,       &
                              QTY_LEAF_AREA_INDEX,        &
                              QTY_WATER_TABLE_DEPTH,      &
+                             QTY_STEM_CARBON,            &
                              QTY_GEOPOTENTIAL_HEIGHT,    &
                              QTY_VEGETATION_TEMPERATURE, &
                              QTY_FRAC_PHOTO_AVAIL_RADIATION, &
@@ -80,6 +81,8 @@
                              QTY_FPAR_SHADED_DIRECT,     &
                              QTY_FPAR_SHADED_DIFFUSE,    &
                              QTY_SOLAR_INDUCED_FLUORESCENCE, &
+                             QTY_LATENT_HEAT_FLUX,       &
+                             QTY_LEAF_NITROGEN,          &
                              QTY_LANDMASK,               &
                              get_index_for_quantity,     &
                              get_name_for_quantity
@@ -97,7 +100,7 @@
                                   get_num_domains, get_num_variables, &
                                   get_num_dims, get_dim_name,         &
                                   get_dim_length, get_variable_name,  &
-                                  do_io_update
+                                  do_io_update, get_variable_size
 
 use obs_def_utilities_mod, only : track_status
 
@@ -708,13 +711,12 @@
 ! call state_structure_info(dom_vector_history)
 
 !---------------------------------------------------------------
-! Create the metadata arrays that are the same shape as the state vector.
-! The metadata arrays will provide the ability to determine what grid cell is the parent
-! of the state vector index in question ... as well as the actual surface area.
-! This MUST stride through the state vector the same way the state vector is filled.
+!> Create the metadata arrays that are the same shape as the state vector.
+!> The metadata arrays will provide the ability to determine what grid cell is the parent
+!> of the state vector index in question ... as well as the actual surface area.
+!> This MUST stride through the state vector the same way the state vector is filled.
+!>@todo remove these huge allocations
 
-!@todo BAD BAD BAD
-
 allocate(lonixy(model_size), latjxy(model_size), levels(model_size), landarea(model_size))
 
 ! Initialize all levels to surface. If there is a level, we will explicitly specify it.
@@ -1573,9 +1575,7 @@
 
 
 !------------------------------------------------------------------
-!> Reads the current time and state variables from a clm restart
-!> file and packs them into a dart state vector. Except none of
-!> that is true for the rma version.
+!> 
 
 subroutine mark_missing_r8_values(clm_file, restart_time)
 


More information about the Dart-dev mailing list