version 0.6.0
mod_mpi_exchange Module Reference

MPI Exchange modules between processors. More...

Functions/Subroutines

subroutine mpi_exchange_scalar_cell_integer (array)
 Wrapper for mpi_exchange_scalar_cell_integer without the mpi_cell variable. More...
 
subroutine mpi_exchange_scalar_cell_logical (array)
 Wrapper for mpi_exchange_scalar_cell_logical without the mpi_cell variable. More...
 
subroutine mpi_exchange_vector_cell_double (array)
 Wrapper for mpi_exchange_scalar_vector_double without the mpi_cell variable. More...
 
subroutine mpi_exchange_face_field_double (field)
 Wrapper for mpi_exchange_face_field_double_typed without the mpi_face_* variable. More...
 
subroutine mpi_exchange_face_field_integer (field)
 Wrapper for mpi_exchange_face_field_integer_typed without the mpi_face_* variable. More...
 
subroutine mpi_exchange_face_field_logical (field)
 Wrapper for mpi_exchange_face_field_logical_typed without the mpi_face_* variable. More...
 
subroutine mpi_exchange_scalar_double (array, mpi_exch)
 Exchange the field (of doubles) between neighbour procs. Result: the ghost cells will be filled with the neighbours' values. More...
 
subroutine mpi_exchange_scalar_integer (array, mpi_exch)
 Exchange the field (of integers) between neighbour procs. Result: the ghost cells will be filled with the neighbours' values. More...
 
subroutine mpi_exchange_scalar_logical (array, mpi_exch)
 Exchange the field (of logicals) between neighbour procs. Result: the ghost cells will be filled with the neighbours' values. More...
 
subroutine mpi_exchange_vector_double (array, mpi_exch)
 Exchange the field (of double vectors) between neighbour procs. Result: the ghost cells will be filled with the neighbours' values. More...
 
subroutine mpi_exchange_face_field_double_typed (face_field, exchange_type_u, exchange_type_v, exchange_type_w)
 Exchange the face field between neighbour procs. Result: the ghost cells will be filled with the neighbours' values. More...
 
subroutine mpi_exchange_face_field_integer_typed (face_field, exchange_type_u, exchange_type_v, exchange_type_w)
 Exchange the integer face field between neighbour procs. Result: the ghost cells will be filled with the neighbours' values. More...
 
subroutine mpi_exchange_face_field_logical_typed (face_field, exchange_type_u, exchange_type_v, exchange_type_w)
 Exchange the logical face field between neighbour procs. Result: the ghost cells will be filled with the neighbours' values. More...
 
subroutine mpi_exchange_tensor_cell_edges_double (tensor)
 Exchange the tensor field between neighbour procs. Result: the ghost cells will be filled with the neighbours' values. We use the associated global mpi_cell and mpi_edge_{xy,xz,yz} structures. More...
 
subroutine mpi_exchange_edge_field_double (edge_field)
 Exchange the edge field between neighbour procs. Result: the ghost cells will be filled with the neighbours' values. We use the associated global mpi_edge_{xy,xz,yz} structures. More...
 
subroutine exchange_2d_asynchronous_double (array1, array2, mpi_exch1, mpi_exch2)
 
subroutine exchange_3d_asynchronous_double (array1, array2, array3, mpi_exch1, mpi_exch2, mpi_exch3)
 
subroutine exchange_2d_asynchronous_integer (array1, array2, mpi_exch1, mpi_exch2)
 
subroutine exchange_3d_asynchronous_integer (array1, array2, array3, mpi_exch1, mpi_exch2, mpi_exch3)
 
subroutine exchange_2d_asynchronous_logical (array1, array2, mpi_exch1, mpi_exch2)
 
subroutine exchange_3d_asynchronous_logical (array1, array2, array3, mpi_exch1, mpi_exch2, mpi_exch3)
 
subroutine exchange_2d_serialized_double (array1, array2, mpi_exch1, mpi_exch2)
 
subroutine exchange_3d_serialized_double (array1, array2, array3, mpi_exch1, mpi_exch2, mpi_exch3)
 
subroutine exchange_2d_serialized_integer (array1, array2, mpi_exch1, mpi_exch2)
 
subroutine exchange_3d_serialized_integer (array1, array2, array3, mpi_exch1, mpi_exch2, mpi_exch3)
 
subroutine exchange_2d_serialized_logical (array1, array2, mpi_exch1, mpi_exch2)
 
subroutine exchange_3d_serialized_logical (array1, array2, array3, mpi_exch1, mpi_exch2, mpi_exch3)
 
subroutine, public mpi_exchange_vectorized_face_field (array, mpi_face_u, mpi_face_v, mpi_face_w)
 
subroutine, public mpi_exchange_vectorized_scalar (array, mpi_exch)
 
subroutine mpi_exchange_scalar_double_vectorized (array, mpi_exch, nx, ny)
 

Detailed Description

This modules defines MPI exchange routines of scalar, vector or tensor. The call to mpi_exchange is generic whatever the type of data exchanged:

  • a scalar can be defined on cells or one of the staggered grid. A scalar can be a double precision, an integer or a logical. The mpi_exchange data associated to the same grid on which is defined the scalar is the second argument of the routine. Example:

call mpi_exchange(pressure)

  • a double precision vector of scalars can also be exchanged (4 dimension array).
  • for a vector defined on faces, 2 routines exists, depending if the nodes of the faces common to 2 processors are exchanged or not:
    • call mpi_exchange(velocity): the values on overlapping faces are not exchanged, mpi_face_[uvw] exchange data are used by default
    • call mpi_exchange(velocity, mpi_face_u2, mpi_face_v2, mpi_face_w2): the values on overlapping faces are exchanged.
  • a tensor type can be exchanged

Function/Subroutine Documentation

◆ mpi_exchange_edge_field_double()

subroutine mod_mpi_exchange::mpi_exchange_edge_field_double ( type(t_edge_field), intent(inout)  edge_field)
Parameters
[in,out]edge_fieldthe edge field to be exchanged

◆ mpi_exchange_face_field_double()

subroutine mod_mpi_exchange::mpi_exchange_face_field_double ( type(t_face_field), intent(inout)  field)
Parameters
[in,out]fieldthe field of doubles to be exchanged

◆ mpi_exchange_face_field_double_typed()

subroutine mod_mpi_exchange::mpi_exchange_face_field_double_typed ( type(t_face_field), intent(inout)  face_field,
type(t_mpi_exchange), intent(in)  exchange_type_u,
type(t_mpi_exchange), intent(in)  exchange_type_v,
type(t_mpi_exchange), intent(in)  exchange_type_w 
)
Parameters
[in,out]face_fieldthe face field to be exchanged

◆ mpi_exchange_face_field_integer()

subroutine mod_mpi_exchange::mpi_exchange_face_field_integer ( type(t_integer_face_field), intent(inout)  field)
Parameters
[in,out]fieldthe field of integers to be exchanged

◆ mpi_exchange_face_field_integer_typed()

subroutine mod_mpi_exchange::mpi_exchange_face_field_integer_typed ( type(t_integer_face_field), intent(inout)  face_field,
type(t_mpi_exchange), intent(in)  exchange_type_u,
type(t_mpi_exchange), intent(in)  exchange_type_v,
type(t_mpi_exchange), intent(in)  exchange_type_w 
)
Parameters
[in,out]face_fieldthe integer face field to be exchanged

◆ mpi_exchange_face_field_logical()

subroutine mod_mpi_exchange::mpi_exchange_face_field_logical ( type(t_logical_face_field), intent(inout)  field)
Parameters
[in,out]fieldthe field of logicals to be exchanged

◆ mpi_exchange_face_field_logical_typed()

subroutine mod_mpi_exchange::mpi_exchange_face_field_logical_typed ( type(t_logical_face_field), intent(inout)  face_field,
type(t_mpi_exchange), intent(in)  exchange_type_u,
type(t_mpi_exchange), intent(in)  exchange_type_v,
type(t_mpi_exchange), intent(in)  exchange_type_w 
)
Parameters
[in,out]face_fieldthe logical face field to be exchanged

◆ mpi_exchange_scalar_cell_integer()

subroutine mod_mpi_exchange::mpi_exchange_scalar_cell_integer ( integer, dimension(:,:,:), intent(inout)  array)
Parameters
[in,out]arraythe field of integers to be exchanged

◆ mpi_exchange_scalar_cell_logical()

subroutine mod_mpi_exchange::mpi_exchange_scalar_cell_logical ( logical, dimension(:,:,:), intent(inout)  array)
Parameters
[in,out]arraythe field of logicals to be exchanged

◆ mpi_exchange_scalar_double()

subroutine mod_mpi_exchange::mpi_exchange_scalar_double ( double precision, dimension(:,:,:), intent(inout)  array,
type(t_mpi_exchange), intent(in)  mpi_exch 
)
Parameters
[in,out]arraythe field of doubles to be exchanged
[in]mpi_exchthe structure defining the overlapping nodes

◆ mpi_exchange_scalar_integer()

subroutine mod_mpi_exchange::mpi_exchange_scalar_integer ( integer, dimension(:,:,:), intent(inout)  array,
type(t_mpi_exchange), intent(in)  mpi_exch 
)
Parameters
[in,out]arraythe field of integers to be exchanged
[in]mpi_exchthe structure defining the overlapping nodes

◆ mpi_exchange_scalar_logical()

subroutine mod_mpi_exchange::mpi_exchange_scalar_logical ( logical, dimension(:,:,:), intent(inout)  array,
type(t_mpi_exchange), intent(in)  mpi_exch 
)
Parameters
[in,out]arraythe field of logicals to be exchanged
[in]mpi_exchthe structure defining the overlapping nodes

◆ mpi_exchange_tensor_cell_edges_double()

subroutine mod_mpi_exchange::mpi_exchange_tensor_cell_edges_double ( type(stress_tensor_type), intent(inout)  tensor)
Parameters
[in,out]tensorthe tensor field to be exchanged

◆ mpi_exchange_vector_cell_double()

subroutine mod_mpi_exchange::mpi_exchange_vector_cell_double ( double precision, dimension(:,:,:,:), intent(inout)  array)
Parameters
[in,out]arraythe field of logicals to be exchanged

◆ mpi_exchange_vector_double()

subroutine mod_mpi_exchange::mpi_exchange_vector_double ( double precision, dimension(:,:,:,:), intent(inout)  array,
type(t_mpi_exchange), intent(in)  mpi_exch 
)
Parameters
[in,out]arraythe field of double vectors to be exchanged
[in]mpi_exchthe structure defining the overlapping nodes