Pangolin
 All Classes Files Functions Variables Pages
Data Types | Public Member Functions | Public Attributes | List of all members
list_tracers_class Module Reference

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"
 

Detailed Description

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.

Author
Alexis Praga

Member Function/Subroutine Documentation

subroutine list_tracers_class::associate_pointer ( type(list_tracers), target  this,
double precision, dimension(:,:), pointer  ptr,
integer, intent(in)  datatype 
)

Here is the call graph for this function:

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.

Here is the call graph for this function:

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.

Here is the call graph for this function:

subroutine list_tracers_class::free_list_tracers ( type(list_tracers this)

Here is the call graph for this function:

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 
)

Here is the call graph for this function:

integer function list_tracers_class::get_tracer_mpi_interior ( type(list_tracers this,
integer  k 
)

Here is the call graph for this function:

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.

Here is the call graph for this function:

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

Here is the call graph for this function:

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)

Parameters
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.

Parameters
i_pos: position in the MPI type array
k: partition neighbour
l: position in the request array

Here is the call graph for this function:

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.

Parameters
i_pos: position in the MPI type array
k: partition neighbour
l: position in the request array

Here is the call graph for this function:

subroutine list_tracers_class::unset_gradients_all ( type(list_tracers this)

Member Data Documentation

character(*), parameter list_tracers_class::fname_tracers = "list_tracers_class.F90"

The documentation for this module was generated from the following file: