MONC
|
Bridge between MONC and the IO server, this registers the current MONC process, will issue data dumps and deregister MONCs when the model run is completed. More...
Data Types | |
type | io_configuration_data_definition_type |
type | io_configuration_field_type |
type | io_server_sendable_field_sizing |
Functions/Subroutines | |
type(component_descriptor_type) function, public | iobridge_get_descriptor () |
subroutine | init_callback (current_state) |
Initialisation call back, called at the start of the model run. More... | |
subroutine | timestep_callback (current_state) |
Model dump call back, called for each model dump phase. More... | |
subroutine | send_data_to_io_server (current_state, data_index) |
Sends data to the IO server. More... | |
subroutine | finalisation_callback (current_state) |
Finalisation call back, called at the end of the model run. More... | |
subroutine | build_mpi_data_types () |
Builds the MPI data types that correspond to the field descriptions and sizings. More... | |
integer function | build_mpi_data_type_for_definition (specific_data_definition) |
Builds the MPI data type for a specific definition with sizing information. More... | |
subroutine | populate_sendable_fields (current_state) |
Populates the sendable field definitions with the field sizing information. More... | |
subroutine | populate_component_public_field (current_state, field_name) |
Populates the field information for a specific publically available field offered by one of the components. More... | |
subroutine | populate_globally_visible_sendable_fields (current_state) |
Populates the globally visible sendable fields which is a key value pair mapping between name and description of that field. More... | |
class(*) function, pointer | generate_sendable_description (dim1, dim2, dim3, dim4) |
Generates a sendable description based upon the dimension information supplied, missing arguments means that dimension does not exist. More... | |
subroutine | send_monc_specific_data_to_server (current_state, mpi_type_data_sizing_description) |
Sends this MONC specific information to the IO server, which is field info (sizing & availability) as well as meta data such as ZN field and Q field names. More... | |
integer function | send_data_field_sizes_to_server (current_state, mpi_type_data_sizing_description, data_description, number_unique_fields) |
Assembles all the data field sizing information and sends this to the IO server. More... | |
integer function | send_general_monc_information_to_server (current_state, buffer) |
Sends the general MONC information (ZN field and Q field names) to the IO server. More... | |
subroutine | package_local_monc_decomposition_into_descriptions (current_state, data_description) |
Packages the local MONC decomposition information into descriptions for communication. More... | |
type(io_server_sendable_field_sizing) function | get_sendable_field_sizing (field_name, field_found) |
Retrieves the sizing information associated with a specific field. More... | |
type(component_field_information_type) function | get_component_field_descriptor (field_name) |
Retrieves the descriptor associated with some component's field based upon the field name. More... | |
subroutine | assemble_individual_description (data_description, index, field_name, field_sizing_description) |
Will assemble an individual description of an array data field. More... | |
subroutine | register_with_io_server (current_state, mpi_type_definition_description, mpi_type_field_description) |
Registers this MONC with the corresponding IO server. This will encapsulate the entire protocol, which is sending the registration command, receiving the data and field definitions from the IO server and then sending back the sizing for the fields that this MONC will contribute. More... | |
integer function | get_total_number_of_fields (definition_descriptions, number_defns) |
Retrieve the total number of fields, which is all the fields in all the data definitions. More... | |
subroutine | populate_data_definition_configuration (definition_descriptions, number_defns, field_descriptions, number_fields) |
Based upon the received data and field definitions this will configure the IO bridge internal representation of these facets, which is a structured tree, data defintions holding their own fields rather than the unstructured data we get from the IO server. More... | |
integer function | get_definition_index (name) |
Looks up a specific definition based upon its name and returns the index. More... | |
subroutine | pack_send_buffer (current_state, data_definition) |
Packs the current state into the send buffer. This iterates through each field in the data description and adds it to the send buffer. More... | |
integer function | pack_scalar_into_send_buffer (current_state, data_definition, field, current_buffer_point) |
Packs scalar fields into the send bufer. More... | |
integer function | handle_component_field_scalar_packing_into_send_buffer (current_state, data_definition, field, current_buffer_point) |
Packs a components field scalar into the send buffer, these are fields that are served up by components rather than explicitly available. More... | |
integer function | pack_map_into_send_buffer (current_state, data_definition, field, current_buffer_point) |
Packs map fields into the send buffer. More... | |
integer function | pack_array_into_send_buffer (current_state, data_definition, field, current_buffer_point) |
Packs array fields into the send bufer. More... | |
integer function | handle_component_field_array_packing_into_send_buffer (current_state, data_definition, field, current_buffer_point) |
Packs a components field array into the send buffer, these are fields that are served up by components rather than explicitly available. More... | |
integer function | pack_prognostic_flow_field (buffer, prognostic, start_offset, local_grid) |
Packs the data of a specific prognostic field into a buffer. More... | |
integer function | pack_q_fields (buffer, q_fields, number_q_fields, start_offset, local_grid) |
Packs the Q fields into the send buffer. More... | |
Variables | |
type(io_configuration_data_definition_type), dimension(:), allocatable | data_definitions |
type(map_type) | unique_field_names |
type(map_type) | sendable_fields |
type(map_type) | component_field_descriptions |
logical | io_server_enabled |
logical | in_finalisation_callback |
Bridge between MONC and the IO server, this registers the current MONC process, will issue data dumps and deregister MONCs when the model run is completed.
|
private |
Will assemble an individual description of an array data field.
data_description | The data structure used to describe the size of arrays |
index | The index of this current field |
field_name | The corresponding field name that we are describing |
dimensions | The number of dimensions (zero means the field is inactive) |
dim1 | Optional size of dimension 1 |
dim2 | Optional size of dimension 2 |
dim3 | Optional size of dimension 3 |
dim4 | Optional size of dimension 4 |
Definition at line 629 of file iobridge.F90.
|
private |
Builds the MPI data type for a specific definition with sizing information.
specific_data_definition | The data definition to build the type for |
Definition at line 187 of file iobridge.F90.
|
private |
Builds the MPI data types that correspond to the field descriptions and sizings.
Definition at line 174 of file iobridge.F90.
|
private |
Finalisation call back, called at the end of the model run.
current_state | The current model state |
Definition at line 150 of file iobridge.F90.
|
private |
Generates a sendable description based upon the dimension information supplied, missing arguments means that dimension does not exist.
dim1 | Optional size of dimension one |
dim2 | Optional size of dimension two |
dim3 | Optional size of dimension three |
dim4 | Optional size of dimension four |
Definition at line 420 of file iobridge.F90.
|
private |
Retrieves the descriptor associated with some component's field based upon the field name.
field_name | The field name |
Definition at line 607 of file iobridge.F90.
|
private |
Looks up a specific definition based upon its name and returns the index.
name | The defintion name to search for |
Definition at line 729 of file iobridge.F90.
|
private |
Retrieves the sizing information associated with a specific field.
field_name | The field name to look up |
field_found | Optional flag depicting whether the field was found or not |
Definition at line 588 of file iobridge.F90.
|
private |
Retrieve the total number of fields, which is all the fields in all the data definitions.
definition_descriptions | Data definition descriptions |
number_defns | The number of data definitions |
Definition at line 676 of file iobridge.F90.
|
private |
Packs a components field array into the send buffer, these are fields that are served up by components rather than explicitly available.
current_state | The current model state |
data_definition | The data definition description |
field | The specific field we are looking up |
current_buffer_point | The current point in the buffer where this data will be entered |
Definition at line 1036 of file iobridge.F90.
|
private |
Packs a components field scalar into the send buffer, these are fields that are served up by components rather than explicitly available.
current_state | The current model state |
data_definition | The data definition description |
field | The specific field we are looking up |
current_buffer_point | The current point in the buffer where this data will be entered |
Definition at line 853 of file iobridge.F90.
|
private |
Initialisation call back, called at the start of the model run.
current_state | The current model state |
Definition at line 74 of file iobridge.F90.
type(component_descriptor_type) function, public iobridge_mod::iobridge_get_descriptor |
|
private |
Packs array fields into the send bufer.
current_state | The current model state |
data_definition | The data definition description |
field | The specific field we are looking up |
current_buffer_point | The current point in the buffer where this data will be entered |
Definition at line 910 of file iobridge.F90.
|
private |
Packs map fields into the send buffer.
current_state | The current model state |
data_definition | The data definition description |
field | The specific field we are looking up |
current_buffer_point | The current point in the buffer where this data will be entered |
Definition at line 880 of file iobridge.F90.
|
private |
Packs the data of a specific prognostic field into a buffer.
buffer | The buffer to pack the field into |
prognostic | The prognostic field |
start_offset | The starting offset to write into the buffer |
local_grid | Description of the local grid |
Definition at line 1075 of file iobridge.F90.
|
private |
Packs the Q fields into the send buffer.
buffer | The send buffer to pack into |
q_fields | Q prognostic fields |
number_q_fields | The number of Q fields |
start_offset | Starting offset in the buffer to pack into |
local_grid | Local grid description |
Definition at line 1100 of file iobridge.F90.
|
private |
Packs scalar fields into the send bufer.
current_state | The current model state |
data_definition | The data definition description |
field | The specific field we are looking up |
current_buffer_point | The current point in the buffer where this data will be entered |
Definition at line 775 of file iobridge.F90.
|
private |
Packs the current state into the send buffer. This iterates through each field in the data description and adds it to the send buffer.
current_state | The current model state |
data_definition | The definition of the data which hold the send buffer and the fields |
Definition at line 746 of file iobridge.F90.
|
private |
Packages the local MONC decomposition information into descriptions for communication.
current_state | The current model state |
data_description | THe data description to pack into |
Definition at line 561 of file iobridge.F90.
|
private |
Populates the field information for a specific publically available field offered by one of the components.
field_visibility_descriptor | The field descriptor which contains sizing information |
Definition at line 282 of file iobridge.F90.
|
private |
Based upon the received data and field definitions this will configure the IO bridge internal representation of these facets, which is a structured tree, data defintions holding their own fields rather than the unstructured data we get from the IO server.
definition_descriptions | data definitions received from the IO server |
number_defns | The number of data definitions |
field_descriptions | The field descriptions that we received from the IO server |
number_fields | The total number of field descriptions received |
Definition at line 695 of file iobridge.F90.
|
private |
Populates the globally visible sendable fields which is a key value pair mapping between name and description of that field.
current_state | The current model state |
Definition at line 308 of file iobridge.F90.
|
private |
Populates the sendable field definitions with the field sizing information.
current_state | The current model state |
Definition at line 267 of file iobridge.F90.
|
private |
Registers this MONC with the corresponding IO server. This will encapsulate the entire protocol, which is sending the registration command, receiving the data and field definitions from the IO server and then sending back the sizing for the fields that this MONC will contribute.
current_state | The current model state |
mpi_type_definition_description | MPI data type for data definition message |
mpi_type_field_description | MPI data type for field definition message |
Definition at line 646 of file iobridge.F90.
|
private |
Assembles all the data field sizing information and sends this to the IO server.
current_state | The current model state |
mpi_type_data_sizing_description | MPI data type representing the sizing message |
data_description | Data descriptions which will be populated and then sent |
number_unique_fields | The number of unique fields that we are sending over |
Definition at line 481 of file iobridge.F90.
|
private |
Sends data to the IO server.
current_state | The current model state |
data_index | The specific data index to send over |
Definition at line 125 of file iobridge.F90.
|
private |
Sends the general MONC information (ZN field and Q field names) to the IO server.
current_state | The current model state |
buffer | The communication buffer to use |
Definition at line 509 of file iobridge.F90.
|
private |
Sends this MONC specific information to the IO server, which is field info (sizing & availability) as well as meta data such as ZN field and Q field names.
current_state | The current model state |
mpi_type_data_sizing_description | MPI data type representing the sizing message |
Definition at line 454 of file iobridge.F90.
|
private |
Model dump call back, called for each model dump phase.
current_state | The current model state |
Definition at line 106 of file iobridge.F90.
|
private |
Definition at line 57 of file iobridge.F90.
|
private |
Definition at line 56 of file iobridge.F90.
|
private |
Definition at line 58 of file iobridge.F90.
|
private |
Definition at line 58 of file iobridge.F90.
|
private |
Definition at line 57 of file iobridge.F90.
|
private |
Definition at line 57 of file iobridge.F90.