MONC
Modules | Functions/Subroutines | Variables
haloswapper.F90 File Reference

Go to the source code of this file.

Modules

module  haloswapper_mod
 Performs halo swapping. In the parallel case this is between neighbouring processes and in the serial case it still needs to wrap the halos around for the boundary conditions. This module determines the policy of halo swapping (i.e. the fields to communicate) and the halo communication module is used to provide the actual mechanism.
 

Functions/Subroutines

type(component_descriptor_type) function, public haloswapper_mod::haloswapper_get_descriptor ()
 Provides a description of this component for the core to register. More...
 
subroutine haloswapper_mod::initialisation_callback (current_state)
 Initialisation callback hook which will set up the halo swapping state and cache some precalculated data for fast(er) halo swapping at each timestep. More...
 
subroutine haloswapper_mod::timestep_callback (current_state)
 Timestep callback hook which performs the halo swapping for each prognostic field. More...
 
subroutine haloswapper_mod::finalisation_callback (current_state)
 The finalisation callback hook which will clean up and free the memory associated with the halo swapping. More...
 
subroutine haloswapper_mod::copy_halo_buffer_to_corners (current_state, neighbour_description, corner_loc, x_target_index, y_target_index, neighbour_location, current_page, source_data)
 Copies the halo buffer to halo location in a corner for a halo cell/column and corner location. The copies are performed for each prognostic field. More...
 
subroutine haloswapper_mod::copy_halo_buffer_to_field (current_state, neighbour_description, dim, target_index, neighbour_location, current_page, source_data)
 Copies the halo buffer to halo location in a field for a specific dimension and halo cell/column. The copies are performed for each prognostic field. More...
 
subroutine haloswapper_mod::copy_fields_to_halo_buffer (current_state, neighbour_description, dim, source_index, pid_location, current_page, source_data)
 Copies the prognostic field data to halo buffers for a specific process in a dimension and halo cell. More...
 
subroutine haloswapper_mod::copy_corners_to_halo_buffer (current_state, neighbour_description, corner_loc, x_source_index, y_source_index, pid_location, current_page, source_data)
 Copies the prognostic corner field data to halo buffers for a specific process in a dimension and halo cell. More...
 
integer function haloswapper_mod::get_fields_per_halo_cell (current_state)
 Deduces the number of fields per halo cell. This depends upon what fields are active in the model. More...
 
subroutine haloswapper_mod::display_debugging_info_if_needed (neighbour_counts, included_fields, rank)
 Displays some debugging information about who is sending what if that logging_mod level is selected. More...
 
subroutine haloswapper_mod::perform_local_data_copy_for_all_prognostics (current_state, halo_depth, involve_corners, source_data)
 Will do any local copying of data required for the boundary conditions. I.e. if all columns in a slice are on a process then it will copy in the y dimension. More...
 

Variables

logical, private haloswapper_mod::first_call = .true.
 
type(halo_communication_type), save haloswapper_mod::halo_swap_state