MODULE schedule_mod

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.

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
   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
   calendar             = 'Gregorian'
   print_table          = .true.
  /

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.


Other modules used

types_mod
utilities_mod
time_manager_mod

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.


Files

filename

purpose

input.nml

to read the schedule_mod namelist

References

  • none

Private components

N/A