FMS
2024.03
Flexible Modeling System
|
Type descriptions and global variables for the diag_manager modules. More...
Data Types | |
type | coord_type |
Define the region for field output. More... | |
type | diag_atttype |
Attribute type for diagnostic fields. More... | |
type | diag_axis_type |
Type to hold the diagnostic axis description. More... | |
type | diag_fieldtype |
Diagnostic field type. More... | |
type | diag_global_att_type |
type | diag_grid |
Contains the coordinates of the local domain to output. More... | |
type | file_type |
Type to define the diagnostic files that will be written as defined by the diagnostic table. More... | |
type | fmsdiagattribute_type |
Type to hold the attributes of the field/axis/file. More... | |
type | input_field_type |
Type to hold the input field description. More... | |
type | output_field_type |
Type to hold the output field description. More... | |
Functions/Subroutines | |
subroutine | diag_data_init () |
Initialize and write the version number of this file to the log file. | |
subroutine | fms_add_attribute (this, att_name, att_value) |
Adds an attribute to the attribute type. More... | |
integer function | get_base_day () |
gets the module variable base_day More... | |
integer function | get_base_hour () |
gets the module variable base_hour More... | |
integer function | get_base_minute () |
gets the module variable base_minute More... | |
integer function | get_base_month () |
gets the module variable base_month More... | |
integer function | get_base_second () |
gets the module variable base_second More... | |
type(time_type) function | get_base_time () |
gets the module variable base_time More... | |
integer function | get_base_year () |
gets the module variable base_year More... | |
integer function | get_var_type (var) |
gets the type of a variable More... | |
subroutine | set_base_time (base_time_int) |
Set the module variable base_time. More... | |
subroutine | write_metadata (this, fileobj, var_name, cell_methods) |
Writes out the attributes from an fmsDiagAttribute_type. More... | |
Variables | |
logical | append_pelist_name = .FALSE. |
character(len=7) | avg_name = 'average' |
Name of the average fields. | |
integer, private | base_day |
integer, private | base_hour |
integer, private | base_minute |
integer, private | base_month |
integer, private | base_second |
type(time_type), private | base_time |
The base_time read from diag_table. | |
logical, private | base_time_set |
Flag indicating that the base_time is set This is to prevent users from calling set_base_time multiple times. | |
integer, private | base_year |
integer, parameter | begin_time = 1 |
Use the begining of the time average bounds. | |
real(r8_kind), parameter | cmor_missing_value = 1.0e20 |
CMOR standard missing value. | |
integer, parameter | daily = 24 |
logical | debug_diag_manager = .FALSE. |
integer, parameter | diag_all = 2 |
integer, parameter | diag_days = 4 |
integer, parameter | diag_field_not_found = -1 |
Return value for a diag_field that isn't found in the diag_table. | |
integer, parameter | diag_hours = 3 |
type(time_type) | diag_init_time |
Time diag_manager_init called. If init_time not included in diag_manager_init call, then same as base_time. | |
integer | diag_log_unit |
integer, parameter | diag_minutes = 2 |
integer, parameter | diag_months = 5 |
integer, parameter | diag_not_found = -1 |
integer, parameter | diag_not_registered = 0 |
character(len=1), parameter | diag_null_string = " " |
integer, parameter | diag_ocean = 1 |
integer, parameter | diag_other = 0 |
integer, parameter | diag_registered_id = 10 |
integer, parameter | diag_seconds = 1 |
integer, parameter | diag_years = 6 |
integer, parameter | direction_down = -1 |
The axis points down if positive. | |
integer, parameter | direction_up = 1 |
The axis points up if positive. | |
integer, parameter | diurnal = 2 |
logical | do_diag_field_log = .FALSE. |
real(r8_kind) | empty = 0.0 |
integer, parameter | end_of_run = -1 |
integer, parameter | end_time = 3 |
Use the end of the time average bounds. | |
integer, parameter | every_time = 0 |
type(fmsnetcdfdomainfile_t), dimension(:), allocatable, target | fileobj |
type(fmsnetcdffile_t), dimension(:), allocatable, target | fileobjnd |
type(fmsnetcdfunstructureddomainfile_t), dimension(:), allocatable, target | fileobju |
type(file_type), dimension(:), allocatable, save | files |
real | fill_value = NF_FILL_REAL |
Fill value used. Value will be NF90_FILL_REAL if using the netCDF module, otherwise will be 9.9692099683868690e+36. | |
logical | first_send_data_call = .TRUE. |
logical | flush_nc_files = .FALSE. |
Control if diag_manager will force a flush of the netCDF file on each write. Note: changing this to .TRUE. can greatly reduce the performance of the model, as the model must wait until the flush to disk has completed. | |
character(len=2), dimension(:), allocatable | fnum_for_domain |
If this file number in the array is for the "unstructured" or "2d" domain. | |
integer, parameter | glo_reg_val = -999 |
Value used in the region specification of the diag_table to indicate to use the full axis instead of a sub-axis. | |
integer, parameter | glo_reg_val_alt = -1 |
Alternate value used in the region specification of the diag_table to indicate to use the full axis instead of a sub-axis. | |
character(len=256) | global_descriptor |
integer, parameter | i4 = -4 |
integer, parameter | i8 = -8 |
integer, parameter | index_gridtype = 2 |
type(input_field_type), dimension(:), allocatable | input_fields |
integer, parameter | instantaneous = 0 |
integer, parameter | is_x_axis = 1 |
integer indicating that it is a x axis | |
integer, parameter | is_y_axis = 2 |
integer indicating that it is a y axis | |
logical | issue_oor_warnings = .TRUE. |
Issue warnings if the output field has values outside the given range for a variable. | |
integer, parameter | latlon_gridtype = 1 |
integer | max_axes = 60 |
Maximum number of independent axes. | |
integer | max_axis_attributes = 4 |
Maximum number of user definable attributes per axis. | |
integer | max_field_attributes = 4 |
Maximum number of user definable attributes per field. Liptak: Changed from 2 to 4 20170718. | |
integer, parameter | max_fields_per_file = 300 |
Maximum number of fields per file. | |
integer | max_file_attributes = 2 |
Maximum number of user definable global attributes per file. | |
integer | max_files = 31 |
Maximum number of output files allowed. Increase via diag_manager_nml. | |
integer | max_input_fields = 600 |
Maximum number of input fields. Increase via diag_manager_nml. | |
integer | max_num_axis_sets = 25 |
integer | max_out_per_in_field = 150 |
Maximum number of output_fields per input_field. Increase via diag_manager_nml. | |
integer | max_output_fields = 300 |
Maximum number of output fields. Increase via diag_manager_nml. | |
integer, parameter | max_str_len = 255 |
Max length for a string. | |
integer, parameter | max_subaxes = 10 |
real(r8_kind) | max_value |
integer, parameter | middle_time = 2 |
Use the middle of the time average bounds. | |
real(r8_kind) | min_value |
logical | mix_snapshot_average_fields =.FALSE. |
logical | module_is_initialized = .FALSE. |
Indicate if diag_manager has been initialized. | |
integer, parameter | monthly = 30 |
Supported averaging intervals. | |
integer, parameter | no_diag_averaging = 0 |
integer, parameter | no_domain = 1 |
Use the FmsNetcdfFile_t fileobj. | |
character(len=8) | no_units = "NO UNITS" |
String indicating that the variable has no units. | |
integer | null_axis_id |
integer, parameter | null_gridtype = DIAG_NULL |
integer, parameter | null_type_int = -999 |
integer | num_files = 0 |
Number of output files currenly in use by the diag_manager. | |
integer | num_input_fields = 0 |
Number of input fields in use. | |
integer | num_output_fields = 0 |
Number of output fields in use. | |
integer | oor_warning = WARNING |
logical | oor_warnings_fatal = .FALSE. |
Cause a fatal error if the output field has a value outside the given range for a variable. | |
type(output_field_type), dimension(:), allocatable | output_fields |
integer | pack_size = 1 |
1 for double and 2 for float | |
character(len=6) | pack_size_str ="double" |
Pack size as a string to be used in fms2_io register call set to "double" or "float". | |
character(len=32) | pelist_name |
logical | prepend_date = .TRUE. |
Should the history file have the start date prepended to the file name. .TRUE. is only supported if the diag_manager_init routine is called with the optional time_init parameter. | |
integer, parameter | r4 = 4 |
integer, parameter | r8 = 8 |
Supported type/kind of the variable. | |
logical | region_out_use_alt_value = .TRUE. |
Will determine which value to use when checking a regional output if the region is the full axis or a sub-axis. The values are defined as GLO_REG_VAL (-999) and GLO_REG_VAL_ALT (-1) in diag_data_mod . | |
integer, parameter | six_hourly = 6 |
integer, parameter | string = 19 |
s is the 19th letter of the alphabet | |
integer, parameter | sub_regional = 4 |
This is a file with a sub_region use the FmsNetcdfFile_t fileobj. | |
integer, parameter | three_hourly = 3 |
integer, parameter | time_average = 4 |
The reduction method is average of values. | |
integer, parameter | time_diurnal = 6 |
The reduction method is diurnal. | |
integer, parameter | time_max = 2 |
The reduction method is max value. | |
integer, parameter | time_min = 1 |
The reduction method is min value. | |
integer, parameter | time_none = 0 |
There is no reduction method. | |
integer, parameter | time_power = 7 |
The reduction method is average with exponents. | |
integer, parameter | time_rms = 5 |
The reudction method is root mean square of values. | |
integer, parameter | time_sum = 3 |
The reduction method is sum of values. | |
character(len=10), dimension(6) | time_unit_list = (/'seconds ', 'minutes ', 'hours ', 'days ', 'months ', 'years '/) |
type(time_type) | time_zero |
integer, parameter | two_d_domain = 2 |
Use the FmsNetcdfDomainFile_t fileobj. | |
integer, parameter | ug_domain = 3 |
Use the FmsNetcdfUnstructuredDomainFile_t fileobj. | |
logical | use_clock_average = .false. |
.TRUE. if the averaging of variable is done based on the clock For example, if doing daily averages and your start the simulation in day1_hour3, it will do the average between day1_hour3 to day2_hour 0 the default behavior will do the average between day1 hour3 to day2 hour3 | |
logical | use_cmor = .FALSE. |
Indicates if we should overwrite the MISSING_VALUE to use the CMOR missing value. | |
logical | use_modern_diag = .false. |
Namelist flag to use the modernized diag_manager code. | |
logical | use_mpp_io = .false. |
false is fms2_io (default); true is mpp_io | |
logical | use_refactored_send = .false. |
Namelist flag to use refactored send_data math funcitons. | |
integer, parameter | very_large_axis_length = 10000 |
integer, parameter | very_large_file_freq = 100000 |
logical | write_bytes_in_file = .FALSE. |
integer, parameter | yearly = 12 |
Type descriptions and global variables for the diag_manager modules.
Notation:
The data structure describing the field as registered by the model code.
Input fields, output fields, and output files are gathered in arrays called "input_fields", "output_fields", and "files", respectively. Indices in these arrays are used as pointers to create associations between various data structures.
Each input field associated with one or several output fields via array of indices output_fields; each output field points to the single "parent" input field with the input_field index, and to the output file with the output_file index.
type diag_data_mod::coord_type |
Define the region for field output.
Definition at line 171 of file diag_data.F90.
Public Attributes | |
real | xbegin |
real | xend |
real | ybegin |
real | yend |
real | zbegin |
real | zend |
type diag_data_mod::diag_atttype |
Attribute type for diagnostic fields.
Definition at line 157 of file diag_data.F90.
Public Attributes | |
character(len=1280) | catt |
Character string to hold character value of attribute. | |
real, dimension(:), allocatable | fatt |
REAL array to hold value of REAL attributes. | |
integer, dimension(:), allocatable | iatt |
INTEGER array to hold value of INTEGER attributes. | |
integer | len |
Number of values in attribute, or if a character string then length of the string. | |
character(len=128) | name |
Name of the attribute. | |
integer | type |
Data type of attribute values (NF_INT, NF_FLOAT, NF_CHAR) | |
type diag_data_mod::diag_axis_type |
Type to hold the diagnostic axis description.
Definition at line 306 of file diag_data.F90.
Public Attributes | |
type(diag_atttype), dimension(:), allocatable | attributes |
Array to hold user definable attributes. | |
character(len=128) | aux |
character(len=1) | cart_name |
real, dimension(:), pointer | diag_type_data |
integer | direction |
type(domain1d) | domain |
type(domain2d) | domain2 |
integer | domain_position |
The position in the doman (NORTH or EAST or CENTER) | |
type(domainug) | domainug |
integer | edges |
integer, dimension(max_subaxes) | end |
integer | length |
character(len=256) | long_name |
character(len=128) | name |
integer | num_attributes |
Number of defined attibutes. | |
character(len=128) | req |
integer | set |
integer | shift |
integer, dimension(max_subaxes) | start |
type(domain2d), dimension(max_subaxes) | subaxis_domain2 |
character(len=128), dimension(max_subaxes) | subaxis_name |
integer | tile_count |
character(len=256) | units |
type diag_data_mod::diag_fieldtype |
Diagnostic field type.
Definition at line 146 of file diag_data.F90.
Public Attributes | |
type(domain2d) | domain |
type(domainug) | domainu |
character(len=128) | fieldname |
Fieldname. | |
real | miss |
real | miss_pack |
logical | miss_pack_present |
logical | miss_present |
integer | tile_count |
type diag_data_mod::diag_global_att_type |
Definition at line 327 of file diag_data.F90.
Public Attributes | |
character(len=128) | grid_type ='regular' |
character(len=128) | tile_name ='N/A' |
type diag_data_mod::diag_grid |
Contains the coordinates of the local domain to output.
Definition at line 136 of file diag_data.F90.
Public Attributes | |
real, dimension(3) | end |
end coordinates (lat,lon,depth) of local domain to output | |
integer, dimension(3) | l_end_indx |
end indices at each LOCAL PE | |
integer, dimension(3) | l_start_indx |
start indices at each LOCAL PE | |
real, dimension(3) | start |
start coordinates (lat,lon,depth) of local domain to output | |
integer, dimension(3) | subaxes |
id returned from diag_subaxes_init of 3 subaxes | |
type diag_data_mod::file_type |
Type to define the diagnostic files that will be written as defined by the diagnostic table.
Definition at line 182 of file diag_data.F90.
Public Attributes | |
type(diag_atttype), dimension(:), allocatable | attributes |
Array to hold user definable attributes. | |
integer | bytes_written |
type(time_type) | close_time |
Time file closed. File does not allow data after close time. | |
integer | duration |
integer | duration_units |
type(diag_fieldtype) | f_avg_end |
type(diag_fieldtype) | f_avg_nitems |
type(diag_fieldtype) | f_avg_start |
type(diag_fieldtype) | f_bounds |
integer, dimension(max_fields_per_file) | fields |
integer | file_unit |
character(len=10) | filename_time_bounds |
integer | format |
logical, allocatable | is_time_axis_registered |
type(time_type) | last_flush |
logical | local |
.TRUE. if fields are output in a region instead of global. | |
character(len=128) | long_name |
character(len=fms_file_len) | name |
Name of the output file. | |
integer | new_file_freq |
frequency to create new file | |
integer | new_file_freq_units |
time units of new_file_freq (days, hours, years, ...) | |
type(time_type) | next_open |
Time to open a new file. | |
integer | num_attributes |
Number of defined attibutes. | |
integer | num_fields |
integer | output_freq |
integer | output_units |
real | rtime_current |
type(time_type) | start_time |
Time file opened. | |
integer | tile_count |
integer | time_axis_id |
integer | time_bounds_id |
integer | time_index |
integer | time_units |
logical(i4_kind) | use_domain2d = .false. |
logical(i4_kind) | use_domainug = .false. |
type diag_data_mod::fmsdiagattribute_type |
Type to hold the attributes of the field/axis/file.
Definition at line 334 of file diag_data.F90.
Public Member Functions | |
procedure | add => fms_add_attribute |
procedure | write_metadata |
Public Attributes | |
character(len=:), allocatable | att_name |
Name of the attribute. | |
class(*), dimension(:), allocatable | att_value |
Value of the attribute. | |
type diag_data_mod::input_field_type |
Type to hold the input field description.
Definition at line 222 of file diag_data.F90.
Public Attributes | |
integer | active_omp_level |
The current level of OpenMP nesting. | |
integer, dimension(3) | axes |
character(len=128) | field_name |
character(len=64) | interp_method |
logical | issued_mask_ignore_warning |
Indicates if the mask_ignore_warning has been issued for this input field. Once .TRUE. the warning message is suppressed on all subsequent send_data calls. | |
logical | local |
type(coord_type) | local_coord |
character(len=128) | long_name |
logical | mask_variant |
real | missing_value |
logical | missing_value_present |
character(len=128) | module_name |
integer | num_axes |
integer | num_output_fields |
integer | numthreads |
integer, dimension(:), allocatable | output_fields |
real, dimension(2) | range |
logical | range_present |
logical | register |
integer, dimension(3) | size |
character(len=256) | standard_name |
logical | static |
integer | tile_count |
type(time_type) | time |
character(len=128) | units |
type diag_data_mod::output_field_type |
Type to hold the output field description.
Definition at line 249 of file diag_data.F90.
Public Attributes | |
type(diag_atttype), dimension(:), allocatable | attributes |
integer, dimension(4) | axes |
type(fmsdiagibounds_type) | buff_bounds |
real, dimension(:,:,:,:), allocatable | buffer |
coordinates of the buffer and counter are (x, y, z, time-of-day) | |
real, dimension(:), allocatable | count_0d |
the following two counters are used in time-averaging for some combination of the field options. Their size is the length of the diurnal axis; the counters must be tracked separately for each of the diurnal interval, because the number of time slices accumulated in each can be different, depending on time step and the number of diurnal samples. | |
real, dimension(:,:,:,:), allocatable | counter |
coordinates of the buffer and counter are (x,y,z,time-of-day) | |
type(diag_fieldtype) | f_type |
integer | input_field |
index of the corresponding input field in the table | |
type(time_type) | last_output |
logical | local_output |
integer | n_diurnal_samples |
number of diurnal sample intervals, 1 or more | |
logical | need_compute |
type(time_type) | next_next_output |
type(time_type) | next_output |
integer | num_attributes |
integer | num_axes |
integer, dimension(:), allocatable | num_elements |
the following two counters are used in time-averaging for some combination of the field options. Their size is the length of the diurnal axis; the counters must be tracked separately for each of the diurnal interval, because the number of time slices accumulated in each can be different, depending on time step and the number of diurnal samples. | |
integer | output_file |
index of the output file in the table | |
type(diag_grid) | output_grid |
character(len=128) | output_name |
integer | pack |
logical | phys_window |
integer | pow_value |
Power value to use for mean_pow(n) calculations. | |
logical | reduced_k_range |
logical | reduced_k_unstruct = .false. |
integer | region_elements |
logical | static |
logical | time_average |
true if the output field is averaged over time interval | |
logical | time_max |
true if the output field is maximum over time interval | |
character(len=50) | time_method |
time method field from the input file | |
logical | time_min |
true if the output field is minimum over time interval | |
type(time_type) | time_of_prev_field_data |
logical | time_ops |
true if any of time_min, time_max, time_rms or time_average is true | |
logical | time_rms |
true if the output field is the rms. If true, then time_average is also | |
logical | time_sum |
true if the output field is summed over time interval | |
integer | total_elements |
logical | written_once |
subroutine diag_data_mod::fms_add_attribute | ( | class(fmsdiagattribute_type), intent(inout) | this, |
character(len=*), intent(in) | att_name, | ||
class(*), dimension(:), intent(in) | att_value | ||
) |
Adds an attribute to the attribute type.
[in,out] | this | Diag attribute type |
[in] | att_name | Name of the attribute |
[in] | att_value | The attribute value to add |
Definition at line 564 of file diag_data.F90.
integer function diag_data_mod::get_base_day |
integer function diag_data_mod::get_base_hour |
gets the module variable base_hour
Definition at line 541 of file diag_data.F90.
integer function diag_data_mod::get_base_minute |
gets the module variable base_minute
Definition at line 549 of file diag_data.F90.
integer function diag_data_mod::get_base_month |
gets the module variable base_month
Definition at line 525 of file diag_data.F90.
integer function diag_data_mod::get_base_second |
gets the module variable base_second
Definition at line 557 of file diag_data.F90.
type(time_type) function diag_data_mod::get_base_time |
gets the module variable base_time
Definition at line 509 of file diag_data.F90.
integer function diag_data_mod::get_base_year |
gets the module variable base_year
Definition at line 517 of file diag_data.F90.
integer function diag_data_mod::get_var_type | ( | class(*), intent(in) | var | ) |
gets the type of a variable
[in] | var | Variable to get the type for |
Definition at line 597 of file diag_data.F90.
subroutine diag_data_mod::set_base_time | ( | integer, dimension(6) | base_time_int | ) |
Set the module variable base_time.
base_time_int | base_time as an array [year month day hour min sec] |
Definition at line 462 of file diag_data.F90.
subroutine diag_data_mod::write_metadata | ( | class(fmsdiagattribute_type), intent(inout) | this, |
class(fmsnetcdffile_t), intent(inout) | fileobj, | ||
character(len=*), intent(in) | var_name, | ||
character(len=*), intent(inout), optional | cell_methods | ||
) |
Writes out the attributes from an fmsDiagAttribute_type.
[in,out] | this | Diag attribute type |
[in,out] | fileobj | Fms2_io fileobj to write to |
[in] | var_name | The name of the variable to write to |
[in,out] | cell_methods | The cell methods attribute |
[in,out] | cell_methods | If the attribute is cell methods append to the current cell_methods attribute value This will be writen once all of the cell_methods attributes are gathered ... |
Definition at line 620 of file diag_data.F90.