MONC
|
The writer field manager will manage aspects of the fields being provided to the writer federator. There are two major aspects to this, firstly extraction of fields from the data sent directly from MONC and then passed on if these fields are needed. Secondly, this will queue up the data to ensure that it is sent to the writer federator in strict order and that only one piece of a fields data is in the writer federator at any one time. More...
Data Types | |
type | field_ordering_type |
type | field_ordering_value_type |
interface | provide_field_to_writer_federator |
Functions/Subroutines | |
subroutine, public | initialise_writer_field_manager (io_configuration, continuation_run) |
Initialises the writer field manager. More... | |
subroutine, public | finalise_writer_field_manager () |
Finalises the writer field manager. More... | |
logical function, public | is_write_field_manager_up_to_date (timestep) |
Determines whether the state of the write field manager is up to date with respect to the timestep that has been provided, checks each entry to see if it is missing data or not. More... | |
subroutine, public | provide_monc_data_to_writer_federator (io_configuration, source, data_id, data_dump) |
Data communicated from MONC is provided to this write federator and then included if the configuration has selected to use that MONC field (as opposed to a field produced by the diagnostics federator) More... | |
type(data_values_type) function | get_value_from_monc_data (io_configuration, source, data_id, data_dump, field_name, field_namespace) |
Retrieves a value from the communicated MONC data. If this was an integer then converts to a real. More... | |
subroutine | get_type_of_field (fields, field_name, field_namespace, field_type, data_type) |
Retrieves the data type of a field or 0 if the field was not found. More... | |
subroutine | provide_field_to_writer_federator_rvalues_src (io_configuration, field_name, field_namespace, field_values, timestep, time, frequency, source) |
subroutine | provide_field_to_writer_federator_rvalues_nosrc (io_configuration, field_name, field_namespace, field_values, timestep, time, frequency) |
subroutine | provide_field_to_writer_federator_nosrc (io_configuration, field_name, field_namespace, field_values, timestep, time, frequency) |
Provides a field to the write federator with no source (a none collective diagnostic) More... | |
subroutine | provide_field_to_writer_federator_src (io_configuration, field_name, field_namespace, field_values, timestep, time, frequency, source, terminated_case) |
Provides a field to the write federator (a collective diagnostic or prognostic) More... | |
subroutine | process_queued_items (io_configuration, field_ordering) |
Processes queued up items for a specific field's ordering. This will send any available fields to the write federator with a guaranteed ordering and clean up the memory associated with them. More... | |
type(field_ordering_value_type) function, pointer | get_field_ordering_value_at_timestep (collection, timestep) |
Retrieves a specific field ordering value at the corresponding timestep or null if none is found. More... | |
type(field_ordering_value_type) function, pointer | generate_value_container (field_name, field_namespace, field_values, timestep, time, frequency, source) |
Generates the field value container which is then filled in with appropriate values and added into the overall field ordering data structure. More... | |
type(field_ordering_type) function, pointer | get_or_add_field_ordering (field_name, field_namespace, frequency, source) |
Retrieves or adds ordering for a specific field (and MONC source) More... | |
type(field_ordering_type) function, pointer | get_field_ordering (field_name, do_lock) |
Retrieves a field ordering based upon the name or null if none can be found. More... | |
integer(kind=8) function | prepare_to_serialise_field_manager_state () |
Prepares to serialise the field manager state, both determines storage needed and also issues any locks. More... | |
subroutine | serialise_field_manager_state (byte_data) |
Serialises the current field manager, releases any locks issued during preparation. More... | |
subroutine | unserialise_field_manager_state (byte_data) |
Unserialses from some byte data into the state. More... | |
integer(kind=8) function | prepare_to_serialise_specific_field_ordering (specific_field_ordering) |
Prepares to serialise a specific field ordering, both determines storage size and issues locks. More... | |
subroutine | serialise_specific_field_ordering (specific_field_ordering, byte_data, current_data_point) |
Serialises a specific fields ordering and releases any locks issued during preparation. More... | |
type(field_ordering_type) function, pointer | unserialise_specific_field_ordering (byte_data) |
Unserialises some field ordering. More... | |
integer(kind=8) function | prepare_to_serialise_field_ordering_value (specific_field_value) |
Prepares to serialise a specific field ordering value, determines both the storage size and issues locks. More... | |
subroutine | serialise_field_ordering_value (specific_field_value, byte_data, current_data_point) |
Serialises a field ordering value and releases any issued locks. More... | |
type(field_ordering_value_type) function, pointer | unserialise_field_ordering_value (byte_data) |
Unseralises some field ordering from its byte representation. More... | |
Variables | |
integer, volatile | field_lock |
type(hashmap_type), volatile | field_orderings |
The writer field manager will manage aspects of the fields being provided to the writer federator. There are two major aspects to this, firstly extraction of fields from the data sent directly from MONC and then passed on if these fields are needed. Secondly, this will queue up the data to ensure that it is sent to the writer federator in strict order and that only one piece of a fields data is in the writer federator at any one time.
subroutine, public writer_field_manager_mod::finalise_writer_field_manager |
Finalises the writer field manager.
Definition at line 71 of file writer_field_manager.F90.
|
private |
Generates the field value container which is then filled in with appropriate values and added into the overall field ordering data structure.
field_name | The field name |
field_values | The fields values |
timestep | The corresponding MONC model timestep |
time | The corresponding MONC model time |
frequency | Configured sampling frequency |
source | MONC source pid |
Definition at line 375 of file writer_field_manager.F90.
|
private |
Retrieves a field ordering based upon the name or null if none can be found.
field_name | The name of the field to look up |
do_lock | Whether to issue a read lock or not |
Definition at line 431 of file writer_field_manager.F90.
|
private |
Retrieves a specific field ordering value at the corresponding timestep or null if none is found.
collection | The map of timesteps to field ordering values that we are looking up |
timestep | The timestep to look up |
Definition at line 348 of file writer_field_manager.F90.
|
private |
Retrieves or adds ordering for a specific field (and MONC source)
field_name | The field name |
frequency | The sampling frequency of this field |
source | MONC source PID |
Definition at line 397 of file writer_field_manager.F90.
|
private |
Retrieves the data type of a field or 0 if the field was not found.
fields | Array of fields to search |
field_name | The name of the field to locate |
Definition at line 203 of file writer_field_manager.F90.
|
private |
Retrieves a value from the communicated MONC data. If this was an integer then converts to a real.
io_configuration | Configuration of the IO server |
source | The source PID of the MONC process |
data_id | The ID of the data definition that is represented by the dump |
data_dump | The data we have received from MONC |
field_name | The field to retrieve |
Definition at line 158 of file writer_field_manager.F90.
subroutine, public writer_field_manager_mod::initialise_writer_field_manager | ( | type(io_configuration_type), intent(inout) | io_configuration, |
logical, intent(in) | continuation_run | ||
) |
Initialises the writer field manager.
io_configuration | Configuration of the IO server |
continuation_run | Whether or not this is a continuation run |
Definition at line 58 of file writer_field_manager.F90.
logical function, public writer_field_manager_mod::is_write_field_manager_up_to_date | ( | integer, intent(in) | timestep | ) |
Determines whether the state of the write field manager is up to date with respect to the timestep that has been provided, checks each entry to see if it is missing data or not.
timestep | The timestep to check against |
Definition at line 79 of file writer_field_manager.F90.
|
private |
Prepares to serialise the field manager state, both determines storage needed and also issues any locks.
Definition at line 453 of file writer_field_manager.F90.
|
private |
Prepares to serialise a specific field ordering value, determines both the storage size and issues locks.
specific_field_value | The specific value to prepare for serialisation |
Definition at line 644 of file writer_field_manager.F90.
|
private |
Prepares to serialise a specific field ordering, both determines storage size and issues locks.
specific_field_ordering | The field ordering to prepare for serialisation |
Definition at line 541 of file writer_field_manager.F90.
|
private |
Processes queued up items for a specific field's ordering. This will send any available fields to the write federator with a guaranteed ordering and clean up the memory associated with them.
io_configuration | The IO server configuration |
field_ordering | The field ordering status associated with this field |
Definition at line 315 of file writer_field_manager.F90.
|
private |
Provides a field to the write federator with no source (a none collective diagnostic)
io_configuration | The IO server configuration |
field_name | The field name |
field_values | The fields values |
timestep | The corresponding model timestep |
time | Corresponding MONC model time |
frequency | Configured sampling frequency |
Definition at line 257 of file writer_field_manager.F90.
|
private |
Definition at line 238 of file writer_field_manager.F90.
|
private |
Definition at line 221 of file writer_field_manager.F90.
|
private |
Provides a field to the write federator (a collective diagnostic or prognostic)
io_configuration | The IO server configuration |
field_name | The field name |
field_values | The fields values |
timestep | The corresponding model timestep |
time | Corresponding MONC model time |
frequency | Configured sampling frequency |
source | The MONC source ID |
Definition at line 277 of file writer_field_manager.F90.
subroutine, public writer_field_manager_mod::provide_monc_data_to_writer_federator | ( | type(io_configuration_type), intent(inout) | io_configuration, |
integer, intent(in) | source, | ||
integer, intent(in) | data_id, | ||
character, dimension(:), intent(in), allocatable | data_dump | ||
) |
Data communicated from MONC is provided to this write federator and then included if the configuration has selected to use that MONC field (as opposed to a field produced by the diagnostics federator)
io_configuration | Configuration of the IO server |
source | The source PID of the MONC process |
data_id | The ID of the data definition that is represented by the dump |
data_dump | The data we have received from MONC |
Definition at line 109 of file writer_field_manager.F90.
|
private |
Serialises the current field manager, releases any locks issued during preparation.
byte_data | Packaged field manager serialised state. |
Definition at line 478 of file writer_field_manager.F90.
|
private |
Serialises a field ordering value and releases any issued locks.
specific_field_value | The specific value to serialise |
byte_data | Target byte data whihc is allocated here |
current_data_point | The current write point in the byte data, is updated during call so represents next point on return |
Definition at line 657 of file writer_field_manager.F90.
|
private |
Serialises a specific fields ordering and releases any locks issued during preparation.
specific_field_ordering | The field ordering to serialise |
byte_data | Byte data which contains the packaged state of the field ordering |
current_data_point | The current write point in the byte data, is updated during call so represents next point on return |
Definition at line 571 of file writer_field_manager.F90.
|
private |
Unserialses from some byte data into the state.
byte_data | Serialised byte data to inflate and initialise from |
Definition at line 514 of file writer_field_manager.F90.
|
private |
Unseralises some field ordering from its byte representation.
byte_data | The serialised representation |
Definition at line 688 of file writer_field_manager.F90.
|
private |
Unserialises some field ordering.
byte_data | The serialised representation which we work from |
Definition at line 611 of file writer_field_manager.F90.
|
private |
Definition at line 48 of file writer_field_manager.F90.
|
private |
Definition at line 49 of file writer_field_manager.F90.