[Dart-users] DART+CAM(WACCM,CAM-Chem,...) users only

Kevin Raeder raeder at ucar.edu
Tue Mar 22 14:49:33 MDT 2016


Greetings DART+CAM users,

There have been several bug fixes and upgrades to the trunk version of DART,
which you should consider importing to your DART.
models/cam/model_mod:
1) Fixed several bugs in the calculation of heights of model levels
   when assimilating observations on heights (e.g. GPS).
2) Changed the recommendation about the CAM namelist parameter div24del2flag:
   use (the default) 4 instead of 2.  This removes the desirability of
   setting highest_state_pressure_Pa and highest_obs_pressure_Pa to values
   below the model top.  So you can assimilate all the way to the top now.
3) The most recent model_mod has widespread 'style' changes in preparation
   for future development and documentation.  If you don't want these
differences
   to clutter your work, update to version 9470 instead:
   svn cat https://proxy.subversion.ucar.edu/DAReS/DART/trunk/models/cam/model_mod.f90@9470
> \
       model_mod_9470.f90
4) See the svn log file for more potentially interesting changes.

models/cam/shell_scripts:
1) There are setup scripts available for advanced users to assimilate
with CESM1_5_beta03.
   This is for CAM model development work only, and not for anyone who
is in a hurry.
      CESM1_5_setup_advanced
      CESM1_5_DART_config
      assimilate1_5.csh
   See their svn log files for details.

assim_model:
1) A significant speed-up in writing the Prior and Posterior files is achieved
   by no longer 'pre-filling' the variables on the files with 0s.
   In directory assim_model, apply the attached patch file using
      patch -p0 < patchfile.txt

-- 
Kevin Raeder
Associate Scientist IV
303-497-1307
-------------- next part --------------
Index: assim_model_mod.f90
===================================================================
--- assim_model_mod.f90	(revision 9954)
+++ assim_model_mod.f90	(working copy)
@@ -85,10 +85,10 @@
 logical :: module_initialized = .false.
 
 ! Global storage for default restart formats
-character(len = 16) :: read_format = "unformatted", write_format = "unformatted"
+character(len=16) :: read_format = "unformatted", write_format = "unformatted"
 
 ! Global storage for error string output
-character(len = 129)  :: msgstring
+character(len=512)  :: msgstring
 
 !-------------------------------------------------------------
 ! Namelist with default values
@@ -210,7 +210,7 @@
 integer, OPTIONAL,intent(in) :: lagID
 type(netcdf_file_type)       :: ncFileID
 
-integer :: i, metadata_length, nlines, linelen, createmode
+integer :: i, metadata_length, nlines, linelen, createmode, oldmode
 
 integer ::   MemberDimID,   MemberVarID     ! for each "copy" or ensemble member
 integer ::     TimeDimID,     TimeVarID
@@ -294,9 +294,14 @@
               'init_diag_output', 'put_att assim_model_source '//trim(ncFileID%fname))
 call nc_check(nf90_put_att(ncFileID%ncid, NF90_GLOBAL, "assim_model_revision", revision ), &
               'init_diag_output', 'put_att assim_model_revision '//trim(ncFileID%fname))
+
 call nc_check(nf90_put_att(ncFileID%ncid, NF90_GLOBAL, "assim_model_revdate", revdate ), &
               'init_diag_output', 'put_att assim_model_revdate '//trim(ncFileID%fname))
 
+msgstring = nf90_inq_libvers()
+call nc_check(nf90_put_att(ncFileID%ncid, NF90_GLOBAL, "netcdf_version", trim(msgstring) ), &
+              'init_diag_output', 'put_att netcdf_version '//trim(ncFileID%fname))
+
 if (present(lagID)) then
    call nc_check(nf90_put_att(ncFileID%ncid, NF90_GLOBAL, "lag", lagID ), &
                  'init_diag_output', 'put_att lag '//trim(ncFileID%fname))
@@ -321,7 +326,6 @@
 call nc_check(nf90_put_att(ncFileID%ncid, MemberVarID, "valid_range", &
               (/ 1, copies_of_field_per_time /)), 'init_diag_output', 'put_att valid_range')
 
-
 !    Metadata for each Copy
 call nc_check(nf90_def_var(ncid=ncFileID%ncid,name="CopyMetaData", xtype=nf90_char,    &
               dimids = (/ metadataDimID, MemberDimID /),  varid=metadataVarID), &
@@ -353,7 +357,12 @@
 
 !-------------------------------------------------------------------------------
 ! Leave define mode so we can fill
+! Set the NOFILL ... noticeable performance gain from not prefilling.
+! Tests with WRF & POP show bit-for-bit under 'classic' storage layer.
 !-------------------------------------------------------------------------------
+
+i = nf90_set_fill(ncFileID%ncid, NF90_NOFILL, oldmode)
+call nc_check(i, 'init_diag_output', 'set_fill NOFILL on '//trim(ncFileID%fname))
 call nc_check(nf90_enddef(ncFileID%ncid), 'init_diag_output', 'enddef '//trim(ncFileID%fname))
 
 !-------------------------------------------------------------------------------


More information about the Dart-users mailing list