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.
|
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).
|
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 type to extract information from. |
|
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.
|
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