MODULE schedule_mod

DART project logo

Jump to DART Documentation Main Index
version information for this file:
$Id: schedule_mod.html 6380 2013-08-05 23:47:11Z nancy $

NAMELIST / INTERFACES / FILES / REFERENCES / ERRORS / PLANS / PRIVATE COMPONENTS / TERMS OF USE

Overview

Provides a set of routines to generate a regular pattern of time windows. This module is only used for converting observation sequences files to netCDF format. If it stands the test of time, it will likely be used to create an assimilation schedule independent of the observation sequence file. Wouldn't that be nice ...

[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.

&schedule_nml
   calendar       = 'Gregorian',
   first_bin_start =  1601,  1,  1,  0,  0,  0,
   first_bin_end   =  2999,  1,  1,  0,  0,  0,
   last_bin_end    =  2999,  1,  1,  0,  0,  0,
   bin_interval_days    = 1000000,   
   bin_interval_seconds = 0, 
   max_num_bins         = 1000,
   print_table          = .true.
  /


Controls various aspects of filter. The inflation control variables are all dimensioned 2, the first value being for the prior inflation and the second being for the posterior inflation.

The default values will cause (pretty much) all possible observations to be put into one output file.

Item Type Description
first_bin_start integer, dimension(6) Date/time specification for starting time of first bin.
first_bin_end integer, dimension(6) Date/time specification for ending time of first bin. Sets the bin width.
last_bin_end integer, dimension(6) Date/time specification for ending time of last bin. Sets the length of the overall time of the schedule.
bin_interval_days integer Sets the time between bins. Must be larger or equal to the bin width.
bin_interval_seconds integer Sets the time between bins. Must be larger or equal to the bin width.
max_num_bins integer Upper limit on the number of bins.
calendar character(len=32) String calendar type. Valid types are listed in the time_manager_mod file.
print_table logical If .TRUE., print out information about the schedule each time set_regular_schedule() is called.


[top]

OTHER MODULES USED

types_mod
utilities_mod
time_manager_mod
[top]

PUBLIC INTERFACES

use schedule_mod, only : schedule_type
 set_regular_schedule
 get_time_from_schedule
 get_schedule_length

Namelist &schedule_mod_nml may be read from file input.nml.


call set_regular_schedule(schedule)
type(schedule_type), intent(out) :: schedule

Uses the namelist information to compute and fill a schedule_type variable.

schedule Fills this derived type with the information needed to generate a series of regularly spaced time windows.


call get_time_from_schedule(mytime, schedule, iepoch [, edge])
type(time_type),     intent(out) :: mytime
 or
real(digits12),      intent(out) :: mytime
type(schedule_type), intent(in)  :: schedule
integer,             intent(in)  :: iepoch
integer, optional,   intent(in)  :: edge

Returns either the leading or trailing time for the specified bin/epoch number for the given schedule. The time can be returned in one of two formats, depending on the variable type specified for the first argument: either a DART derived time_type, or a real of kind digits12 (defined in the types_mod).

mytime Return value with the leading or trailing edge time for the requested bin. There are two supported return formats, either as a standard DART time_type, or as a real value which will contain the number of days plus any fraction.
schedule Schedule type to extract information from.
iepoch The bin number, or epoch number, to return a time for. Unless edge is specified and requests the ending time, the time returned is the starting time for this bin.
edge If specified, and if edge is larger than 1, the trailing edge time of the bin is returned. Any other value, or if this argument is not specified, returns the leading edge time of the bin.


var = get_schedule_length()
integer                             :: get_schedule_length
type(schedule_type), intent(in)     :: schedule

Return the total number of intervals/bins/epochs defined by this schedule.

schedule Return number of time intervals in this schedule.


type schedule_type
   private
   integer :: num_bins
   integer :: current_bin
   logical :: last_bin
   integer :: calendar
   character(len=32) :: calendarstring
   type(time_type)          :: binwidth
   type(time_type)          :: bininterval
   type(time_type), pointer :: binstart(   :) => NULL()
   type(time_type), pointer :: binend(     :) => NULL()
   real(digits12),  pointer :: epoch_start(:) => NULL()
   real(digits12),  pointer :: epoch_end(  :) => NULL()
end type schedule_type

This type is used to define a schedule.


[top]

FILES

filename purpose
input.nml to read the schedule_mod namelist
[top]

REFERENCES

[top]

ERROR CODES and CONDITIONS

RoutineMessageComment

KNOWN BUGS

none at this time

[top]

FUTURE PLANS

Setting the schedule from the namelist values means you can only have a single schedule object in the entire program. We also need a subroutine to initialize a schedule type by giving explicit arguments.

[top]

PRIVATE COMPONENTS

N/A

[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: DART core group
Revision: $Revision: 6380 $
Source: $URL: https://svn-dares-dart.cgd.ucar.edu/DART/releases/classic/time_manager/schedule_mod.html $
Change Date: $Date: 2013-08-05 17:47:11 -0600 (Mon, 05 Aug 2013) $
Change history:  try "svn log" or "svn diff"