Functions and subroutines necessary for the diag_manager_mod.
diag_data_mod
diag_axis_mod
diag_output_mod
diag_grid_mod
fms_mod
fms_io_mod
mpp_domains_mod
time_manager_mod
mpp_io_mod
mpp_mod
constants_mod
SUBROUTINE get_subfield_size (axes, outnum)
axes | Axes of the input_field. [INTEGER, DIMENSION(:)] |
outnum | Position in array output_fields. [INTEGER] |
SUBROUTINE get_subfield_vert_size (axes, outnum)
axes | Axes of the input_field
[INTEGER, DIMENSION(:)] |
outnum | Position in array output_fields. [INTEGER] |
SUBROUTINE log_diag_field_info (module_name, field_name, axes, long_name, units, missing_value, range, dynamic)
module_name | Module name. [CHARACTER(len=*)] |
field_name | Field name. [CHARACTER(len=*)] |
axes | Axis IDs. [INTEGER, DIMENSION(:)] |
long_name | Long name for field. [CHARACTER(len=*), OPTIONAL] |
units | Unit of field. [CHARACTER(len=*), OPTIONAL] |
missing_value | Missing value value. [REAL, OPTIONAL] |
range | Valid range of values for field. [REAL, DIMENSION(2), OPTIONAL] |
dynamic | .TRUE. if field is not static. [LOGICAL, OPTIONAL] |
SUBROUTINE update_bounds (out_num, lower_i, upper_i, lower_j, upper_j, lower_k, upper_k)
out_num | output_field ID. [INTEGER] |
lower_i | Lower i bound. [INTEGER] |
upper_i | Upper i bound. [INTEGER] |
lower_j | Lower j bound. [INTEGER] |
upper_j | Upper j bound. [INTEGER] |
lower_k | Lower k bound. [INTEGER] |
upper_k | Upper k bound. [INTEGER] |
SUBROUTINE check_out_of_bounds (out_num, diag_field_id, err_msg)
out_num |
Output field ID number.
[INTEGER] |
diag_field_id |
Input field ID number.
[INTEGER] |
err_msg |
Return status of check_out_of_bounds. An empty error string indicates the x, y, and z indices are not outside the
buffer array boundaries.
[CHARACTER(len=*)] |
SUBROUTINE check_bounds_are_exact_dynamic (out_num, diag_field_id, Time, err_msg)
out_num |
Output field ID number.
[INTEGER] |
diag_field_id |
Input field ID number.
[INTEGER] |
Time |
Time to use in check. The check is only performed if output_fields(out_num)%Time_of_prev_field_data is not
equal to Time or Time_zero.
[TYPE(time_type)] |
err_msg |
Return status of check_bounds_are_exact_dynamic. An empty error string indicates the x, y, and z indices are
equal to the buffer array boundaries.
[CHARACTER(len=*)] |
SUBROUTINE check_bounds_are_exact_static (out_num, diag_field_id, err_msg)
out_num | Output field ID [INTEGER] |
diag_field_id | Input field ID. [INTEGER] |
err_msg |
[CHARACTER(len=*)] |
SUBROUTINE init_file (name, output_freq, output_units, format, time_units long_name, tile_count, new_file_freq, new_file_freq_units, start_time, file_duration, file_duration_units)
name | File name. [CHARACTER(len=*)] |
output_freq | How often data is to be written to the file. [INTEGER] |
output_units | The output frequency unit. (MIN, HOURS, DAYS, etc.) [INTEGER] |
format | Number type/kind the data is to be written out to the file. [INTEGER] |
time_units | Time axis units. [INTEGER] |
log_name | Long name for time axis. [CHARACTER(len=*)] |
tile_count | Tile number. [INTEGER] |
new_file_freq | How often a new file is to be created. [INTEGER, OPTIONAL] |
new_file_freq_units | The new file frequency unit. (MIN, HOURS, DAYS, etc.) [INTEGER, OPTIONAL] |
start_time | Time when the file is to start [TYPE(time_type), OPTIONAL] |
file_duration | How long file is to be used. [INTEGER, OPTIONAL] |
file_duration_units | File duration unit. (MIN, HOURS, DAYS, etc.) [INTEGER, OPTIONAL] |
SUBROUTINE sync_file_times (init_time)
file_id | The file ID [INTEGER] |
init_time | Initial time use for the synchronization. [TYPE(time_type)] |
err_msg | Return error message [CHARACTER(len=*), OPTIONAL] |
TYPE(time_type) FUNCTION diag_time_inc (time, output_freq, output_units, err_msg)
time | Current model time. [TYPE(time_type)] |
output_freq | Output frequency number value. [INTEGER] |
output_units | Output frequency unit. [INTEGER] |
err_msg |
Function error message. An empty string indicates the next output time was found successfully.
[CHARACTER, OPTIONAL] |
INTEGER FUNCTION find_input_field (module_name, field_name, tile_count)
module_name | Module name. [CHARACTER(len=*)] |
field_name | field name. [CHARACTER(len=*)] |
tile_count | Tile number. [INTEGER] |
SUBROUTINE init_input_field (module_name, field_name, tile_count)
module_name | Module name. [CHARACTER(len=*)] |
field_name | Input field name. [CHARACTER(len=*)] |
tile_count | Tile number. [INTEGER] |
SUBROUTINE init_output_field (module_name, field_name, output_name, output_file time_method, pack, tile_count, local_coord)
module_name | Module name. [CHARACTER(len=*)] |
field_name | Output field name. [CHARACTER(len=*)] |
output_name | Output name written to file. [CHARACTER(len=*)] |
output_file | File where field should be written. [CHARACTER(len=*)] |
time_method |
Data reduction method. See diag_manager_mod for valid methods. [CHARACTER(len=*)] |
pack | Packing method. [INTEGER] |
tile_count | Tile number. [INTEGER] |
local_coord | Region to be written. If missing, then all data to be written. [INTEGER, OPTIONAL] |
REAL FUNCTION get_date_dif (t2, t1, units)
t2 | Most recent time. [TYPE(time_type)] |
t1 | Most distant time. [TYPE(time_type)] |
units | Unit of return value. [INTEGER] |
SUBROUTINE diag_data_out (file, field, dat, time, fianl_call_in, static_write_in)
file | File ID. [INTEGER] |
field | Field ID. [INTEGER] |
time | Current model time. [TYPE(time_type)] |
final_call_in | .TRUE. if this is the last write for file. [LOGICAL, OPTIONAL] |
static_write_in | .TRUE. if static fields are to be written to file. [LOGICAL, OPTIONAL] |
dat | Data to write out. [REAL, DIMENSION(:,:,:,:)] |
SUBROUTINE write_static (file)
file | File ID. [INTEGER] |
SUBROUTINE check_duplicate_output_fields (err_msg)
err_msg | Error message. If empty, then no duplicates found. [CHARACTER(len=*), OPTIONAL] |
INTERFACE check_bounds_are_exact MODULE PROCEDURE check_bounds_are_exact_static MODULE PROCEDURE check_bounds_are_exact_dynamic END INTERFACE check_bounds_are_exact