OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
pbdtrst1.f File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine pbdtrst1 (icontxt, xdist, n, nb, nz, x, incx, beta, y, incy, lcmp, lcmq, nint)

Function/Subroutine Documentation

◆ pbdtrst1()

subroutine pbdtrst1 ( integer icontxt,
character*1 xdist,
integer n,
integer nb,
integer nz,
double precision, dimension( * ) x,
integer incx,
double precision beta,
double precision, dimension( * ) y,
integer incy,
integer lcmp,
integer lcmq,
integer nint )

Definition at line 1 of file pbdtrst1.f.

3*
4* -- PB-BLAS routine (version 2.1) --
5* University of Tennessee, Knoxville, Oak Ridge National Laboratory.
6* April 28, 1996
7*
8* .. Scalar Arguments ..
9 CHARACTER*1 XDIST
10 INTEGER ICONTXT, INCX, INCY, LCMP, LCMQ, N, NB, NINT,
11 $ NZ
12 DOUBLE PRECISION BETA
13* ..
14* .. Array Arguments ..
15 DOUBLE PRECISION X( * ), Y( * )
16* ..
17*
18* Purpose
19* =======
20*
21* PBDTRST1 forms y <== x + beta * y, where y is a sorted
22* condensed row (or column) vector from a column (or row) vector of x.
23*
24* =====================================================================
25*
26* .. Parameters ..
27 DOUBLE PRECISION ONE
28 parameter( one = 1.0d+0 )
29* ..
30* .. Local Variables ..
31 INTEGER ITER, IX, IY, K, KK, KZ, NJUMP
32* ..
33* .. External Subroutines ..
34 EXTERNAL pbdvecadd
35* ..
36* .. External Functions ..
37 LOGICAL LSAME
38 INTEGER ICEIL
39 EXTERNAL iceil, lsame
40* ..
41* .. Intrinsic Functions ..
42 INTRINSIC min, max, mod
43* ..
44* .. Executable Statements ..
45*
46 iter = iceil( nint, nb )
47 kz = nz
48*
49 IF( lsame( xdist, 'R' ) ) THEN
50 njump = nb * lcmq
51*
52 DO 20 kk = 0, lcmq-1
53 ix = nint * mod( kk*lcmp, lcmq )
54 iy = max( 0, nb*kk-nz )
55 IF( n.LT.iy ) GO TO 50
56*
57 IF( iter.GT.1 ) THEN
58 CALL pbdvecadd( icontxt, 'G', nb-kz, one, x(ix*incx+1),
59 $ incx, beta, y(iy*incy+1), incy )
60 ix = ix + nb - kz
61 iy = iy + njump - kz
62 kz = 0
63*
64 DO 10 k = 2, iter-1
65 CALL pbdvecadd( icontxt, 'g', NB, ONE, X(IX*INCX+1),
66 $ INCX, BETA, Y(IY*INCY+1), INCY )
67 IX = IX + NB
68 IY = IY + NJUMP
69 10 CONTINUE
70 END IF
71*
72 CALL PBDVECADD( ICONTXT, 'g', MIN(NB-KZ,N-IY), ONE,
73 $ X(IX*INCX+1), INCX, BETA, Y(IY*INCY+1),
74 $ INCY )
75 KZ = 0
76 20 CONTINUE
77*
78* if( LSAME( XDIST, 'C' ) ) then
79*
80 ELSE
81 NJUMP = NB * LCMP
82*
83 DO 40 KK = 0, LCMP-1
84 IX = NINT * MOD( KK*LCMQ, LCMP )
85 IY = MAX( 0, NB*KK-NZ )
86.LT. IF( NIY ) GO TO 50
87*
88.GT. IF( ITER1 ) THEN
89 CALL PBDVECADD( ICONTXT, 'g', NB-KZ, ONE, X(IX*INCX+1),
90 $ INCX, BETA, Y(IY*INCY+1), INCY )
91 IX = IX + NB - KZ
92 IY = IY + NJUMP - KZ
93 KZ = 0
94*
95 DO 30 K = 2, ITER-1
96 CALL PBDVECADD( ICONTXT, 'g', NB, ONE, X(IX*INCX+1),
97 $ INCX, BETA, Y(IY*INCY+1), INCY )
98 IX = IX + NB
99 IY = IY + NJUMP
100 30 CONTINUE
101 END IF
102*
103 CALL PBDVECADD( ICONTXT, 'g', MIN(NB-KZ,N-IY), ONE,
104 $ X(IX*INCX+1), INCX, BETA, Y(IY*INCY+1),
105 $ INCY )
106 KZ = 0
107 40 CONTINUE
108 END IF
109*
110 50 CONTINUE
111*
112 RETURN
113*
114* End of PBDTRST1
115*
logical function lsame(ca, cb)
LSAME
Definition lsame.f:53
integer function iceil(inum, idenom)
Definition iceil.f:2
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine pbdvecadd(icontxt, mode, n, alpha, x, incx, beta, y, incy)
Definition pbdvecadd.f:3