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... | |
subroutine | save_precomponent_tendencies (current_state, cxn, cyn, txn, tyn) |
Save the 3d tendencies coming into the component. More... | |
subroutine | compute_component_tendencies (current_state, cxn, cyn, txn, tyn) |
Computation of component tendencies. More... | |
subroutine | set_published_field_value (field_value, real_1d_field, real_2d_field, real_3d_field) |
Sets the published field value from the temporary diagnostic values held by. 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 |
real(kind=default_precision), dimension(:,:,:), allocatable | tend_3d_u |
real(kind=default_precision), dimension(:,:,:), allocatable | tend_3d_v |
real(kind=default_precision), dimension(:,:,:), allocatable | tend_3d_w |
real(kind=default_precision), dimension(:,:,:), allocatable | tend_3d_th |
real(kind=default_precision), dimension(:,:,:), allocatable | tend_3d_qv |
real(kind=default_precision), dimension(:,:,:), allocatable | tend_3d_ql |
real(kind=default_precision), dimension(:,:,:), allocatable | tend_3d_qi |
real(kind=default_precision), dimension(:,:,:), allocatable | tend_3d_qr |
real(kind=default_precision), dimension(:,:,:), allocatable | tend_3d_qs |
real(kind=default_precision), dimension(:,:,:), allocatable | tend_3d_qg |
real(kind=default_precision), dimension(:,:,:), allocatable | tend_3d_tabs |
logical | l_tend_3d_u |
logical | l_tend_3d_v |
logical | l_tend_3d_w |
logical | l_tend_3d_th |
logical | l_tend_3d_qv |
logical | l_tend_3d_ql |
logical | l_tend_3d_qi |
logical | l_tend_3d_qr |
logical | l_tend_3d_qs |
logical | l_tend_3d_qg |
logical | l_tend_3d_tabs |
real(kind=default_precision), dimension(:), allocatable | tend_pr_tot_u |
real(kind=default_precision), dimension(:), allocatable | tend_pr_tot_v |
real(kind=default_precision), dimension(:), allocatable | tend_pr_tot_w |
real(kind=default_precision), dimension(:), allocatable | tend_pr_tot_th |
real(kind=default_precision), dimension(:), allocatable | tend_pr_tot_qv |
real(kind=default_precision), dimension(:), allocatable | tend_pr_tot_ql |
real(kind=default_precision), dimension(:), allocatable | tend_pr_tot_qi |
real(kind=default_precision), dimension(:), allocatable | tend_pr_tot_qr |
real(kind=default_precision), dimension(:), allocatable | tend_pr_tot_qs |
real(kind=default_precision), dimension(:), allocatable | tend_pr_tot_qg |
real(kind=default_precision), dimension(:), allocatable | tend_pr_tot_tabs |
logical | l_tend_pr_tot_u |
logical | l_tend_pr_tot_v |
logical | l_tend_pr_tot_w |
logical | l_tend_pr_tot_th |
logical | l_tend_pr_tot_qv |
logical | l_tend_pr_tot_ql |
logical | l_tend_pr_tot_qi |
logical | l_tend_pr_tot_qr |
logical | l_tend_pr_tot_qs |
logical | l_tend_pr_tot_qg |
logical | l_tend_pr_tot_tabs |
integer | iqv =0 |
integer | iql =0 |
integer | iqr =0 |
integer | iqi =0 |
integer | iqs =0 |
integer | iqg =0 |
integer | diagnostic_generation_frequency |
Implements TVD advection for prognostic fields.
|
private |
Will advect the flow fields.
current_state | The current model state_mod |
Definition at line 586 of file tvdadvection.F90.
|
private |
Advects the Q fields.
current_state | The current model state_mod |
Definition at line 633 of file tvdadvection.F90.
|
private |
Advects a single scalar field.
Definition at line 685 of file tvdadvection.F90.
|
private |
Advects the theta field if it is active.
current_state | The current model state_mod |
Definition at line 662 of file tvdadvection.F90.
|
private |
Advects the U flow field.
Definition at line 728 of file tvdadvection.F90.
|
private |
Advects the V flow field.
Definition at line 777 of file tvdadvection.F90.
|
private |
Advects the W flow field.
Definition at line 826 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 977 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 930 of file tvdadvection.F90.
|
private |
Computation of component tendencies.
current_state | Current model state |
cxn | The current slice, x, index |
cyn | The current column, y, index. |
txn | target_x_index |
tyn | target_y_index |
Definition at line 1075 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 1181 of file tvdadvection.F90.
|
private |
Differentiates face values to update the source field.
Definition at line 874 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 108 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 207 of file tvdadvection.F90.
|
private |
Frees up the memory associated with the advection.
current_state | The current model state |
Definition at line 472 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 277 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 1002 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 953 of file tvdadvection.F90.
|
private |
Save the 3d tendencies coming into the component.
current_state | Current model state |
cxn | The current slice, x, index |
cyn | The current column, y, index. |
txn | target_x_index |
tyn | target_y_index |
Definition at line 1027 of file tvdadvection.F90.
|
private |
Sets the published field value from the temporary diagnostic values held by.
Definition at line 1159 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 514 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 62 of file tvdadvection.F90.
|
private |
Definition at line 28 of file tvdadvection.F90.
|
private |
Definition at line 28 of file tvdadvection.F90.
|
private |
Definition at line 28 of file tvdadvection.F90.
|
private |
Definition at line 54 of file tvdadvection.F90.
|
private |
Definition at line 29 of file tvdadvection.F90.
|
private |
Definition at line 29 of file tvdadvection.F90.
|
private |
Definition at line 29 of file tvdadvection.F90.
|
private |
Definition at line 33 of file tvdadvection.F90.
|
private |
Definition at line 53 of file tvdadvection.F90.
|
private |
Definition at line 53 of file tvdadvection.F90.
|
private |
Definition at line 53 of file tvdadvection.F90.
|
private |
Definition at line 53 of file tvdadvection.F90.
|
private |
Definition at line 53 of file tvdadvection.F90.
|
private |
Definition at line 53 of file tvdadvection.F90.
|
private |
Definition at line 41 of file tvdadvection.F90.
|
private |
Definition at line 41 of file tvdadvection.F90.
|
private |
Definition at line 41 of file tvdadvection.F90.
|
private |
Definition at line 41 of file tvdadvection.F90.
|
private |
Definition at line 41 of file tvdadvection.F90.
|
private |
Definition at line 41 of file tvdadvection.F90.
|
private |
Definition at line 41 of file tvdadvection.F90.
|
private |
Definition at line 41 of file tvdadvection.F90.
|
private |
Definition at line 41 of file tvdadvection.F90.
|
private |
Definition at line 41 of file tvdadvection.F90.
|
private |
Definition at line 41 of file tvdadvection.F90.
|
private |
Definition at line 49 of file tvdadvection.F90.
|
private |
Definition at line 49 of file tvdadvection.F90.
|
private |
Definition at line 49 of file tvdadvection.F90.
|
private |
Definition at line 49 of file tvdadvection.F90.
|
private |
Definition at line 49 of file tvdadvection.F90.
|
private |
Definition at line 49 of file tvdadvection.F90.
|
private |
Definition at line 49 of file tvdadvection.F90.
|
private |
Definition at line 49 of file tvdadvection.F90.
|
private |
Definition at line 49 of file tvdadvection.F90.
|
private |
Definition at line 49 of file tvdadvection.F90.
|
private |
Definition at line 49 of file tvdadvection.F90.
|
private |
Definition at line 31 of file tvdadvection.F90.
|
private |
Definition at line 26 of file tvdadvection.F90.
|
private |
Definition at line 37 of file tvdadvection.F90.
|
private |
Definition at line 37 of file tvdadvection.F90.
|
private |
Definition at line 37 of file tvdadvection.F90.
|
private |
Definition at line 37 of file tvdadvection.F90.
|
private |
Definition at line 37 of file tvdadvection.F90.
|
private |
Definition at line 37 of file tvdadvection.F90.
|
private |
Definition at line 37 of file tvdadvection.F90.
|
private |
Definition at line 37 of file tvdadvection.F90.
|
private |
Definition at line 37 of file tvdadvection.F90.
|
private |
Definition at line 37 of file tvdadvection.F90.
|
private |
Definition at line 37 of file tvdadvection.F90.
|
private |
Definition at line 45 of file tvdadvection.F90.
|
private |
Definition at line 45 of file tvdadvection.F90.
|
private |
Definition at line 45 of file tvdadvection.F90.
|
private |
Definition at line 45 of file tvdadvection.F90.
|
private |
Definition at line 45 of file tvdadvection.F90.
|
private |
Definition at line 45 of file tvdadvection.F90.
|
private |
Definition at line 45 of file tvdadvection.F90.
|
private |
Definition at line 45 of file tvdadvection.F90.
|
private |
Definition at line 45 of file tvdadvection.F90.
|
private |
Definition at line 45 of file tvdadvection.F90.
|
private |
Definition at line 45 of file tvdadvection.F90.
|
private |
Definition at line 29 of file tvdadvection.F90.
|
private |
Definition at line 29 of file tvdadvection.F90.
|
private |
Definition at line 27 of file tvdadvection.F90.
|
private |
Definition at line 29 of file tvdadvection.F90.
|
private |
Definition at line 27 of file tvdadvection.F90.
|
private |
Definition at line 29 of file tvdadvection.F90.
|
private |
Definition at line 27 of file tvdadvection.F90.