2
SUBROUTINE PINITM (M, N, SX, IX, LMX, IPAGEF)
3
C***BEGIN PROLOGUE PINITM
5
C***PURPOSE Subsidiary to SPLP
7
C***TYPE SINGLE PRECISION (PINITM-S, DPINTM-D)
8
C***AUTHOR Hanson, R. J., (SNLA)
9
C Wisniewski, J. A., (SNLA)
12
C PINITM LIMITS THE TYPE OF STORAGE TO A SEQUENTIAL SCHEME.
13
C THE MATRIX IS STORED BY COLUMNS.
14
C SPARSE MATRIX INITIALIZATION SUBROUTINE.
16
C M=NUMBER OF ROWS OF THE MATRIX.
17
C N=NUMBER OF COLUMNS OF THE MATRIX.
18
C SX(*),IX(*)=THE WORK ARRAYS WHICH ARE USED TO STORE THE SPARSE
19
C MATRIX. THESE ARRAYS ARE AUTOMATICALLY MAINTAINED BY
20
C THE PACKAGE FOR THE USER.
21
C LMX=LENGTH OF THE WORK ARRAY SX(*).
22
C LMX MUST BE AT LEAST N+7 WHERE
23
C FOR GREATEST EFFICIENCY LMX SHOULD BE AT LEAST N+NZ+6
24
C WHERE NZ IS THE MAXIMUM NUMBER OF NONZEROES TO BE
25
C STORED IN THE MATRIX. VALUES OF LMX BETWEEN N+7 AND
26
C N+NZ+6 WILL CAUSE DEMAND PAGING TO OCCUR.
27
C THIS IS IMPLEMENTED BY THE PACKAGE.
28
C IX(*) MUST BE DIMENSIONED AT LEAST LMX
29
C IPAGEF=UNIT NUMBER WHERE DEMAND PAGES WILL BE STORED.
31
C THIS SUBROUTINE IS A MODIFICATION OF THE SUBROUTINE LINITM,
32
C SANDIA LABS. REPT. SAND78-0785.
33
C MODIFICATIONS BY K.L. HIEBERT AND R.J. HANSON
38
C***ROUTINES CALLED XERMSG
39
C***REVISION HISTORY (YYMMDD)
41
C 890831 Modified array declarations. (WRB)
42
C 891214 Prologue converted to Version 4.0 format. (BAB)
43
C 900315 CALLs to XERROR changed to CALLs to XERMSG. (THJ)
44
C 900328 Added TYPE section. (WRB)
45
C 910403 Updated AUTHOR and DESCRIPTION sections. (WRB)
46
C***END PROLOGUE PINITM
50
DATA ZERO,ONE /0.E0,1.E0/
51
C***FIRST EXECUTABLE STATEMENT PINITM
54
C CHECK FOR INPUT ERRORS.
56
IF (.NOT.(M.LE.0 .OR. N.LE.0)) GO TO 20002
58
CALL XERMSG ('SLATEC', 'PINITM',
59
+ 'MATRIX DIMENSION M OR N .LE. 0.', NERR, IOPT)
61
C VERIFY IF VALUE OF LMX IS LARGE ENOUGH.
63
20002 IF (.NOT.(LMX.LT.N+7)) GO TO 20005
65
CALL XERMSG ('SLATEC', 'PINITM',
66
+ 'THE VALUE OF LMX IS TOO SMALL.', NERR, IOPT)
68
C INITIALIZE DATA STRUCTURE INDEPENDENT VALUES.
82
C INITIALIZE DATA STRUCTURE DEPENDENT VALUES.
88
20009 IF ((N20008-I).LT.0) GO TO 20010
95
20013 IF ((N20012-I).LT.0) GO TO 20014
102
C INITIALIZATION COMPLETE.