SCALAPACK 2.2.2
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches

◆ psfillpad()

subroutine psfillpad ( integer  ictxt,
integer  m,
integer  n,
real, dimension( * )  a,
integer  lda,
integer  ipre,
integer  ipost,
real  chkval 
)

Definition at line 1 of file psfillpad.f.

2*
3* -- ScaLAPACK tools routine (version 1.7) --
4* University of Tennessee, Knoxville, Oak Ridge National Laboratory,
5* and University of California, Berkeley.
6* May 1, 1997
7*
8* .. Scalar Arguments ..
9 INTEGER ICTXT, IPOST, IPRE, LDA, M, N
10 REAL CHKVAL
11* ..
12* .. Array Arguments ..
13 REAL A( * )
14* ..
15*
16* Purpose
17* =======
18*
19* PSFILLPAD surrounds a two dimensional local array with a guard-
20* zone initialized to the value CHKVAL. The user may later call the
21* routine PSCHEKPAD to discover if the guardzone has been
22* violated. There are three guardzones. The first is a buffer of size
23* IPRE that is before the start of the array. The second is the buffer
24* of size IPOST which is after the end of the array to be padded.
25* Finally, there is a guard zone inside every column of the array to
26* be padded, in the elements of A(M+1:LDA, J).
27*
28* Arguments
29* =========
30*
31* ICTXT (global input) INTEGER
32* The BLACS context handle, indicating the global context of
33* the operation. The context itself is global.
34*
35* M (local input) INTEGER
36* The number of rows in the local array.
37*
38* N (local input) INTEGER
39* The number of columns in the local array.
40*
41* A (local input/local output) REAL, array of
42* dimension (LDA,N). A location IPRE elements in front of
43* the matrix to be padded.
44*
45* LDA (local input) INTEGER
46* The leading Dimension of the local array to be padded.
47*
48* IPRE (local input) INTEGER
49* The size of the guard zone to put before the start of
50* padded array.
51*
52* IPOST (local input) INTEGER
53* The size of the guard zone to put after padded array.
54*
55* CHKVAL (local input) REAL
56* The value to pad matrix with.
57*
58* =====================================================================
59*
60* .. Local Scalars ..
61 INTEGER I, J, K
62* ..
63* .. Executable Statements ..
64*
65* Put check buffer in front of A
66*
67 IF( ipre.GT.0 ) THEN
68 DO 10 i = 1, ipre
69 a( i ) = chkval
70 10 CONTINUE
71 ELSE
72 WRITE( *, fmt = * ) 'WARNING no pre-guardzone in PSFILLPAD'
73 END IF
74*
75* Put check buffer in back of A
76*
77 IF( ipost.GT.0 ) THEN
78 j = ipre+lda*n+1
79 DO 20 i = j, j+ipost-1
80 a( i ) = chkval
81 20 CONTINUE
82 ELSE
83 WRITE( *, fmt = * ) 'WARNING no post-guardzone in PSFILLPAD'
84 END IF
85*
86* Put check buffer in all (LDA-M) gaps
87*
88 IF( lda.GT.m ) THEN
89 k = ipre + m + 1
90 DO 40 j = 1, n
91 DO 30 i = k, k + (lda-m) - 1
92 a( i ) = chkval
93 30 CONTINUE
94 k = k + lda
95 40 CONTINUE
96 END IF
97*
98 RETURN
99*
100* End of PSFILLPAD
101*
Here is the caller graph for this function: