dstway.f 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. *DECK DSTWAY
  2. SUBROUTINE DSTWAY (U, V, YHP, INOUT, STOWA)
  3. C***BEGIN PROLOGUE DSTWAY
  4. C***SUBSIDIARY
  5. C***PURPOSE Subsidiary to DBVSUP
  6. C***LIBRARY SLATEC
  7. C***TYPE DOUBLE PRECISION (STWAY-S, DSTWAY-D)
  8. C***AUTHOR Watts, H. A., (SNLA)
  9. C***DESCRIPTION
  10. C
  11. C This subroutine stores (recalls) integration data in the event
  12. C that a restart is needed (the homogeneous solution vectors become
  13. C too dependent to continue).
  14. C
  15. C***SEE ALSO DBVSUP
  16. C***ROUTINES CALLED DSTOR1
  17. C***COMMON BLOCKS DML15T, DML18J, DML8SZ
  18. C***REVISION HISTORY (YYMMDD)
  19. C 750601 DATE WRITTEN
  20. C 890831 Modified array declarations. (WRB)
  21. C 890921 Realigned order of variables in certain COMMON blocks.
  22. C (WRB)
  23. C 891214 Prologue converted to Version 4.0 format. (BAB)
  24. C 900328 Added TYPE section. (WRB)
  25. C 910722 Updated AUTHOR section. (ALS)
  26. C***END PROLOGUE DSTWAY
  27. C
  28. INTEGER ICOCO, IGOFX, INDPVT, INFO, INHOMO, INOUT, INTEG, ISTKOP,
  29. 1 IVP, J, K, KNSWOT, KO, KOP, KS, KSJ, LOTJP, MNSWOT, MXNON,
  30. 2 NCOMP, NDISK, NEQ, NEQIVP, NFC, NFCC, NIC, NOPG, NPS, NSWOT,
  31. 3 NTAPE, NTP, NUMORT, NXPTS
  32. DOUBLE PRECISION AE, C, PWCND, PX, RE, STOWA(*), TND, TOL, U(*),
  33. 1 V(*), X, XBEG, XEND, XOP, XOT, XSAV, YHP(*)
  34. C
  35. COMMON /DML8SZ/ C,XSAV,IGOFX,INHOMO,IVP,NCOMP,NFC
  36. COMMON /DML15T/ PX,PWCND,TND,X,XBEG,XEND,XOT,XOP,INFO(15),ISTKOP,
  37. 1 KNSWOT,KOP,LOTJP,MNSWOT,NSWOT
  38. COMMON /DML18J/ AE,RE,TOL,NXPTS,NIC,NOPG,MXNON,NDISK,NTAPE,NEQ,
  39. 1 INDPVT,INTEG,NPS,NTP,NEQIVP,NUMORT,NFCC,
  40. 2 ICOCO
  41. C
  42. C***FIRST EXECUTABLE STATEMENT DSTWAY
  43. IF (INOUT .EQ. 1) GO TO 30
  44. C
  45. C SAVE IN STOWA ARRAY AND ISTKOP
  46. C
  47. KS = NFC*NCOMP
  48. CALL DSTOR1(STOWA,U,STOWA(KS+1),V,1,0,0)
  49. KS = KS + NCOMP
  50. IF (NEQIVP .LT. 1) GO TO 20
  51. DO 10 J = 1, NEQIVP
  52. KSJ = KS + J
  53. STOWA(KSJ) = YHP(KSJ)
  54. 10 CONTINUE
  55. 20 CONTINUE
  56. KS = KS + NEQIVP
  57. STOWA(KS+1) = X
  58. ISTKOP = KOP
  59. IF (XOP .EQ. X) ISTKOP = KOP + 1
  60. GO TO 80
  61. 30 CONTINUE
  62. C
  63. C RECALL FROM STOWA ARRAY AND ISTKOP
  64. C
  65. KS = NFC*NCOMP
  66. CALL DSTOR1(YHP,STOWA,YHP(KS+1),STOWA(KS+1),1,0,0)
  67. KS = KS + NCOMP
  68. IF (NEQIVP .LT. 1) GO TO 50
  69. DO 40 J = 1, NEQIVP
  70. KSJ = KS + J
  71. YHP(KSJ) = STOWA(KSJ)
  72. 40 CONTINUE
  73. 50 CONTINUE
  74. KS = KS + NEQIVP
  75. X = STOWA(KS+1)
  76. INFO(1) = 0
  77. KO = KOP - ISTKOP
  78. KOP = ISTKOP
  79. IF (NDISK .EQ. 0 .OR. KO .EQ. 0) GO TO 70
  80. DO 60 K = 1, KO
  81. BACKSPACE NTAPE
  82. 60 CONTINUE
  83. 70 CONTINUE
  84. 80 CONTINUE
  85. RETURN
  86. END