MONC
|
Main core entry point to the rest of the model, this is called by the program main. More...
Data Types | |
interface | io_server_run_procedure |
IO server entry procedure which may be passed to the core entry point (if IO server is enabled) More... | |
Functions/Subroutines | |
subroutine, public | monc_core_bootstrap (component_descriptions, io_server_run) |
Main core entry point to bootstrap running the model. More... | |
logical function | determine_if_io_server_enabled (options_database) |
Determines whether the IO server should be enabled or not. More... | |
subroutine | load_model_configuration (state, options_database) |
Loads the configuration into the options database, either from a file or checkpoint. More... | |
subroutine | monc_run (component_descriptions, state) |
Called by MONC processes to run the MONC model. More... | |
subroutine | perform_model_steps (state, timestepping_time, modeldump_time) |
Will run through the actual model stages and call the appropriate callbacks at each stage. More... | |
subroutine | display_timestep_information (timestep, start_time) |
Provides timestepping information about the current step and performance. More... | |
subroutine | fill_registry_with_components (options_database, component_descriptions) |
Registers each supplied component description. More... | |
logical function | is_present_and_true (options_database, key) |
Determines whether an option is present in the database and true. This combines the key check and getting the value. Just calling to get the value directly will error if it does not exist, we don't nescesarily want for checking optional command line flags. More... | |
subroutine | display_registed_components () |
Displays the registered components and their version numbers. More... | |
subroutine | split_communicator_into_monc_and_io (moncs_per_io, monc_communicator, io_communicator, am_i_monc_process, corresponding_io_server_process) |
Splits the MPI_COMM_WORLD communicator into MONC and IO separate communicators. The size of each depends on the stride supplied. This will deal with the case where you only have 1 extra process, for instance 3 MONCs to an IO server with 5 processes. 0=IO server, 1-3 are MONCS but by rights 4 would be an IO server. However we dont want to waste a process as an IO server which is not serving anything, hence in this edge case it will be used as a MONC instead. More... | |
integer function | get_number_io_processes (total_ranks, moncs_per_io) |
Based upon the total number of processes and the IO process id stride determines the number of processes that will be used for the IO server. The MONC processes is total processes - io processes. More... | |
subroutine | get_io_configuration (options_database, ioserver_configuration_file, moncs_per_io_server) |
Reads the IO server configuration and populates the required variables of the configuration file name and the placement period. More... | |
integer function | get_mpi_threading_mode () |
Retrives the configured MPI threading mode, this is serialized by default but can be overridden via environment variable. More... | |
character(len=string_length) function | mpi_threading_level_to_string (lvl) |
Converts an MPI threading level to the string representation of it. More... | |
Main core entry point to the rest of the model, this is called by the program main.
|
private |
|
private |
|
private |
|
private |
|
private |
Reads the IO server configuration and populates the required variables of the configuration file name and the placement period.
options_database | The options database |
Definition at line 378 of file monc.F90.
|
private |
Retrives the configured MPI threading mode, this is serialized by default but can be overridden via environment variable.
Definition at line 398 of file monc.F90.
|
private |
Based upon the total number of processes and the IO process id stride determines the number of processes that will be used for the IO server. The MONC processes is total processes - io processes.
total_ranks | Total number of processes in use |
io_stride | The absolute process id stride for IO processes |
Definition at line 365 of file monc.F90.
|
private |
Determines whether an option is present in the database and true. This combines the key check and getting the value. Just calling to get the value directly will error if it does not exist, we don't nescesarily want for checking optional command line flags.
options_database | The options database |
key | The key to test for |
Definition at line 264 of file monc.F90.
|
private |
Loads the configuration into the options database, either from a file or checkpoint.
options_database | The options database |
Definition at line 115 of file monc.F90.
subroutine, public monc_mod::monc_core_bootstrap | ( | type(list_type), intent(inout) | component_descriptions, |
procedure(io_server_run_procedure) | io_server_run | ||
) |
Main core entry point to bootstrap running the model.
Reads in command line arguments, sets up the model state and registers components. Then runs through and calls the execution of each model stage.
componentDescriptions | Descriptions of existing components which should be registered |
io_server_run | Optional IO server entry procedure |
Definition at line 52 of file monc.F90.
|
private |
Called by MONC processes to run the MONC model.
componentDescriptions | Descriptions of existing components which should be registered |
state | The current model state |
Definition at line 139 of file monc.F90.
|
private |
|
private |
Will run through the actual model stages and call the appropriate callbacks at each stage.
state | The model state The time spent in doing actual timestepping (computation) The time spent in doing the model dump |
Definition at line 189 of file monc.F90.
|
private |
Splits the MPI_COMM_WORLD communicator into MONC and IO separate communicators. The size of each depends on the stride supplied. This will deal with the case where you only have 1 extra process, for instance 3 MONCs to an IO server with 5 processes. 0=IO server, 1-3 are MONCS but by rights 4 would be an IO server. However we dont want to waste a process as an IO server which is not serving anything, hence in this edge case it will be used as a MONC instead.
io_stride | The absolute process id stride for IO processes |
monc_communicator | The communicator associated with MONC processes |
io_communicator | The communicator associated with IO processes |
Definition at line 298 of file monc.F90.