MONC
|
Implements TVD advection for prognostic fields. More...
Functions/Subroutines | |
type(component_descriptor_type) function, public | tvdadvection_get_descriptor () |
Provides a description of this component for the core to register. More... | |
subroutine | field_information_retrieval_callback (current_state, name, field_information) |
Field information retrieval callback, this returns information for a specific components published field. More... | |
subroutine | field_value_retrieval_callback (current_state, name, field_value) |
Field value retrieval callback, this returns the value of a specific published field. More... | |
subroutine | initialisation_callback (current_state) |
Sets up the stencil_mod (used in interpolation) and allocates data for the flux fields. More... | |
subroutine | finalisation_callback (current_state) |
Frees up the memory associated with the advection. More... | |
subroutine | timestep_callback (current_state) |
Timestep callback hook which performs the TVD advection for each prognostic field. More... | |
subroutine | advect_flow_fields (current_state) |
Will advect the flow fields. More... | |
subroutine | advect_q_fields (current_state) |
Advects the Q fields. More... | |
subroutine | advect_theta (current_state) |
Advects the theta field if it is active. More... | |
subroutine | advect_scalar_field (y_local_index, x_local_index, dt, u, v, w, z_q_field, q_field, source_field, global_grid, local_grid, parallel, halo_column, field_stepping) |
Advects a single scalar field. More... | |
subroutine | advect_u (y_local_index, x_local_index, dt, u, v, w, zf, su, global_grid, local_grid, parallel, halo_column, field_stepping) |
Advects the U flow field. More... | |
subroutine | advect_v (y_local_index, x_local_index, dt, u, v, w, zf, sv, global_grid, local_grid, parallel, halo_column, field_stepping) |
Advects the V flow field. More... | |
subroutine | advect_w (y_local_index, x_local_index, dt, u, v, w, zf, sw, global_grid, local_grid, parallel, halo_column, field_stepping) |
Advects the W flow field. More... | |
subroutine | differentiate_face_values (y_flow_index, x_flow_index, u, v, w, y_source_index, x_source_index, source_field, local_grid, global_grid, flux_y_previous, flux_x_previous, tzc1, tzc2, differentiate_top) |
Differentiates face values to update the source field. More... | |
subroutine | complete_y_flux_wrap_send_if_required (y_local_index, field, parallel, local_grid) |
Completes the Y flux MPI asynchronous send if required. More... | |
subroutine | register_y_flux_wrap_send_if_required (y_local_index, field, parallel, local_grid) |
Registers an asynchronous send for the Y flux if required. More... | |
subroutine | complete_y_flux_wrap_recv_if_required (y_local_index, field, parallel, local_grid) |
Completes the Y flux MPI asynchronous recieve if required. If the wrap around process is the same (one process in the y dimension) then just issues a local copy. More... | |
subroutine | register_y_flux_wrap_recv_if_required (y_local_index, field, parallel, local_grid) |
Registers an MPI asynchronous receive for the flux if required. More... | |
logical function | determine_if_advection_here (field) |
Parses a field string (read in from the configuration file) and determines whether this algorithm should be used for advecting that field. More... | |
Variables | |
type(grid_stencil_type), save | star_stencil |
integer, save | u_index =0 |
integer, save | v_index =0 |
integer, save | w_index =0 |
logical | advect_flow |
logical | advect_th |
logical | advect_q |
real(kind=default_precision), dimension(:), allocatable | flux_x |
real(kind=default_precision), dimension(:), allocatable | flux_y |
real(kind=default_precision), dimension(:), allocatable | flux_z |
real(kind=default_precision), dimension(:), allocatable | u_advection |
real(kind=default_precision), dimension(:), allocatable | v_advection |
real(kind=default_precision), dimension(:), allocatable | w_advection |
real(kind=default_precision), dimension(:), allocatable | th_advection |
real(kind=default_precision), dimension(:,:), allocatable | q_advection |
type(prognostic_field_type), dimension(:), allocatable | interpolated_fields |
Implements TVD advection for prognostic fields.
|
private |
Will advect the flow fields.
current_state | The current model state_mod |
Definition at line 196 of file tvdadvection.F90.
|
private |
Advects the Q fields.
current_state | The current model state_mod |
Definition at line 225 of file tvdadvection.F90.
|
private |
Advects a single scalar field.
Definition at line 265 of file tvdadvection.F90.
|
private |
Advects the theta field if it is active.
current_state | The current model state_mod |
Definition at line 247 of file tvdadvection.F90.
|
private |
Advects the U flow field.
Definition at line 308 of file tvdadvection.F90.
|
private |
Advects the V flow field.
Definition at line 357 of file tvdadvection.F90.
|
private |
Advects the W flow field.
Definition at line 406 of file tvdadvection.F90.
|
private |
Completes the Y flux MPI asynchronous recieve if required. If the wrap around process is the same (one process in the y dimension) then just issues a local copy.
y_local_index | The local index in Y |
field | The prognostic field |
parallel | Parallel system description |
local_grid | The local grid description |
Definition at line 556 of file tvdadvection.F90.
|
private |
Completes the Y flux MPI asynchronous send if required.
y_local_index | The local index in Y |
field | The prognostic field |
parallel | Parallel system description |
local_grid | The local grid description |
Definition at line 509 of file tvdadvection.F90.
|
private |
Parses a field string (read in from the configuration file) and determines whether this algorithm should be used for advecting that field.
field | The string configuration of field advection |
Definition at line 603 of file tvdadvection.F90.
|
private |
Differentiates face values to update the source field.
Definition at line 454 of file tvdadvection.F90.
|
private |
Field information retrieval callback, this returns information for a specific components published field.
current_state | Current model state |
name | The name of the field to retrieve information for |
field_information | Populated with information about the field |
Definition at line 56 of file tvdadvection.F90.
|
private |
Field value retrieval callback, this returns the value of a specific published field.
current_state | Current model state |
name | The name of the field to retrieve the value for |
field_value | Populated with the value of the field |
Definition at line 78 of file tvdadvection.F90.
|
private |
Frees up the memory associated with the advection.
current_state | The current model state |
Definition at line 160 of file tvdadvection.F90.
|
private |
Sets up the stencil_mod (used in interpolation) and allocates data for the flux fields.
current_state | The current model state_mod |
Definition at line 98 of file tvdadvection.F90.
|
private |
Registers an MPI asynchronous receive for the flux if required.
This is registered at the start and we have until the last column in Y until it must be completed. No communication is registered if this is a local operation
y_local_index | The local index in Y |
field | The prognostic field |
parallel | Parallel system description |
local_grid | The local grid description |
Definition at line 581 of file tvdadvection.F90.
|
private |
Registers an asynchronous send for the Y flux if required.
This is done after the second y is computed and we have until the entire Y dimension is completed until the communication must be complete. If the wrap around process is the same (one process in Y dimension) then just issues a local copy to the buffer.
y_local_index | The local index in Y |
field | The prognostic field |
parallel | Parallel system description |
local_grid | The local grid description |
Definition at line 532 of file tvdadvection.F90.
|
private |
Timestep callback hook which performs the TVD advection for each prognostic field.
current_state | The current model state_mod |
Definition at line 177 of file tvdadvection.F90.
type(component_descriptor_type) function, public tvdadvection_mod::tvdadvection_get_descriptor | ( | ) |
Provides a description of this component for the core to register.
Definition at line 35 of file tvdadvection.F90.
|
private |
Definition at line 22 of file tvdadvection.F90.
|
private |
Definition at line 22 of file tvdadvection.F90.
|
private |
Definition at line 22 of file tvdadvection.F90.
|
private |
Definition at line 23 of file tvdadvection.F90.
|
private |
Definition at line 23 of file tvdadvection.F90.
|
private |
Definition at line 23 of file tvdadvection.F90.
|
private |
Definition at line 26 of file tvdadvection.F90.
|
private |
Definition at line 25 of file tvdadvection.F90.
|
private |
Definition at line 20 of file tvdadvection.F90.
|
private |
Definition at line 23 of file tvdadvection.F90.
|
private |
Definition at line 23 of file tvdadvection.F90.
|
private |
Definition at line 21 of file tvdadvection.F90.
|
private |
Definition at line 23 of file tvdadvection.F90.
|
private |
Definition at line 21 of file tvdadvection.F90.
|
private |
Definition at line 23 of file tvdadvection.F90.
|
private |
Definition at line 21 of file tvdadvection.F90.