PROGRAM dart_to_noah

DART project logo

DART Documentation Main Index
version information for this file:
$Id: dart_to_noah.html 7959 2015-05-06 22:18:27Z thoar $

NAMELIST / MODULES / FILES / REFERENCES / ERRORS / PLANS / TERMS OF USE

Overview

dart_to_noah is the program that overwrites a NOAH netCDF-format restart file (usually linked to "restart.nc") with the state information contained in a DART output/restart file (e.g. perfect_restart, filter_restart, ... ). The DART model time is compared to the time in the NOAH restart file. If the time in the restart file does not match the DART model time, the dart_vector_to_model_file routine issues an error message and aborts. Due to the fact the NOAH restart files are timestamped such that the time reflects the valid time UPON THE NEXT ADVANCE, one NOAH_TIMESTEP is subtracted from the time in the Time variable in the NOAH restart file. See the expanded explanation in the NOAH model_mod.html.

The standalone version of NOAH (Noah_hrldas_beta) requires a separate forcing file for each hour in its current configuration. dart_to_noah creates a file (noah_advance_information.txt) that has a list of the expected *******.LDASIN_DOMAIN1 files needed for the next model advance. Example noah_advance_information.txt file:

dart_to_noah:noah  model      date 2009 Jan 02 08:00:00
dart_to_noah:noah  advance_to_date 2009 Jan 02 09:00:00
khour  =      1
nfiles =      2
2009010209.LDASIN_DOMAIN1
2009010210.LDASIN_DOMAIN1

While setting up an experiment or for testing purposes, dart_to_noah may be used on DART files that have a header containing one time stamp followed by the model state by setting input.nml &dart_to_noah_nml:advance_time_present = .false. .

During perfect_model_obs or filter, the &dart_to_noah_nml:advance_time_present must be set to .true. to read the internal DART files that have two timestamps in the header. These files are temporarily generated when DART is used to advance the model. One timestamp is the 'advance_to' time, the other is the 'valid_time' of the model state.

Conditions required for successful execution of dart_to_noah:

dart_to_noah and noah_to_dart are used extensively in the scripts in the shell_scripts directory. Since this program is called repeatedly for every ensemble member, we have found it convenient to link the DART input file to the default input filename (dart_restart). The same thing is true for the NOAH restart files (noah_restart.nc).

[top]

NAMELIST

This namelist is read from the file input.nml. Namelists start with an ampersand '&' and terminate with a slash '/'. Character strings that contain a '/' must be enclosed in quotes to prevent them from prematurely terminating the namelist.

&dart_to_noah_nml
   dart_to_noah_input_file = 'dart_restart',
   skip_variables          = ' '
   advance_time_present    = .true.,
  /
Contents Type Description
dart_to_noah_input_file character(len=128) The name of the DART file containing the model state to insert into the NOAH restart file.
skip_variables character(len=32) ::
dimension(40)
The list of NOAH variables that must not be updated in the NOAH restart file even if they were used to create the DART state vector. Be aware that these variables WILL be modified in Posterior_Diag.nc so you can see the assimilated state.
advance_time_present logical If you are converting a DART initial conditions or restart file this should be .false.; these files have a single timestamp describing the valid time of the model state. If .true., TWO timestamps are expected to be the DART file header. In this case, a namelist for NOAH (called noah_in.DART) is created that contains the &time_manager_nml settings appropriate to advance NOAH to the time requested by DART.

&model_nml
     noah_netcdf_filename         = 'restart.nc',
     assimilation_period_days     =    0,
     assimilation_period_seconds  = 3600,
     model_perturbation_amplitude = 0.0,
     output_state_vector          = .false.
     debug                        = 1,
     noah_state_variables         = 'SOIL_T',   'KIND_SOIL_TEMPERATURE',
                                    'SOIL_M',   'KIND_SOIL_MOISTURE',
                                    'SOIL_W',   'KIND_SOIL_LIQUID_WATER',
                                    'SKINTEMP', 'KIND_SKIN_TEMPERATURE',
                                    'SNODEP',   'KIND_SNOW_THICKNESS',
                                    'WEASD',    'KIND_SNOW_WATER',
                                    'CANWAT',   'KIND_CANOPY_WATER',
                                    'QFX',      'KIND_LATENT_HEAT_FLUX',
  /

The full description of the model_nml namelist is documented in the noah model_mod, but the most important variables for noah_to_dart are repeated here.

Contents Type Description
noah_netcdf_filename character(len=128) The name of the NOAH RESTART file to use to create the DART state vector. For convenience, the advance_model.csh script usually links the most recent restart file to a static name.
noah_state_variables character(len=32)::
dimension(2,40)
The list of variable names in the NOAH restart file to use to create the DART state vector and their corresponding DART kinds.

Example of namelists from input.nml

&model_nml
   noah_netcdf_filename    = 'restart.nc',
   noah_state_variables    = 'SOIL_T',   'KIND_SOIL_TEMPERATURE',
                             'SOIL_M',   'KIND_SOIL_MOISTURE',
                             'SOIL_W',   'KIND_SOIL_LIQUID_WATER',
                             'SKINTEMP', 'KIND_SKIN_TEMPERATURE',
                             'SNODEP',   'KIND_SNOW_THICKNESS',
                             'WEASD',    'KIND_SNOW_WATER',
                             'CANWAT',   'KIND_CANOPY_WATER',
                             'QFX',      'KIND_LATENT_HEAT_FLUX',
                             'HFX',      'KIND_SENSIBLE_HEAT_FLUX',
                             'GRDFLX',   'KIND_GROUND_HEAT_FLUX'
  /

&dart_to_noah_nml
   dart_to_noah_input_file = 'dart_restart',
   skip_variables          = 'QFX','HFX',
   advance_time_present    = .true.
  /
&NOAHLSM_OFFLINE
   ...  
   KHOUR                   = 1
   FORCING_TIMESTEP        = 3600
   NOAH_TIMESTEP           = 3600
   OUTPUT_TIMESTEP         = 3600
   RESTART_FREQUENCY_HOURS = 1
   SPLIT_OUTPUT_COUNT      = 1
   ...
/

The NOAHLSM_OFFLINE namelist is read from namelist.hrldas - only those variables important for noah_to_dart are repeated here. The interpretations are exactly as described in the NOAH documentation.
The values listed above are the only values expected to work. Change these at your own risk!

[top]

MODULES USED

assim_model_mod
location_mod
model_mod
null_mpi_utilities_mod
obs_kind_mod
random_seq_mod
time_manager_mod
types_mod
utilities_mod

[top]

FILES Read

FILES Written

[top]

REFERENCES

[top]

ERROR CODES and CONDITIONS

none - all error messages come from modules that have their own documentation.

KNOWN BUGS

none

[top]

FUTURE PLANS

None.

[top]

Terms of Use

DART software - Copyright 2004 - 2013 UCAR.
This open source software is provided by UCAR, "as is",
without charge, subject to all terms of use at
http://www.image.ucar.edu/DAReS/DART/DART_download

Contact: Tim Hoar
Revision: $Revision: 7959 $
Source: $URL: https://svn-dares-dart.cgd.ucar.edu/DART/releases/classic/models/noah/dart_to_noah.html $
Change Date: $Date: 2015-05-06 16:18:27 -0600 (Wed, 06 May 2015) $
Change history: try "svn log" or "svn diff"