6.2 psb_cdins — Communication descriptor insert routine
call psb_cdins(nz, ia, ja, desc_a, info [,ila,jla])
call psb_cdins(nz,ja,desc,info[,jla,mask,lidx])
This subroutine examines the edges of the graph associated with the
discretization mesh (and isomorphic to the sparsity pattern of a linear system
coefficient matrix), storing them as necessary into the communication descriptor. In
the first form the edges are specified as pairs of indices ia(i),ja(i); the starting index
ia(i) should belong to the current process. In the second form only the remote indices
ja(i) are specified.
-
Type:
- Asynchronous.
-
On Entry
-
-
nz
- the number of points being inserted.
Scope: local.
Type: required.
Intent: in.
Specified as: an integer value.
-
ia
- the indices of the starting vertex of the edges being inserted.
Scope: local.
Type: required.
Intent: in.
Specified as: an integer array of length nz.
-
ja
- the indices of the end vertex of the edges being inserted.
Scope: local.
Type: required.
Intent: in.
Specified as: an integer array of length nz.
-
mask
- Mask entries in ja, they are inserted only when the corresponding mask
entries are .true.
Scope: local.
Type: optional.
Intent: in.
Specified as: a logical array of length nz, default .true..
-
lidx
- User defined local indices for ja.
Scope: local.
Type: optional.
Intent: in.
Specified as: an integer array of length nz.
-
On Return
-
-
desc_a
- the updated communication descriptor.
Scope:local.
Type:required.
Intent: inout.
Specified as: a structured data of type psb_desc_type.
-
info
- Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.
-
ila
- the local indices of the starting vertex of the edges being inserted.
Scope: local.
Type: optional.
Intent: out.
Specified as: an integer array of length nz.
-
jla
- the local indices of the end vertex of the edges being inserted.
Scope: local.
Type: optional.
Intent: out.
Specified as: an integer array of length nz.
Notes
- This routine may only be called if the descriptor is in the build state;
- This routine automatically ignores edges that do not insist on the current
process, i.e. edges for which neither the starting nor the end vertex belong
to the current process.
- The second form of this routine will be useful when dealing with
user-specified index mappings; see also 2.3.1.