[Dart-dev] DART/branches Revision: 12927

dart at ucar.edu dart at ucar.edu
Wed Nov 14 09:12:15 MST 2018


thoar at ucar.edu
2018-11-14 09:12:14 -0700 (Wed, 14 Nov 2018)
772
The progvar structure is completely gone.
The natural _FillValue and missing_value values are intrinsically restored in 
the direct_netcdf_mod.f90 since those values are naturally part of the state 
structure. Technically we should check the variables in the output files to
see if they are compatible with the state_structure info.

Removed the need to call 'dart_to_model' ... it still may be needed when we
do snow DA to repartition SWE.  With CLM5 the BandDiagonal solver is choking
when we attempt to update soil moisture. This is a problem we must solve.

Some (but not all) of the setup scripts use the DART_params.csh parameter file.
There are still some values in it that may not belong ... feedback from people
will be useful to determine what should go where.




Modified: DART/branches/cesm_clm/assimilation_code/location/threed_sphere/location_mod.f90
===================================================================
--- DART/branches/cesm_clm/assimilation_code/location/threed_sphere/location_mod.f90	2018-11-12 23:59:21 UTC (rev 12926)
+++ DART/branches/cesm_clm/assimilation_code/location/threed_sphere/location_mod.f90	2018-11-14 16:12:14 UTC (rev 12927)
@@ -794,7 +794,7 @@
 ! hectopascals instead of pascals for pressure, etc.
 
 ! this must be the sum of the longest of the formats below.
-charlength = 72
+charlength = 80
 
 if (len(charstring) < charlength) then
    write(msgstring, *) 'charstring buffer must be at least ', charlength, ' chars long'
@@ -809,19 +809,23 @@
 ! case the caller is listing out locations with different vert units.
 ! concatinate the vertical on the end of the horizontal and put it all
 ! into the return string. 
+
+!> some land models has vertical levels specified in cm ... 
+!> they need many digits when printing (in km) 
+
 select case  (loc%which_vert)
    case (VERTISUNDEF)
       write(charstring, '(A,A)')       trim(string1), '              Undefined'
    case (VERTISSURFACE)
-      write(charstring, '(A,F13.5,A)') trim(string1), loc%vloc, ' surface (m)'
+      write(charstring, '(A,F18.10,A)') trim(string1), loc%vloc, ' surface (m)'
    case (VERTISLEVEL)
-      write(charstring, '(A,F13.6,A)') trim(string1), loc%vloc, '  level'
+      write(charstring, '(A,F18.10,A)') trim(string1), loc%vloc, '  level'
    case (VERTISPRESSURE)
-      write(charstring, '(A,F13.7,A)') trim(string1), loc%vloc / 100.0_r8, ' hPa'
+      write(charstring, '(A,F18.10,A)') trim(string1), loc%vloc / 100.0_r8, ' hPa'
    case (VERTISHEIGHT)
-      write(charstring, '(A,F13.7,A)') trim(string1), loc%vloc / 1000.0_r8, ' km'
+      write(charstring, '(A,F18.10,A)') trim(string1), loc%vloc / 1000.0_r8, ' km'
    case (VERTISSCALEHEIGHT)
-      write(charstring, '(A,F13.7,A)') trim(string1), loc%vloc, ' scale ht'
+      write(charstring, '(A,F18.10,A)') trim(string1), loc%vloc, ' scale ht'
    case default
       write(msgstring, *) 'unrecognized key for vertical type: ', loc%which_vert
       call error_handler(E_ERR, 'write_location', msgstring, source, revision, revdate)

Modified: DART/branches/cesm_clm/assimilation_code/modules/assimilation/filter_mod.f90
===================================================================
--- DART/branches/cesm_clm/assimilation_code/modules/assimilation/filter_mod.f90	2018-11-12 23:59:21 UTC (rev 12926)
+++ DART/branches/cesm_clm/assimilation_code/modules/assimilation/filter_mod.f90	2018-11-14 16:12:14 UTC (rev 12927)
@@ -9,7 +9,7 @@
 !------------------------------------------------------------------------------
 use types_mod,             only : r8, i8, missing_r8, metadatalength, MAX_NUM_DOMS, MAX_FILES
 
-use options_mod,           only : get_missing_ok_status, set_missing_ok_status
+use options_mod,           only : get_missing_ok_status
 
 use obs_sequence_mod,      only : read_obs_seq, obs_type, obs_sequence_type,                  &
                                   get_obs_from_key, set_copy_meta_data, get_copy_meta_data,   &
@@ -387,10 +387,10 @@
 !> Is there a better way to determine if someone is specifying 'allow_missing_clm'.
 !> If they are specifying the default value, they will never see this message.
 
-! call set_missing_ok_status(allow_missing_clm)
-if (allow_missing) then
+if (allow_missing_clm) then
    write(msgstring,*) '&filter_nml "allow_missing_clm" is deprecated.'
-   write(string2,*) 'Please specify "allow_missing_clm" in the &model_nml.'
+   write(string2,*) 'Please specify desired behavior directly in the model_mod'
+   write(string2,*) 'by calling "options_mod:set_missing_ok_status()".'
    call error_handler(E_MSG,'filter_main:', msgstring, &
               source, revision, revdate, text2=string2)
 endif

Modified: DART/branches/cesm_clm/assimilation_code/modules/io/direct_netcdf_mod.f90
===================================================================
--- DART/branches/cesm_clm/assimilation_code/modules/io/direct_netcdf_mod.f90	2018-11-12 23:59:21 UTC (rev 12926)
+++ DART/branches/cesm_clm/assimilation_code/modules/io/direct_netcdf_mod.f90	2018-11-14 16:12:14 UTC (rev 12927)
@@ -100,6 +100,8 @@
                                  netcdf_file_type, READ_COPY, WRITE_COPY, &
                                  noutput_state_variables
 
+!>@todo use more of the netcdf_utilities. This will require extending some of
+!>      the routines ... nc_create_file will have to accept a 'mode', for example.
 use netcdf_utilities_mod, only : nc_check
 
 use assim_model_mod,      only : get_model_size, read_model_time, write_model_time
@@ -1480,6 +1482,7 @@
 real(r8) :: minclamp, maxclamp, my_minmax(2)
 character(len=NF90_MAX_NAME) :: varname ! for informational log messages
 logical  :: allow_missing ! used in CLM for state variables
+real(r8) :: mymissing
 
 ! if neither bound is set, return early
 minclamp = get_io_clamping_minval(dom_id, var_index)
@@ -1487,23 +1490,18 @@
 
 if (minclamp == missing_r8 .and. maxclamp == missing_r8) return
 
+varname = get_variable_name(dom_id, var_index)
+
 ! if we get here, either the min, max or both have a clamping value.
-  
-!>@todo this is what the code needs to be for CLM and any other


More information about the Dart-dev mailing list