56 current_state%column_global_x=current_state%local_grid%start(
x_index) - current_state%local_grid%halo_size(
x_index)
57 current_state%column_local_x=1
58 do while (current_state%column_global_x .le. &
59 current_state%local_grid%end(
x_index)+current_state%local_grid%halo_size(
x_index))
60 current_state%column_global_y = current_state%local_grid%start(
y_index) - current_state%local_grid%halo_size(
y_index)
61 current_state%column_local_y=1
62 do while (current_state%column_global_y .le. &
63 current_state%local_grid%end(
y_index)+current_state%local_grid%halo_size(
y_index))
66 current_state%column_global_y = current_state%column_global_y + 1
67 current_state%column_local_y = current_state%column_local_y + 1
69 current_state%column_global_x = current_state%column_global_x + 1
70 current_state%column_local_x = current_state%column_local_x + 1
90 current_state%first_timestep_column = (current_state%column_local_x == 1 .and. current_state%column_local_y == 1)
91 current_state%last_timestep_column = (current_state%column_global_x == &
92 current_state%local_grid%end(
x_index) + current_state%local_grid%halo_size(
x_index) .and. &
93 current_state%column_global_y == current_state%local_grid%end(
y_index) + current_state%local_grid%halo_size(
y_index))
95 current_state%first_nonhalo_timestep_column = (current_state%column_local_x == current_state%local_grid%halo_size(
x_index)+1 &
96 .and. current_state%column_local_y == current_state%local_grid%halo_size(
y_index)+1)
98 current_state%halo_column = current_state%column_local_y .lt. current_state%local_grid%local_domain_start_index(
y_index) .or.&
99 current_state%column_local_x .lt. current_state%local_grid%local_domain_start_index(
x_index) .or.&
100 current_state%column_local_y .gt. current_state%local_grid%local_domain_end_index(
y_index) .or.&
101 current_state%column_local_x .gt. current_state%local_grid%local_domain_end_index(
x_index)
subroutine timestep_whole(current_state, group_descriptor)
Executes a timestep for components in a group which are designed to be executed once per timestep...
subroutine timestep_column(current_state, group_descriptor)
Performs timestepping for a group of components on a per column basis. Each component in the group is...
subroutine, public finalise_timestepper()
Finalises the timestepper by cleaning up allocated memory.
subroutine, public execute_timestep_callbacks(current_state, group_id)
Calls all timestep callbacks with the specified state.
subroutine, public get_ordered_groups(ordered_groups)
Orders all the groups (in the order that they will be called in) and returns an array with these in o...
The ModelState which represents the current state of a run.
subroutine, public timestep(current_state)
Performs a timestep, which is comprised of executing each group of components in the order that they ...
subroutine, public init_timestepper()
Initialises the timestepper by prefetching the groups in the order that they will be executed...
integer, parameter, public group_type_whole
Execute the callbacks in this group once per timestep.
subroutine update_state_sitation_flags(current_state)
Updates the states situation flags for easy retrieval in the components that are run per timestep...
Functionality to support the different types of grid and abstraction between global grids and local o...
integer, parameter, public group_type_column
Execute the callbacks in this group for each column per timestep.
Performs the actual time stepping over groups of components. Each group can be the whole (which is on...
type(group_descriptor_type), dimension(:), allocatable group_descriptors
Prefetched ordered group descriptors.
The model state which represents the current state of a run.
integer, parameter, public y_index
integer, parameter, public x_index