PMD_Exchange_1DD - Allows to exchange boundary field values at subdomain interfaces.
CALL PMD_Exchange_1DD(Comm=Comm, Field=u)
<IN> Comm : PMD handel of type PMD_Comm_1D or PMD_Comm_2D.
<INOUT> u : REAL(Kind=R8 or R4) rank 1 or 2 array.
If Nx denotes the number of local mesh nodes along the abscisse axis,
then the size of the first dimension of u must be equal to Nx+2.
Assuming that the first dimension elements of u are indexed
from 0 to Nx+1 for the subdomain k, then on output, u(0,.)
and u(Nx+1,.) will contain respectively the values of u(Nx-1,.)
of the WEST subdomain neighbour k-1 and of u(2,.) of the EAST
subdomain neighbour k+1.
The user has not to apply any special treatment on subdomains which have no EAST or no WEST neighbour.
USE PMD
...
INTEGER, PARAMETER :: Nx=21
TYPE(PMD_Comm_1D) :: Comm
REAL(kind=R8), DIMENSION(Nx) :: s
REAL(kind=R8), DIMENSION(0:Nx+1) :: u
REAL(kind=R8) :: h
...
h = 0.001_R8
CALL PMD_Exchange_1DD( Comm, Field=u )
DO i = 1, Nx
s(i) = - ( u(i-1) - 2.0_R8 * u(i) + u(i+1) ) / h**2
ENDDO
...
In this example, each process has to know the values of u(0) and u(Nx+1) (which belong to the subdomain neighbours) to be able to compute s(1) and s(Nx). The goal of this routine is then to extract and to submit from/to the subdomain neighbours the u field edge values one step outside the subdomain.
Back to the routines' list...