Contains a list of tracers corresponding to one chemical scheme. It contains only tracer ratio. Contrary to other class, there is only one instance of the list, and it is only used in the module. More...
Data Types | |
type | list_tracers |
Public Member Functions | |
subroutine | new_list_tracers (this, size_tracer, size_zonal, size_merid) |
Assume each tracer is defined on the same number of cells Need the size of slope/gradient/ratio, F_zonal, F_merid. More... | |
subroutine | init_tracer_ratio_all (this) |
subroutine | init_tracer_data (this) |
subroutine | unset_gradients_all (this) |
subroutine | new_mpi_interior_tracers (this, mpi_interior_cells) |
Create one MPI type identical for all tracers. More... | |
subroutine | new_mpi_ghost_tracers (this, mpi_ghost_cells) |
Creates a list of MPI types for ghost cells, one for each partition neighbour. More... | |
subroutine | start_send_data (this, i_pos, datatype, k, request, l) |
Start a sending request for all tracers data. More... | |
subroutine | associate_tracer_pointer (this, ptr, datatype, tracer) |
Associate the pointer to the data for a given tracer. More... | |
subroutine | associate_pointer (this, ptr, datatype) |
subroutine | start_receive_data (this, i_pos, datatype, k, request, l) |
Start a receiving request for all tracers. More... | |
subroutine | check_mpi_types (this, offsets, blocklens, inside) |
Check a tracer mpi type contains only cells inside the array. More... | |
double precision function | get_tracer_ratio (this, pos, tracer) |
Getter function. Do not use them directly. Band_grid_class has better getter based on grid indices. More... | |
double precision function | get_tracer_slope (this, pos, tracer) |
double precision function | get_tracer_gradient (this, pos, tracer) |
integer function | get_ratio_size (this, tracer) |
double precision function | get_tracer_zonal_flux (this, pos, tracer) |
double precision function | get_tracer_merid_flux (this, pos, tracer) |
subroutine | set_tracer_ratio (this, val, pos, tracer) |
Same as getters. More... | |
subroutine | set_tracer_gradient (this, val, pos, tracer) |
subroutine | set_tracer_slope (this, val, pos, tracer) |
subroutine | set_tracer_zonal_flux (this, val, pos, id) |
We can use these function directly (no referencing needed) More... | |
subroutine | set_tracer_merid_flux (this, val, pos, id) |
subroutine | get_tracer_ratio_array (this, ptr) |
integer function | get_tracer_mpi_interior (this, k) |
integer function | get_tracer_mpi_ghost (this, k) |
subroutine | free_list_tracers (this) |
Public Attributes | |
character(*), parameter | fname_tracers = "list_tracers_class.F90" |
Contains a list of tracers corresponding to one chemical scheme. It contains only tracer ratio. Contrary to other class, there is only one instance of the list, and it is only used in the module.
subroutine list_tracers_class::associate_pointer | ( | type(list_tracers), target | this, |
double precision, dimension(:,:), pointer | ptr, | ||
integer, intent(in) | datatype | ||
) |
subroutine list_tracers_class::associate_tracer_pointer | ( | type(list_tracers), target | this, |
double precision, dimension(:), pointer | ptr, | ||
integer, intent(in) | datatype, | ||
integer, intent(in) | tracer | ||
) |
Associate the pointer to the data for a given tracer.
subroutine list_tracers_class::check_mpi_types | ( | type(list_tracers) | this, |
integer, dimension(:) | offsets, | ||
integer, dimension(:) | blocklens, | ||
integer, intent(in) | inside | ||
) |
Check a tracer mpi type contains only cells inside the array.
subroutine list_tracers_class::free_list_tracers | ( | type(list_tracers) | this | ) |
integer function list_tracers_class::get_ratio_size | ( | type(list_tracers) | this, |
integer, intent(in) | tracer | ||
) |
double precision function list_tracers_class::get_tracer_gradient | ( | type(list_tracers) | this, |
integer, intent(in) | pos, | ||
integer, intent(in) | tracer | ||
) |
double precision function list_tracers_class::get_tracer_merid_flux | ( | type(list_tracers) | this, |
integer, intent(in) | pos, | ||
integer, intent(in) | tracer | ||
) |
integer function list_tracers_class::get_tracer_mpi_ghost | ( | type(list_tracers) | this, |
integer | k | ||
) |
integer function list_tracers_class::get_tracer_mpi_interior | ( | type(list_tracers) | this, |
integer | k | ||
) |
double precision function list_tracers_class::get_tracer_ratio | ( | type(list_tracers) | this, |
integer, intent(in) | pos, | ||
integer, intent(in) | tracer | ||
) |
Getter function. Do not use them directly. Band_grid_class has better getter based on grid indices.
subroutine list_tracers_class::get_tracer_ratio_array | ( | type(list_tracers), target | this, |
double precision, dimension(:,:), pointer | ptr | ||
) |
double precision function list_tracers_class::get_tracer_slope | ( | type(list_tracers) | this, |
integer, intent(in) | pos, | ||
integer, intent(in) | tracer | ||
) |
double precision function list_tracers_class::get_tracer_zonal_flux | ( | type(list_tracers) | this, |
integer, intent(in) | pos, | ||
integer, intent(in) | tracer | ||
) |
subroutine list_tracers_class::init_tracer_data | ( | type(list_tracers) | this | ) |
subroutine list_tracers_class::init_tracer_ratio_all | ( | type(list_tracers) | this | ) |
subroutine list_tracers_class::new_list_tracers | ( | type(list_tracers) | this, |
integer, intent(in) | size_tracer, | ||
integer, intent(in) | size_zonal, | ||
integer, intent(in) | size_merid | ||
) |
Assume each tracer is defined on the same number of cells Need the size of slope/gradient/ratio, F_zonal, F_merid.
subroutine list_tracers_class::new_mpi_ghost_tracers | ( | type(list_tracers) | this, |
integer, dimension(:), intent(in) | mpi_ghost_cells | ||
) |
Creates a list of MPI types for ghost cells, one for each partition neighbour.
subroutine list_tracers_class::new_mpi_interior_tracers | ( | type(list_tracers) | this, |
integer, dimension(:), intent(in) | mpi_interior_cells | ||
) |
Create one MPI type identical for all tracers.
Creates a list of MPI types for interior cells, one for each partition neighbours, and for all tracers
subroutine list_tracers_class::set_tracer_gradient | ( | type(list_tracers) | this, |
double precision | val, | ||
integer, intent(in) | pos, | ||
integer, intent(in) | tracer | ||
) |
subroutine list_tracers_class::set_tracer_merid_flux | ( | type(list_tracers) | this, |
double precision | val, | ||
integer, intent(in) | pos, | ||
integer, intent(in) | id | ||
) |
subroutine list_tracers_class::set_tracer_ratio | ( | type(list_tracers) | this, |
double precision | val, | ||
integer, intent(in) | pos, | ||
integer, intent(in) | tracer | ||
) |
Same as getters.
subroutine list_tracers_class::set_tracer_slope | ( | type(list_tracers) | this, |
double precision | val, | ||
integer, intent(in) | pos, | ||
integer, intent(in) | tracer | ||
) |
subroutine list_tracers_class::set_tracer_zonal_flux | ( | type(list_tracers) | this, |
double precision | val, | ||
integer, intent(in) | pos, | ||
integer, intent(in) | id | ||
) |
We can use these function directly (no referencing needed)
id | : tracer id |
subroutine list_tracers_class::start_receive_data | ( | type(list_tracers) | this, |
integer, intent(in) | i_pos, | ||
integer, intent(in) | datatype, | ||
integer, intent(in) | k, | ||
integer, dimension(:) | request, | ||
integer | l | ||
) |
Start a receiving request for all tracers.
i_pos | : position in the MPI type array |
k | : partition neighbour |
l | : position in the request array |
subroutine list_tracers_class::start_send_data | ( | type(list_tracers) | this, |
integer, intent(in) | i_pos, | ||
integer, intent(in) | datatype, | ||
integer, intent(in) | k, | ||
integer, dimension(:) | request, | ||
integer | l | ||
) |
Start a sending request for all tracers data.
i_pos | : position in the MPI type array |
k | : partition neighbour |
l | : position in the request array |
subroutine list_tracers_class::unset_gradients_all | ( | type(list_tracers) | this | ) |
character(*), parameter list_tracers_class::fname_tracers = "list_tracers_class.F90" |