MONC
monc_driver.F90
Go to the documentation of this file.
1 
2 !
3 program monc_driver
4  use io_server_mod, only : io_server_run
5  use monc_mod, only : monc_core_bootstrap
8  ! Include the autogenerated use modules for each of the components
9 #ifdef USE_MAKE
10 #include "components/componentheaders.autogen"
11 #include "testcases/testcaseheaders.autogen"
12 #else
13 #include "componentheaders.static"
14 #include "testcaseheaders.static"
15 #endif
16  implicit none
17 
18  type(list_type) :: component_descriptions
19 
20  call get_compiled_components(component_descriptions)
21  call monc_core_bootstrap(component_descriptions, io_server_run)
22 contains
23 
24  subroutine get_compiled_components(component_descriptions)
25  type(list_type), intent(inout) :: component_descriptions
26 
27  ! Include the autogenerated registration calls for each of the components
28 #ifdef USE_MAKE
29 #include "components/componentregistrations.autogen"
30 #include "testcases/testcaseregistrations.autogen"
31 #else
32 #include "componentregistrations.static"
33 #include "testcaseregistrations.static"
34 #endif
35  end subroutine get_compiled_components
36 
38  subroutine add_component(component_descriptions, single_description)
39  type(list_type), intent(inout) :: component_descriptions
40  type(component_descriptor_type), intent(in) :: single_description
41 
42  class(*), pointer :: raw_data
43  allocate(raw_data, source=single_description)
44  call c_add_generic(component_descriptions, raw_data, .false.)
45  end subroutine add_component
46 end program monc_driver
collections_mod::c_add_generic
Adds a generic element to the end of the list.
Definition: collections.F90:204
io_server_mod
The main IO server functionality which handles waiting for commands and data both of which are delt w...
Definition: ioserver.F90:5
collections_mod
Collection data structures.
Definition: collections.F90:7
io_server_mod::io_server_run
subroutine, public io_server_run(options_database, io_communicator_arg, provided_threading, total_global_processes, continuation_run, io_configuration_file)
Called to start the IO server and once this subroutine returns then it indicates that the IO server h...
Definition: ioserver.F90:68
monc_component_mod
Interfaces and types that MONC components must specify.
Definition: monc_component.F90:6
monc_driver
program monc_driver
MONC program entry point which simply calls the main procedure in the MONC module.
Definition: monc_driver.F90:3
monc_mod::monc_core_bootstrap
subroutine, public monc_core_bootstrap(component_descriptions, io_server_run)
Main core entry point to bootstrap running the model.
Definition: monc.F90:52
add_component
subroutine add_component(component_descriptions, single_description)
Called by each component to add itself to the registration list_type.
Definition: monc_driver.F90:39
collections_mod::list_type
List data structure which implements a doubly linked list. This list will preserve its order.
Definition: collections.F90:60
get_compiled_components
subroutine get_compiled_components(component_descriptions)
Definition: monc_driver.F90:25
monc_mod
Main core entry point to the rest of the model, this is called by the program main.
Definition: monc.F90:2
monc_component_mod::component_descriptor_type
Description of a component.
Definition: monc_component.F90:42