[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