MONC
|
Performs instantaneous time manipulation and only returns a value if the output frequency determines one should be. More...
Functions/Subroutines | |
subroutine, public | init_instantaneous_manipulation () |
Initialises the instantaneous time manipulation. More... | |
subroutine, public | finalise_instantaneous_manipulation () |
Finalises the instantaneous time manipulation. More... | |
logical function, public | is_instantaneous_time_manipulation_ready_to_write (latest_time, output_frequency, write_time, latest_timestep, write_timestep) |
type(data_values_type) function, public | perform_instantaneous_time_manipulation (instant_values, output_frequency, field_name, timestep, time) |
Performs the instantaneous time manipulation and returns data only if this is to be written to the storage. Internally a state is maintained which tracks when the write was last done to allow for flexibility in the time criteria. More... | |
logical function | deduce_whether_to_issue_values (field_name, output_frequency, time) |
Determines whether to issue values for write or not. This depends on the time and output frequency. More... | |
integer(kind=8) function, public | prepare_to_serialise_instantaneous_state () |
Prepares to serialise the instantaneous state, both determines the byte storage size and issues any locks. More... | |
subroutine, public | serialise_instantaneous_state (byte_data) |
Will serialise the state of this manipulator so that it can be later restarted. Any locks issued during preparation are released here. More... | |
subroutine, public | unserialise_instantaneous_state (byte_data) |
Unpacks some serialised byte data to initialise this manipulator to some previous state. More... | |
Variables | |
integer, volatile | existing_instantaneous_writes_mutex |
type(hashmap_type), volatile | existing_instantaneous_writes |
Performs instantaneous time manipulation and only returns a value if the output frequency determines one should be.
|
private |
Determines whether to issue values for write or not. This depends on the time and output frequency.
field_name | The field name that we are manipulating |
output_frequency | Configured output time frequency |
time | The current model time |
Definition at line 74 of file instantaneous_manipulation.F90.
subroutine, public instantaneous_time_manipulation_mod::finalise_instantaneous_manipulation | ( | ) |
Finalises the instantaneous time manipulation.
Definition at line 34 of file instantaneous_manipulation.F90.
subroutine, public instantaneous_time_manipulation_mod::init_instantaneous_manipulation | ( | ) |
Initialises the instantaneous time manipulation.
Definition at line 29 of file instantaneous_manipulation.F90.
logical function, public instantaneous_time_manipulation_mod::is_instantaneous_time_manipulation_ready_to_write | ( | real, intent(in) | latest_time, |
real, intent(in) | output_frequency, | ||
real, intent(in) | write_time, | ||
integer, intent(in) | latest_timestep, | ||
integer, intent(in) | write_timestep | ||
) |
Definition at line 39 of file instantaneous_manipulation.F90.
type(data_values_type) function, public instantaneous_time_manipulation_mod::perform_instantaneous_time_manipulation | ( | real(kind=default_precision), dimension(:), intent(in) | instant_values, |
real, intent(in) | output_frequency, | ||
character(len=*), intent(in) | field_name, | ||
integer, intent(in) | timestep, | ||
real(kind=default_precision), intent(in) | time | ||
) |
Performs the instantaneous time manipulation and returns data only if this is to be written to the storage. Internally a state is maintained which tracks when the write was last done to allow for flexibility in the time criteria.
instant_values | The instantaneous values to work with |
output_frequency | The output frequency configuration option |
field_name | The field name |
timestep | The timestep |
time | The model time |
Definition at line 56 of file instantaneous_manipulation.F90.
integer(kind=8) function, public instantaneous_time_manipulation_mod::prepare_to_serialise_instantaneous_state | ( | ) |
Prepares to serialise the instantaneous state, both determines the byte storage size and issues any locks.
Definition at line 100 of file instantaneous_manipulation.F90.
subroutine, public instantaneous_time_manipulation_mod::serialise_instantaneous_state | ( | character, dimension(:), intent(inout), allocatable | byte_data | ) |
Will serialise the state of this manipulator so that it can be later restarted. Any locks issued during preparation are released here.
byte_data | The state of this manipulator is written into here |
Definition at line 111 of file instantaneous_manipulation.F90.
subroutine, public instantaneous_time_manipulation_mod::unserialise_instantaneous_state | ( | character, dimension(:), intent(in), allocatable | byte_data | ) |
Unpacks some serialised byte data to initialise this manipulator to some previous state.
byte_data | The byte data to unpack and reinitialise from |
Definition at line 131 of file instantaneous_manipulation.F90.
|
private |
Definition at line 20 of file instantaneous_manipulation.F90.
|
private |
Definition at line 19 of file instantaneous_manipulation.F90.