MONC
Data Types | Modules | Functions/Subroutines | Variables
diagnostic_federator.F90 File Reference

Go to the source code of this file.

Data Types

type  diagnostic_federator_mod::all_diagnostics_at_timestep_type
 
type  diagnostic_federator_mod::diagnostics_at_timestep_type
 
type  diagnostic_federator_mod::diagnostics_type
 
type  diagnostic_federator_mod::diagnostics_activity_type
 

Modules

module  diagnostic_federator_mod
 This diagnostics federator will take in data fields sent from a MONC, perform operators on these as required by the diagnostics definition to produce diagnostic instantaneous fields which are then sent along to anything interested in them.
 

Functions/Subroutines

type(hashmap_type) function, public diagnostic_federator_mod::initialise_diagnostic_federator (io_configuration)
 Initialises the diagnostics action and sets up the diagnostics master definitions. More...
 
logical function, public diagnostic_federator_mod::check_diagnostic_federator_for_completion (io_configuration)
 Checks whether the diagnostics federator has completed or not, this is really checking all the underlying operations and communications to ensure that the data has been sent all the way through. More...
 
subroutine, public diagnostic_federator_mod::finalise_diagnostic_federator (io_configuration)
 Finalises the diagnostics federator, waiting for all outstanding requests and then freeing data. More...
 
type(hashmap_type) function, public diagnostic_federator_mod::determine_diagnostics_fields_available (monc_field_names)
 Determines the diagnostics fields that are available based upon the input MONC fields on registration that will be sent from MONC to the IO server. More...
 
subroutine, public diagnostic_federator_mod::pass_fields_to_diagnostics_federator (io_configuration, source, data_id, data_dump)
 Entry point into the diagnostics federator this runs the diagnostics, executing the defined rules based upon the input data. More...
 
subroutine diagnostic_federator_mod::check_all_activities_against_completed_fields (io_configuration, timestep_entry, diagnostics_by_timestep)
 Checks all pending activities against the completed fields and runs them if the required fields are now available. More...
 
logical function diagnostic_federator_mod::handle_operator_completion (io_configuration, timestep_entry, specific_activity)
 Handles the completion of the operator. More...
 
subroutine diagnostic_federator_mod::handle_completion (io_configuration, values, field_name, timestep)
 Handles inter io reduction completion, it adds the resulting value to the appropriate completion lists and then checks the pending activities and runs them if we can execute any of these based upon this value. More...
 
subroutine diagnostic_federator_mod::handle_completion_for_specific_monc_timestep_entry (io_configuration, result_to_add, field_name, timestep_entry, diagnostics_by_timestep)
 This handles inter IO completion for a specific timestep entry. This is required as at a timestep there can be multiple entires based on each MONC which communicates with the IO server so we handle an individual one here. More...
 
subroutine diagnostic_federator_mod::handle_diagnostic_calculation_completed (io_configuration, diagnostic_index, timestep_entry, diagnostics_by_timestep)
 Handles completion of a diagnostic calculation and will then pass this onto interested parties. More...
 
logical function diagnostic_federator_mod::are_fields_available_for_activity (timestep_entry, activity)
 Determines whether the fields required for an activity are available so that activity can be run. More...
 
subroutine diagnostic_federator_mod::perform_inter_io_communication (io_configuration, timestep_entry, all_entries_at_timestep, activity, value_to_send, communication_field_name)
 Performs the actual inter IO communication by calling out to the appropriate inter IO module. More...
 
subroutine diagnostic_federator_mod::issue_communication_calls (io_configuration, timestep_entry, diagnostics_by_timestep, source, data_id, data_dump)
 Issues any inter io communucation calls that are appropriate based upon the data recieved from MONC. More...
 
subroutine diagnostic_federator_mod::check_diagnostics_entries_against_data (io_configuration, source, data_id, data_dump, timestep_diagnostics_entry)
 Checks the outstanding fields of a time step entry against the data recieved from MONC and moves any acquired data from the outstanding set to the completed, along with its value. More...
 
subroutine diagnostic_federator_mod::clean_diagnostic_states (current_timestep)
 Cleans the diagnostic states if required (based on the timestep period) More...
 
subroutine diagnostic_federator_mod::deallocate_diagnostics_at_timestep (key)
 Deallocates all the diagnostics at a specific timestep, this removes all the individual MONC timestep entries and deallocates internal all diagnostic data, but keeps the all diagnostic entry in the list (which is removed by the caller) More...
 
type(data_values_type) function, pointer diagnostic_federator_mod::get_value_from_monc_data (io_configuration, source, data_id, data_dump, field_name)
 Retrieves a value from the communicated MONC data. If this was an integer then converts to a real. More...
 
integer function diagnostic_federator_mod::get_datatype_of_field (fields, field_name)
 Retrieves the data type of a field or 0 if the field was not found. More...
 
type(diagnostics_at_timestep_type) function, pointer diagnostic_federator_mod::find_or_register_timestep_entry (io_configuration, timestep, source, time)
 Locates or registers a new (if it does not exist) time step entry based upon the timestep and source MONC process. This is a timestep/source specific state which represents progress through the overall diagnostic configuration. More...
 
type(diagnostics_at_timestep_type) function, pointer diagnostic_federator_mod::create_timestep_entry (io_configuration, timestep, time, source)
 Creates a timestep entry and processes all members, determining activities their required fields etc... More...
 
subroutine diagnostic_federator_mod::add_required_fields_if_needed (required_fields)
 Adds the required fields of an activity to the overall required fields which are cloned for each new timestep entry. More...
 
type(diagnostics_activity_type) function, pointer diagnostic_federator_mod::retrieve_next_activity (iterator)
 Retrieves the next activity in a collection being iterated over by an iterator. More...
 
type(diagnostics_at_timestep_type) function, pointer diagnostic_federator_mod::get_timestep_entry (timestep, source, do_lock)
 Retrieves the timestep at a specific timestep and source MONC. More...
 
type(all_diagnostics_at_timestep_type) function, pointer diagnostic_federator_mod::find_or_add_diagnostics_by_timestep (timestep)
 Finds or adds diagnostics by timestep. This is used to maintain a list of all diagnostic entries for a specific timestep for every MONC source process. More...
 
type(all_diagnostics_at_timestep_type) function, pointer diagnostic_federator_mod::get_diagnostics_by_timestep (timestep, do_lock)
 Retrieves the diagnostics list (each MONC source) at a specific timestep. More...
 
type(diagnostics_at_timestep_type) function, pointer diagnostic_federator_mod::retrieve_next_specific_monc_timestep_entry (iterator)
 Retrieves the next MONC timestep entry from the all diagnostics based upon a collections iterator. More...
 
type(all_diagnostics_at_timestep_type) function, pointer diagnostic_federator_mod::get_diagnostic_by_key (key)
 Retrieves all diagnostics at a timestep by its key. More...
 
type(all_diagnostics_at_timestep_type) function, pointer diagnostic_federator_mod::retrieve_diagnostics (mapentry)
 Retrieves the all diagnostics at a specific timestep from its map entry. More...
 
type(diagnostics_activity_type) function, pointer diagnostic_federator_mod::get_comm_activity_from_fieldname (diagnostics_by_timestep, field_name)
 Retrieves a communication activity from its field name. More...
 
type(io_configuration_misc_item_type) function, pointer diagnostic_federator_mod::get_misc_action_at_index (action_members, index)
 Retrieves a misc action from the parsed user XML configuration at a specific index. More...
 
subroutine diagnostic_federator_mod::define_diagnostics (io_configuration, diagnostic_generation_frequency)
 Based upon the IO configuration this will define the diagnostics structure. It is done once at initialisation and then this same information is used for execution at each data arrival point. More...
 
type(diagnostics_activity_type) function, pointer diagnostic_federator_mod::get_diagnostic_activity_by_result_name (result_name, diagnostic_entry_index)
 Retrives a diagnostic activity based upon its result name or null if none is found. More...
 
subroutine diagnostic_federator_mod::process_auto_dimensions (io_configuration, diagnostic_configuration, entry_index)
 Processes all auto dimensions by looking them up and resolving them based upon the operators. More...
 
integer function diagnostic_federator_mod::get_diagnostic_generation_frequency (io_configuration, required_fields)
 Retrieves the max diagnostic generation frequency for a set of fields. More...
 
integer function diagnostic_federator_mod::get_field_frequency (io_configuration, field_name)
 Retrieves the generation frequency for a specific field. More...
 
character(len=string_length) function diagnostic_federator_mod::generate_activity_diagnostic_key (diagnostic, activity)
 Generates a unique key for an activity within a diagnostic, which is unique amongst all diagnostics and their activities. More...
 

Variables

integer, parameter diagnostic_federator_mod::operator_type =1
 
integer, parameter diagnostic_federator_mod::reduction_type =2
 
integer, parameter diagnostic_federator_mod::broadcast_type =3
 
integer, parameter diagnostic_federator_mod::allreduction_type =4
 
integer, parameter diagnostic_federator_mod::perform_clean_every =100
 A wrapper type containing all the diagnostics for MONC source processes at a specific timestep. More...
 
type(hashmap_type), volatile diagnostic_federator_mod::diagnostics_per_monc_at_timestep
 
type(hashmap_type), volatile diagnostic_federator_mod::all_diagnostics_at_timestep
 
type(hashset_type), volatile diagnostic_federator_mod::all_outstanding_fields
 
type(hashset_type), volatile diagnostic_federator_mod::available_fields
 
type(diagnostics_type), dimension(:), allocatable, volatile diagnostic_federator_mod::diagnostic_definitions
 
integer, volatile diagnostic_federator_mod::timestep_entries_rwlock
 
integer, volatile diagnostic_federator_mod::all_diagnostics_per_timestep_rwlock
 
integer, volatile diagnostic_federator_mod::clean_progress_mutex
 
integer, volatile diagnostic_federator_mod::previous_clean_point
 
integer, volatile diagnostic_federator_mod::previous_viewed_timestep
 
integer, volatile diagnostic_federator_mod::current_point