<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
hello all,<br>
<br>
we have just committed an update to the DART Manhattan release.<br>
<br>
if you are already using Manhattan but have not made any changes<br>
to the code, do an 'svn update' and carry on.<br>
<br>
if you are already using Manhattan and have edited model_mod.f90<br>
source code (or any other code), you may want to check out the<br>
updated manhattan release in another location. depending on what<br>
you have changed, it may be a shorter path to diff your changes<br>
against what you checked out ('svn diff bob.f90') and then insert<br>
those same changes in the newly released code.<br>
<br>
the major change for this update is that we have heavily revamped<br>
the model_mod.f90 interfaces. we have removed some interfaces<br>
no longer needed and split some interfaces to give you additional<br>
functionality. the detailed list of changes is at the end of the<br>
CHANGELOG file in the top level directory, but i'll include it at
the <br>
end of this note as well. we have updated all the RMA supported <br>
model_mod.f90 files in the repository to match the new interfaces.<br>
<br>
this should be the last major non-backwards compatible change to<br>
the Manhattan release. we expect a few additional minor changes<br>
and of course any bug fixes, but this should be a stable release and<br>
you should feel confident using it.<br>
<br>
thanks, and as always contact us at '<a class="moz-txt-link-abbreviated" href="mailto:dart@ucar.edu">dart@ucar.edu</a>' for questions,<br>
concerns, bug reports, etc.<br>
<br>
nancy<br>
<br>
--------------------------<br>
Details of the latest commit:<br>
<br>
A long-awaited overhaul of the model_mod interfaces. All models
which are<br>
in our subversion repository and are supported in the Manhattan
release<br>
have been updated to match the new interfaces. If you have
model_mods with<br>
extensive changes, our recommendation is to diff your changes with
the version<br>
you checked out and insert those changes into the new version. The
changes for<br>
this update are unfortunately extensive.<br>
<br>
The detailed list of changes:<br>
<br>
model_mod::get_state_meta_data() is no longer passed an
ensemble_handle as the<br>
first argument. it should not do vertical coordinate conversion.
that will be<br>
done as a separate step by convert_vertical_state()<br>
<br>
model_mod::vert_convert is replaced by convert_vertical_state() and
convert_vertical_obs()<br>
Any vertical conversion code that was in get_state_meta_data should
be moved<br>
to convert_vertical_state() which has access to the state vector
index, so the<br>
code should move easily.<br>
<br>
model_mod::query_vert_localization_coord is no longer a required
interface<br>
model_mod::get_close_maxdist_init is not longer a required interface<br>
model_mod::get_close_obs_init is not longer a required interface<br>
<br>
model_mod::get_close_obs has a different calling convention and is
split into<br>
get_close_obs() and get_close_state(). the close obs routine is
passed both the<br>
obs types and quantities, and the close state routine is passed both
the<br>
state quantities and the state index, for ease in vertical
conversion if needed.<br>
<br>
model_mod::nc_write_model_vars() is deprecated for now; it may
return in a<br>
slightly different form in the future.<br>
<br>
model_mod::nc_write_model_atts() is now a subroutine with different
arguments.<br>
it should now only write any global attributes wanted, and possibly
some grid<br>
information. it should NOT write any of the state variables; those
will be<br>
written by DART routines.<br>
<br>
model_mod::get_model_size() needs to return an i8 for the size.<br>
<br>
A new module "default_model_mod" supplies default routines for any
required<br>
interfaces that don't need to be specialized for this model.<br>
<br>
A new module "netcdf_utilities_mod" can do some simple netcdf
functions for<br>
you and we plan to add many more over the next couple months.<br>
<br>
model_mod::get_model_time_step has been replaced by
shortest_time_between_assimilations()<br>
since in fact it has always controlled the minimum time filter would
request a model advance<br>
and never had anything to do with the internal time step of the
dynamics of the model.<br>
<br>
We have removed 'output_state_vector' from the namelist of all
model_mods since<br>
we no longer output a single 1d vector. all i/o is now in netcdf
format.<br>
<br>
Models now have more control over when vertical conversion happens -
on demand<br>
as needed, or all up front before assimilation.<br>
<br>
Models that were doing vertical conversion in get_state_meta_data
should set:<br>
&assim_tools_nml<br>
convert_all_state_verticals_first = .true.<br>
convert_all_obs_verticals_first = .true.<br>
<br>
Models which were not should set:<br>
convert_all_state_verticals_first = .false.<br>
convert_all_obs_verticals_first = .true.<br>
<br>
The location_mod::vert_is_xxx() routines have become a single
is_vertical(loc, "string") where<br>
string is one of: "PRESSURE", "HEIGHT", "SURFACE", "LEVEL",
"UNDEFINED", "SCALE_HEIGHT"<br>
<br>
Models doing vertical localization should add a call to
set_vertical_localization_coord()<br>
in their static_init_model() routine to tell dart what vertical
coordinate system they<br>
are expecting to convert to for vert localization<br>
<br>
Most path_names_xxx files have been updated to add additional
modules. compare against<br>
what is checked out to see the differences.<br>
<br>
Some of the internal changes include pulling common code from the
locations<br>
modules into a location_io_mod which contains common functions for
creating<br>
and writing 'location' variables for any location type.<br>
<br>
QTY_RAW_STATE_VARIABLE is redundant and was shortened to
QTY_STATE_VARIABLE<br>
<br>
Many utility programs use the template/model_mod.f90 because they
don't<br>
depend on any model-specific functions. this file was also updated
to<br>
match the new interfaces.<br>
<br>
The obs_impact facility is enabled in the assim_tools namelist. you
can<br>
use the obs_impact_tool to construct a table which prevents one
class of<br>
observations from impacting another class of state.<br>
<br>
Sampling Error Correction now reads the values it needs from a
single<br>
netcdf file found in
assimilation_code/programs/gen_sampling_err_table/work.<br>
copy it to the same directory as where filter is running. all
ensemble<br>
sizes which were previously in final_full.XX files are included, and
there<br>
is a tool to generate and append to the file any other ensemble size
required.<br>
<br>
<br>
</body>
</html>