## psb_halo -- Halo Data Communication

These subroutines gathers the values of the halo elements:

where:

  is a global dense submatrix.

Table 14: Data types
, | Subroutine
Integer | psb_halo
Short Precision Real | psb_halo
Long Precision Real | psb_halo
Short Precision Complex | psb_halo
Long Precision Complex | psb_halo

Type:
  Synchronous.
On Entry
x
  global dense matrix .
  Scope: local
  Type: required
  Intent: inout.
  Specified as: a rank one or two array or an object of type vdata`psb_T_vect_type` containing numbers of type specified in Table 14.
desc_a
  contains data structures for communications.
  Scope: local
  Type: required
  Intent: in.
  Specified as: a structured data of type descdata`psb_desc_type`.
work
  the work array.
  Scope: local
  Type: optional
  Intent: inout.
  Specified as: a rank one array of the same type of .
data
  index list selector.
  Scope: global
  Type: optional
  Specified as: an integer. Values:`psb_comm_halo_`,`psb_comm_mov_`, `psb_comm_ext_`, default: `psb_comm_halo_`. Chooses the index list on which to base the data exchange.

On Return
x
  global dense result matrix .
  Scope: local
  Type: required
  Intent: inout.
  Returned as: a rank one or two array containing numbers of type specified in Table 14.
info
  the local portion of result submatrix .
  Scope: local
  Type: required
  Intent: out.
  An integer value that contains an error code.

Figure 7: Sample discretization mesh.

Usage Example Consider the discretization mesh depicted in fig. 7, partitioned among two processes as shown by the dashed line; the data distribution is such that each process will own 32 entries in the index space, with a halo made of 8 entries placed at local indices 33 through 40. If process 0 assigns an initial value of 1 to its entries in the vector, and process 1 assigns a value of 2, then after a call to `psb_halo` the contents of the local vectors will be the following:

Process 0 |  | Process 1
I | GLOB(I) | X(I) |  | I | GLOB(I) | X(I)
1 | 1 | 1.0 |  | 1 | 33 | 2.0
2 | 2 | 1.0 |  | 2 | 34 | 2.0
3 | 3 | 1.0 |  | 3 | 35 | 2.0
4 | 4 | 1.0 |  | 4 | 36 | 2.0
5 | 5 | 1.0 |  | 5 | 37 | 2.0
6 | 6 | 1.0 |  | 6 | 38 | 2.0
7 | 7 | 1.0 |  | 7 | 39 | 2.0
8 | 8 | 1.0 |  | 8 | 40 | 2.0
9 | 9 | 1.0 |  | 9 | 41 | 2.0
10 | 10 | 1.0 |  | 10 | 42 | 2.0
11 | 11 | 1.0 |  | 11 | 43 | 2.0
12 | 12 | 1.0 |  | 12 | 44 | 2.0
13 | 13 | 1.0 |  | 13 | 45 | 2.0
14 | 14 | 1.0 |  | 14 | 46 | 2.0
15 | 15 | 1.0 |  | 15 | 47 | 2.0
16 | 16 | 1.0 |  | 16 | 48 | 2.0
17 | 17 | 1.0 |  | 17 | 49 | 2.0
18 | 18 | 1.0 |  | 18 | 50 | 2.0
19 | 19 | 1.0 |  | 19 | 51 | 2.0
20 | 20 | 1.0 |  | 20 | 52 | 2.0
21 | 21 | 1.0 |  | 21 | 53 | 2.0
22 | 22 | 1.0 |  | 22 | 54 | 2.0
23 | 23 | 1.0 |  | 23 | 55 | 2.0
24 | 24 | 1.0 |  | 24 | 56 | 2.0
25 | 25 | 1.0 |  | 25 | 57 | 2.0
26 | 26 | 1.0 |  | 26 | 58 | 2.0
27 | 27 | 1.0 |  | 27 | 59 | 2.0
28 | 28 | 1.0 |  | 28 | 60 | 2.0
29 | 29 | 1.0 |  | 29 | 61 | 2.0
30 | 30 | 1.0 |  | 30 | 62 | 2.0
31 | 31 | 1.0 |  | 31 | 63 | 2.0
32 | 32 | 1.0 |  | 32 | 64 | 2.0
33 | 33 | 2.0 |  | 33 | 25 | 1.0
34 | 34 | 2.0 |  | 34 | 26 | 1.0
35 | 35 | 2.0 |  | 35 | 27 | 1.0
36 | 36 | 2.0 |  | 36 | 28 | 1.0
37 | 37 | 2.0 |  | 37 | 29 | 1.0
38 | 38 | 2.0 |  | 38 | 30 | 1.0
39 | 39 | 2.0 |  | 39 | 31 | 1.0
40 | 40 | 2.0 |  | 40 | 32 | 1.0