123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- *DECK DPINTM
- SUBROUTINE DPINTM (M, N, SX, IX, LMX, IPAGEF)
- C***BEGIN PROLOGUE DPINTM
- C***SUBSIDIARY
- C***PURPOSE Subsidiary to DSPLP
- C***LIBRARY SLATEC
- C***TYPE DOUBLE PRECISION (PINITM-S, DPINTM-D)
- C***AUTHOR Hanson, R. J., (SNLA)
- C Wisniewski, J. A., (SNLA)
- C***DESCRIPTION
- C
- C DPINTM LIMITS THE TYPE OF STORAGE TO A SEQUENTIAL SCHEME.
- C THE MATRIX IS STORED BY COLUMNS.
- C SPARSE MATRIX INITIALIZATION SUBROUTINE.
- C
- C M=NUMBER OF ROWS OF THE MATRIX.
- C N=NUMBER OF COLUMNS OF THE MATRIX.
- C SX(*),IX(*)=THE WORK ARRAYS WHICH ARE USED TO STORE THE SPARSE
- C MATRIX. THESE ARRAYS ARE AUTOMATICALLY MAINTAINED BY
- C THE PACKAGE FOR THE USER.
- C LMX=LENGTH OF THE WORK ARRAY SX(*).
- C LMX MUST BE AT LEAST N+7 WHERE
- C FOR GREATEST EFFICIENCY LMX SHOULD BE AT LEAST N+NZ+6
- C WHERE NZ IS THE MAXIMUM NUMBER OF NONZEROES TO BE
- C STORED IN THE MATRIX. VALUES OF LMX BETWEEN N+7 AND
- C N+NZ+6 WILL CAUSE DEMAND PAGING TO OCCUR.
- C THIS IS IMPLEMENTED BY THE PACKAGE.
- C IX(*) MUST BE DIMENSIONED AT LEAST LMX
- C IPAGEF=UNIT NUMBER WHERE DEMAND PAGES WILL BE STORED.
- C
- C THIS SUBROUTINE IS A MODIFICATION OF THE SUBROUTINE LINITM,
- C SANDIA LABS. REPT. SAND78-0785.
- C MODIFICATIONS BY K.L. HIEBERT AND R.J. HANSON
- C REVISED 811130-1000
- C REVISED YYMMDD-HHMM
- C
- C***SEE ALSO DSPLP
- C***ROUTINES CALLED XERMSG
- C***REVISION HISTORY (YYMMDD)
- C 811215 DATE WRITTEN
- C 890831 Modified array declarations. (WRB)
- C 891214 Prologue converted to Version 4.0 format. (BAB)
- C 900315 CALLs to XERROR changed to CALLs to XERMSG. (THJ)
- C 900328 Added TYPE section. (WRB)
- C 910403 Updated AUTHOR and DESCRIPTION sections. (WRB)
- C***END PROLOGUE DPINTM
- DOUBLE PRECISION SX(*),ZERO,ONE
- DIMENSION IX(*)
- SAVE ZERO, ONE
- DATA ZERO,ONE /0.D0,1.D0/
- C***FIRST EXECUTABLE STATEMENT DPINTM
- IOPT=1
- C
- C CHECK FOR INPUT ERRORS.
- C
- IF (.NOT.(M.LE.0 .OR. N.LE.0)) GO TO 20002
- NERR=55
- CALL XERMSG ('SLATEC', 'DPINTM',
- + 'MATRIX DIMENSION M OR N .LE. 0', NERR, IOPT)
- C
- C VERIFY IF VALUE OF LMX IS LARGE ENOUGH.
- C
- 20002 IF (.NOT.(LMX.LT.N+7)) GO TO 20005
- NERR=55
- CALL XERMSG ('SLATEC', 'DPINTM',
- + 'THE VALUE OF LMX IS TOO SMALL', NERR, IOPT)
- C
- C INITIALIZE DATA STRUCTURE INDEPENDENT VALUES.
- C
- 20005 SX(1)=ZERO
- SX(2)=ZERO
- SX(3)=IPAGEF
- IX(1)=LMX
- IX(2)=M
- IX(3)=N
- IX(4)=0
- SX(LMX-1)=ZERO
- SX(LMX)=-ONE
- IX(LMX-1)=-1
- LP4=N+4
- C
- C INITIALIZE DATA STRUCTURE DEPENDENT VALUES.
- C
- I=4
- N20008=LP4
- GO TO 20009
- 20008 I=I+1
- 20009 IF ((N20008-I).LT.0) GO TO 20010
- SX(I)=ZERO
- GO TO 20008
- 20010 I=5
- N20012=LP4
- GO TO 20013
- 20012 I=I+1
- 20013 IF ((N20012-I).LT.0) GO TO 20014
- IX(I)=LP4
- GO TO 20012
- 20014 SX(N+5)=ZERO
- IX(N+5)=0
- IX(LMX)=0
- C
- C INITIALIZATION COMPLETE.
- C
- RETURN
- END
|