|
subroutine, public | writer_federator_mod::initialise_writer_federator (io_configuration, diagnostic_generation_frequency, continuation_run) |
| Initialises the write federator and configures it based on the user configuration. Also initialises the time manipulations. More...
|
|
subroutine, public | writer_federator_mod::finalise_writer_federator () |
| Finalises the write federator and the manipulations. More...
|
|
subroutine, public | writer_federator_mod::inform_writer_federator_time_point (io_configuration, source, data_id, data_dump) |
|
subroutine, public | writer_federator_mod::inform_writer_federator_fields_present (io_configuration, field_names, diag_field_names_and_roots) |
| Informs the writer federator that specific fields are present and should be reflected in the diagnostics output. More...
|
|
logical function, public | writer_federator_mod::is_field_used_by_writer_federator (field_name, field_namespace) |
| Determines whether a field is used by the writer federator or not. More...
|
|
logical function, public | writer_federator_mod::is_field_split_on_q (field_name) |
| Determines whether a field is split on Q or not. More...
|
|
subroutine | writer_federator_mod::enable_specific_field_by_name (field_name, diagnostics_mode, expected_here) |
| Enables a specific field by its name, this will locate all the fields with this name and enable them. More...
|
|
subroutine, public | writer_federator_mod::provide_q_field_names_to_writer_federator (q_provided_field_names) |
| Provides the Q field names to the write federator, this is required as on initialisation we don't know what these are and only when MONC register do they inform the IO server of the specifics. More...
|
|
subroutine, public | writer_federator_mod::provide_ordered_field_to_writer_federator (io_configuration, field_name, field_namespace, field_values, timestep, time, source) |
|
subroutine | writer_federator_mod::provide_ordered_field_to_writer_federator_real_values (io_configuration, field_name, field_namespace, field_values, timestep, time, source) |
| Provides fields (either diagnostics or prognostics) to the write federator which will action these as appropriate. This will split Q fields up if appropriate. More...
|
|
integer function | writer_federator_mod::get_size_of_collective_q (io_configuration, field_name, source) |
| Retrieves the data size for each Q entry of a collective Q field for the specific source MONC that has sent data. More...
|
|
subroutine | writer_federator_mod::provide_ordered_single_field_to_writer_federator (io_configuration, field_name, field_namespace, field_values, timestep, time, source) |
| Provides a single ordered field, i.e. Q fields have been split by this point. More...
|
|
subroutine | writer_federator_mod::write_collective_write_value (result_values, writer_index, contents_index, source, lookup_key) |
| Writes the collective values, this is held differently to independent values which are written directly - instead here we need to store the values for each MONC hence a specific type is used instead. More...
|
|
subroutine | writer_federator_mod::determine_if_outstanding_field_can_be_written (io_configuration, writer_entry, specific_field) |
| For a specific field wil determine and handle any outstanding fields writes until an outstanding write can not be performed or the outstanding list is empty. More...
|
|
subroutine | writer_federator_mod::determine_if_field_can_be_written (io_configuration, writer_entry, specific_field, timestep, previous_write_timestep, write_time, previous_write_time, field_written) |
| Determines if a file can be written to its overarching write representation. If so then a write is issued, otherwise an outstanding write point is registered which will be checked frequency to do a write later on. More...
|
|
subroutine, public | writer_federator_mod::check_writer_for_trigger (io_configuration, source, data_id, data_dump) |
| Checks all writer entries for any trigger fires and issues the underlying file storage. More...
|
|
subroutine | writer_federator_mod::check_writer_trigger (io_configuration, writer_entry_index, timestep, time, terminated) |
| Checks a writer trigger and issues a file creation along with field write if the conditions (time or timestep) are met. This will either create and write to the file or store a pending state if one is already open (required due to NetCDF/HDF5 limitations with thread safety and parallel access.) More...
|
|
subroutine, public | writer_federator_mod::issue_actual_write (io_configuration, writer_entry, timestep, time, terminated_write) |
| Issues the actual file creation, write of available fields and closure if all completed. More...
|
|
type(map_type) function | writer_federator_mod::extract_applicable_time_points (start_time, end_time) |
| Extracts the applicable time points from the overall map that lie within a specific range. More...
|
|
type(map_type) function | writer_federator_mod::sort_applicable_time_points (unsorted_timepoints) |
| Sorts the time points based upon their timestep, smallest to largest. Note that this is a bubble sort and as such inefficient, so would be good to change to something else but works OK for now. More...
|
|
subroutine | writer_federator_mod::close_diagnostics_file (io_configuration, writer_entry, timestep, time) |
| Closes the diagnostics file, this is done via a global callback to issue the closes synchronously (collective operation) More...
|
|
subroutine | writer_federator_mod::handle_close_diagnostics_globalcallback (io_configuration, values, field_name, timestep) |
| Call back for the inter IO reduction which actually does the NetCDF file closing which is a collective (synchronous) operation. Calls out to the NetCDF code to do the call and then checks the list of pending file writes to process any others that are waiting in the queue. More...
|
|
logical function | writer_federator_mod::check_for_and_issue_chain_write (io_configuration, writer_entry) |
| Will check whether there are any pending writes and if so will issue a chain write for this. More...
|
|
subroutine | writer_federator_mod::register_pending_file_write (writer_entry_index, timestep, time, terminated_write) |
| Registers a pending file write which will be actioned later on. More...
|
|
logical function | writer_federator_mod::get_next_applicable_writer_entry (field_name, field_namespace, writer_index_point, contents_index_point) |
| Retrieves the index of the next writer which uses a specific field. If none is found then returns false, otherwise true. More...
|
|
integer function | writer_federator_mod::get_total_number_writer_fields (io_configuration, writer_entry_index) |
| Determines the total number of fields that make up a writer entry, this is all the fields of the groups that make up this writer and individual fields specified too. More...
|
|
integer function | writer_federator_mod::get_group_number_of_fields (io_configuration, group_members, num_q_fields, namespace) |
| Retrieves the number of fields within a group of fields. More...
|
|
integer function | writer_federator_mod::get_field_number_of_fields (io_configuration, field_name, field_namespace, num_q_fields) |
| Retrieves the number of fields that make up this field, if it is a Q field then it will be split into many subfields hence it is not a simple 1-1 mapping. More...
|
|
integer function | writer_federator_mod::add_group_of_fields_to_writer_entry (io_configuration, writer_entry_index, facet_index, current_field_index, writer_field_names, duplicate_field_names, diagnostic_generation_frequency) |
| Adds a group of fields to a writer entry, groups are expanded out into individual fields, each inherit the properties of the group. More...
|
|
integer function | writer_federator_mod::add_field_to_writer_entry (io_configuration, writer_entry_index, io_config_facet_index, my_facet_index, field_name, field_namespace, writer_field_names, duplicate_field_names, diagnostic_generation_frequency) |
| Adds a field to the writer entry, this will split the Q fields. However at initialisation we don't know what the Q fields are called, hence place a marker which will be replaced later on. More...
|
|
subroutine | writer_federator_mod::add_specific_field_to_writer_entry (io_configuration, writer_entry_index, io_config_facet_index, my_facet_index, field_name, field_namespace, writer_field_names, duplicate_field_names, timestep_frequency, diagnostic_field_configuration, prognostic_field_configuration) |
| Adds a specific field and its information to a writer entry. More...
|
|
subroutine | writer_federator_mod::handle_duplicate_field_names (writer_entry, duplicate_field_names) |
| Marks duplicate field names in a writer entry as duplicates so that the NetCDF layer can then deal with this by issuing unique names. More...
|
|
integer function | writer_federator_mod::get_index_of_group (io_configuration, group_name) |
| Searches the IO server configuration for a group with a specific name and returns the index to that group or 0 if no corresponding group is found. More...
|
|
subroutine | writer_federator_mod::determine_collective_type_and_optimise_if_possible (io_configuration, field_to_write_information) |
| Determines whether it can optimise a specific collective field. If the field fits into certain limited parameters then it will optimise it. These parameters are very common, hence most fields can be optimised. Basically, it is looking to contiguous blocks of data from different MONCs so that the number of writes to the NetCDF file is limited. More...
|
|
subroutine | writer_federator_mod::initialise_contiguous_data_regions (io_configuration, field_to_write_information) |
| Will initialise the collective data regions that form contiguous blocks within the data. This is quite an expensive operation so only done once for each field, but has the potential for very significant performance advantages for the fields that match it. More...
|
|
subroutine | writer_federator_mod::get_common_starts (dim, val, vals, common_starters, num_common) |
| Retrieves the number of common starting points that match a specific input value. More...
|
|
integer function | writer_federator_mod::get_dimension_identifier (dim_name, is_auto_dimension) |
| Translates a dimension name to its numeric corresponding identifier. More...
|
|