[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