annotate libcruft/odessa/dodessa.f @ 5018:1c65a8e44ef9 ss-2-1-59

[project @ 2004-09-22 03:33:29 by jwe]
author jwe
date Wed, 22 Sep 2004 03:33:29 +0000
parents 70da2b8c91dd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4583
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
2 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
3 C THIS IS THE SEPTEMBER 1, 1986 VERSION OF ODESSA..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
4 C AN ORDINARY DIFFERENTIAL EQUATION SOLVER WITH EXPLICIT SIMULTANEOUS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
5 C SENSITIVITY ANALYSIS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
6 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
7 C THIS PACKAGE IS A MODIFICATION OF THE AUGUST 13, 1981 VERSION OF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
8 C LSODE.. LIVERMORE SOLVER FOR ORDINARY DIFFERENTIAL EQUATIONS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
9 C THIS VERSION IS IN DOUBLE PRECISION.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
10 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
11 C ODESSA SOLVES FOR THE FIRST-ORDER SENSITIVITY COEFFICIENTS..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
12 C DY(I)/DP, FOR A SINGLE PARAMETER, OR,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
13 C DY(I)/DP(J), FOR MULTIPLE PARAMETERS,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
14 C ASSOCIATED WITH A SYSTEM OF ORDINARY DIFFERENTIAL EQUATIONS..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
15 C DY/DT = F(Y,T;P).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
16 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
17 C REFERENCES...
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
18 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
19 C 1. JORGE R. LEIS AND MARK A. KRAMER, THE SIMULTANEOUS SOLUTION AND
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
20 C EXPLICIT SENSITIVITY ANALYSIS OF SYSTEMS DESCRIBED BY ORDINARY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
21 C DIFFERENTIAL EQUATIONS. SUBMITTED TO ACM TRANS. MATH. SOFTWARE,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
22 C (1985).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
23 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
24 C 2. JORGE R. LEIS AND MARK A. KRAMER, ODESSA - AN ORDINARY DIFFERENTIA
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
25 C EQUATION SOLVER WITH EXPLICIT SIMULTANEOUS SENSITIVITY ANALYSIS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
26 C SUBMITTED TO ACM TRANS. MATH. SOFTWARE, (1985).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
27 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
28 C 3. ALAN C. HINDMARSH, LSODE AND LSODI, TWO NEW INITIAL VALUE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
29 C ORDINARY DIFFERENTIAL EQUATION SOLVERS, ACM-SIGNUM NEWSLETTER,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
30 C VOL. 15, NO. 4 (1980), PP. 10-11.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
31 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
32 C PROBLEM STATEMENT..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
33 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
34 C THE ODESSA MODIFICATION OF THE LSODE PACKAGE PROVIDES THE OPTION TO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
35 C CALCULATE FIRST-ORDER SENSITIVITY COEFFICIENTS FOR A SYSTEM OF STIFF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
36 C OR NON-STIFF EXPLICIT ORDINARY DIFFERENTIAL EQUATIONS OF THE GENERAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
37 C FORM :
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
38 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
39 C DY/DT = F(Y,T;P) (1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
40 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
41 C WHERE Y IS AN N-DIMENSIONAL DEPENDENT VARIABLE VECTOR, T IS THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
42 C INDEPENDENT INTEGRATION VARIABLE, AND P IS AN NPAR-DIMENSIONAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
43 C CONSTANT VECTOR. THE GOVERNING EQUATIONS FOR THE FIRST-ORDER
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
44 C SENSITIVITY COEFFICIENTS ARE GIVEN BY :
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
45 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
46 C S'(T) = J(T)*S(T) + DF/DP (2)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
47 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
48 C WHERE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
49 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
50 C S(T) = DY(T)/DP (= SENSITIVITY FUNCTIONS)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
51 C S'(T) = D(DY(T)/DP)/DT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
52 C J(T) = DF(Y,T;P)/DY(T) (= JACOBIAN MATRIX)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
53 C AND DF/DP = DF(Y,T;P)/DP (= INHOMOGENEITY MATRIX)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
54 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
55 C SOLUTION OF EQUATIONS (1) AND (2) PROCEEDS SIMULTANEOUSLY VIA AN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
56 C EXTENSION OF THE LSODE PACKAGE AS DESCRIBED IN [1].
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
57 C----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
58 C ACKNOWLEDGEMENT : THE FOLLOWING ODESSA PACKAGE DOCUMENTATION IS A
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
59 C MODIFICATION OF THE LSODE DOCUMENTATION WHICH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
60 C ACCOMPANIES THE LSODE PACKAGE CODE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
61 C----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
62 C SUMMARY OF USAGE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
63 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
64 C COMMUNICATION BETWEEN THE USER AND THE ODESSA PACKAGE, FOR NORMAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
65 C SITUATIONS, IS SUMMARIZED HERE. THIS SUMMARY DESCRIBES ONLY A SUBSET
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
66 C OF THE FULL SET OF OPTIONS AVAILABLE. SEE THE FULL DESCRIPTION FOR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
67 C DETAILS, INCLUDING OPTIONAL COMMUNICATION, NONSTANDARD OPTIONS,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
68 C AND INSTRUCTIONS FOR SPECIAL SITUATIONS. SEE ALSO THE EXAMPLE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
69 C PROBLEM (WITH PROGRAM AND OUTPUT) FOLLOWING THIS SUMMARY.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
70 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
71 C A. FIRST PROVIDE A SUBROUTINE OF THE FORM..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
72 C SUBROUTINE F (N, T, Y, PAR, YDOT)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
73 C DOUBLE PRECISION T, Y, PAR, YDOT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
74 C DIMENSION Y(N), YDOT(N), PAR(NPAR)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
75 C WHICH SUPPLIES THE VECTOR FUNCTION F BY LOADING YDOT(I) WITH F(I).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
76 C N IS THE NUMBER OF FIRST-ORDER DIFFERENTIAL EQUATIONS IN THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
77 C ABOVE MODEL. NPAR IS THE NUMBER OF MODEL PARAMETERS FOR WHICH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
78 C VECTOR SENSITIVITY FUNCTIONS ARE DESIRED. YOU ARE ALSO ENCOURAGED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
79 C TO PROVIDE A SUBROUTINE OF THE FORM..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
80 C SUBROUTINE DF (N, T, Y, PAR, DFDP, JPAR)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
81 C DOUBLE PRECISION T, Y, PAR, DFDP
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
82 C DIMENSION Y(N), PAR(NPAR), DFDP(N)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
83 C GO TO (1,...,NPAR) JPAR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
84 C 1 DFDP(1) = DF(1)/DP(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
85 C .
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
86 C DFDP(I) = DF(I)/DP(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
87 C .
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
88 C DFDP(N) = DF(N)/DP(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
89 C RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
90 C 2 DFDP(1) = DF(1)/DP(2)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
91 C .
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
92 C DFDP(I) = DF(I)/DP(2)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
93 C .
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
94 C DFDP(N) = DF(N)/DP(2)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
95 C RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
96 C . .
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
97 C . .
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
98 C RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
99 C NPAR DFDP(1) = DF(1)/DP(NPAR)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
100 C .
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
101 C DFDP(I) = DF(I)/DP(NPAR)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
102 C .
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
103 C DFDP(N) = DF(N)/DP(NPAR)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
104 C RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
105 C END
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
106 C ONLY NONZERO ELEMENTS NEED BE LOADED. IF THIS IS NOT FEASIBLE,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
107 C ODESSA WILL GENERATE THIS MATRIX INTERNALLY BY DIFFERENCE QUOTIENTS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
108 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
109 C B. NEXT DETERMINE (OR GUESS) WHETHER OR NOT THE PROBLEM IS STIFF.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
110 C STIFFNESS OCCURS WHEN THE JACOBIAN MATRIX DF/DY HAS AN EIGENVALUE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
111 C WHOSE REAL PART IS NEGATIVE AND LARGE IN MAGNITUDE, COMPARED TO THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
112 C RECIPROCAL OF THE T SPAN OF INTEREST. IF THE PROBLEM IS NONSTIFF,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
113 C USE METH = 10. IF IT IS STIFF, USE METH = 20. THE USER IS REQUIRED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
114 C TO INPUT THE METHOD FLAG MF = 10*METH + MITER. THERE ARE FOUR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
115 C STANDARD CHOICES FOR MITER WHEN A SENSITIVITY ANALYSIS IS DESIRED,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
116 C AND ODESSA REQUIRES THE JACOBIAN MATRIX IN SOME FORM.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
117 C THIS MATRIX IS REGARDED EITHER AS FULL (MITER = 1 OR 2),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
118 C OR BANDED (MITER = 4 OR 5). IN THE BANDED CASE, ODESSA REQUIRES TWO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
119 C HALF-BANDWIDTH PARAMETERS ML AND MU. THESE ARE, RESPECTIVELY, THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
120 C WIDTHS OF THE LOWER AND UPPER PARTS OF THE BAND, EXCLUDING THE MAIN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
121 C DIAGONAL. THUS THE BAND CONSISTS OF THE LOCATIONS (I,J) WITH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
122 C I-ML .LE. J .LE. I+MU, AND THE FULL BANDWIDTH IS ML+MU+1.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
123 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
124 C C. YOU ARE ENCOURAGED TO SUPPLY THE JACOBIAN DIRECTLY (MF = 11, 14,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
125 C 21, OR 24), BUT IF THIS IS NOT FEASIBLE, ODESSA WILL COMPUTE IT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
126 C INTERNALLY BY DIFFERENCE QUOTIENTS (MF = 12, 15, 22, OR 25). IF YOU
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
127 C ARE SUPPLYING THE JACOBIAN, PROVIDE A SUBROUTINE OF THE FORM..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
128 C SUBROUTINE JAC (NEQ, T, Y, PAR, ML, MU, PD, NROWPD)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
129 C DOUBLE PRECISION T, Y, PAR, PD
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
130 C DIMENSION Y(N), PD(NROWPD,N), PAR(NPAR)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
131 C WHICH SUPPLIES DF/DY BY LOADING PD AS FOLLOWS..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
132 C FOR A FULL JACOBIAN (MF = 11, OR 21), LOAD PD(I,J) WITH DF(I)/DY(J),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
133 C THE PARTIAL DERIVATIVE OF F(I) WITH RESPECT TO Y(J). (IGNORE THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
134 C ML AND MU ARGUMENTS IN THIS CASE.)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
135 C FOR A BANDED JACOBIAN (MF = 14, OR 24), LOAD PD(I-J+MU+1,J) WITH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
136 C DF(I)/DY(J), I.E. LOAD THE DIAGONAL LINES OF DF/DY INTO THE ROWS OF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
137 C PD FROM THE TOP DOWN.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
138 C IN EITHER CASE, ONLY NONZERO ELEMENTS NEED BE LOADED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
139 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
140 C D. WRITE A MAIN PROGRAM WHICH CALLS SUBROUTINE ODESSA ONCE FOR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
141 C EACH POINT AT WHICH ANSWERS ARE DESIRED. THIS SHOULD ALSO PROVIDE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
142 C FOR POSSIBLE USE OF LOGICAL UNIT 6 FOR OUTPUT OF ERROR MESSAGES BY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
143 C ODESSA. ON THE FIRST CALL TO ODESSA, SUPPLY ARGUMENTS AS FOLLOWS..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
144 C F = NAME OF SUBROUTINE FOR RIGHT-HAND SIDE VECTOR F (MODEL).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
145 C THIS NAME MUST BE DECLARED EXTERNAL IN CALLING PROGRAM.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
146 C DF = NAME OF SUBROUTINE FOR INHOMOGENEITY MATRIX DF/DP.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
147 C IF USED (IDF = 1), THIS NAME MUST BE DECLARED EXTERNAL IN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
148 C CALLING PROGRAM. IF NOT USED (IDF = 0), PASS A DUMMY NAME.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
149 C N = NUMBER OF FIRST ORDER ODE-S IN MODEL; LOAD INTO NEQ(1).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
150 C NPAR = NUMBER OF MODEL PARAMETERS OF INTEREST; LOAD INTO NEQ(2).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
151 C Y = AN (N) BY (NPAR+1) REAL ARRAY OF INITIAL VALUES..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
152 C Y(I,1) , I = 1,N , CONTAIN THE STATE, OR MODEL, DEPENDENT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
153 C VARIABLES,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
154 C Y(I,J) , J = 2,NPAR , CONTAIN THE DEPENDENT SENSITIVITY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
155 C COEFFICIENTS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
156 C PAR = A REAL ARRAY OF LENGTH NPAR CONTAINING MODEL PARAMETERS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
157 C OF INTEREST.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
158 C T = THE INITIAL VALUE OF THE INDEPENDENT VARIABLE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
159 C TOUT = FIRST POINT WHERE OUTPUT IS DESIRED (.NE. T).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
160 C ITOL = 1, 2, 3, OR 4 ACCORDING AS RTOL, ATOL (BELOW) ARE SCALARS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
161 C OR ARRAYS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
162 C RTOL = RELATIVE TOLERANCE PARAMETER (SCALAR OR (N) BY (NPAR+1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
163 C ARRAY).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
164 C ATOL = ABSOLUTE TOLERANCE PARAMETER (SCALAR OR (N) BY (NPAR+1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
165 C ARRAY).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
166 C THE ESTIMATED LOCAL ERROR IN Y(I,J) WILL BE CONTROLLED SO AS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
167 C TO BE ROUGHLY LESS (IN MAGNITUDE) THAN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
168 C EWT(I,J) = RTOL*ABS(Y(I,J)) + ATOL IF ITOL = 1,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
169 C EWT(I,J) = RTOL*ABS(Y(I,J)) + ATOL(I,J) IF ITOL = 2,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
170 C EWT(I,J) = RTOL(I,J)*ABS(Y(I,J) + ATOL IF ITOL = 3, OR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
171 C EWT(I,J) = RTOL(I,J)*ABS(Y(I,J) + ATOL(I,J) IF ITOL = 4.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
172 C THUS THE LOCAL ERROR TEST PASSES IF, IN EACH COMPONENT,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
173 C EITHER THE ABSOLUTE ERROR IS LESS THAN ATOL (OR ATOL(I,J)),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
174 C OR THE RELATIVE ERROR IS LESS THAN RTOL (OR RTOL(I,J)).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
175 C USE RTOL = 0.0 FOR PURE ABSOLUTE ERROR CONTROL, AND
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
176 C USE ATOL = 0.0 FOR PURE RELATIVE ERROR CONTROL.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
177 C CAUTION.. ACTUAL (GLOBAL) ERRORS MAY EXCEED THESE LOCAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
178 C TOLERANCES, SO CHOOSE THEM CONSERVATIVELY.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
179 C ITASK = 1 FOR NORMAL COMPUTATION OF OUTPUT VALUES OF Y AT T = TOUT.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
180 C ISTATE = INTEGER FLAG (INPUT AND OUTPUT). SET ISTATE = 1.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
181 C IOPT = 0, TO INDICATE NO OPTIONAL INPUTS FOR INTEGRATION;
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
182 C LOAD INTO IOPT(1).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
183 C ISOPT = 1, TO INDICATE SENSITIVITY ANALYSIS, = 0, TO INDICATE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
184 C NO SENSITIVITY ANALYSIS; LOAD INTO IOPT(2).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
185 C IDF = 1, IF SUBROUTINE DF (ABOVE) IS SUPPLIED BY THE USER,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
186 C = 0, OTHERWISE; LOAD INTO IOPT(3).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
187 C RWORK = REAL WORK ARRAY OF LENGTH AT LEAST..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
188 C 22 + 16*N + N**2 FOR MF = 11 OR 12,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
189 C 22 + 17*N + (2*ML + MU)*N FOR MF = 14 OR 15,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
190 C 22 + 9*N + N**2 FOR MF = 21 OR 22,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
191 C 22 + 10*N + (2*ML + MU)*N FOR MF = 24 OR 25,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
192 C IF ISOPT = 0, OR..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
193 C 22 + 15*(NPAR+1)*N + N**2 + N FOR MF = 11 OR 12,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
194 C 24 + 15*(NPAR+1)*N + (2*ML+MU+2)*N + N FOR MF = 14 OR 15,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
195 C 22 + 8*(NPAR+1)*N + N**2 + N FOR MF = 21 OR 22,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
196 C 24 + 8*(NPAR+1)*N + (2*ML+MU+2)*N + N FOR MF = 24 OR 25,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
197 C IF ISOPT = 1.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
198 C LRW = DECLARED LENGTH OF RWORK (IN USER-S DIMENSION STATEMENT).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
199 C IWORK = INTEGER WORK ARRAY OF LENGTH AT LEAST..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
200 C 20 + N IF ISOPT = 0,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
201 C 21 + N + NPAR IF ISOPT = 1.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
202 C IF MITER = 4 OR 5, INPUT IN IWORK(1),IWORK(2) THE LOWER
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
203 C AND UPPER HALF-BANDWIDTHS ML,MU (EXCLUDING MAIN DIAGONAL).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
204 C LIW = DECLARED LENGTH OF IWORK (IN USER-S DIMENSION STATEMENT).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
205 C JAC = NAME OF SUBROUTINE FOR JACOBIAN MATRIX.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
206 C IF USED, THIS NAME MUST BE DECLARED EXTERNAL IN CALLING
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
207 C PROGRAM. IF NOT USED, PASS A DUMMY NAME.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
208 C MF = METHOD FLAG. STANDARD VALUES FOR ISOPT = 0 ARE..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
209 C 10 FOR NONSTIFF (ADAMS) METHOD, NO JACOBIAN USED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
210 C 21 FOR STIFF (BDF) METHOD, USER-SUPPLIED FULL JACOBIAN.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
211 C 22 FOR STIFF METHOD, INTERNALLY GENERATED FULL JACOBIAN.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
212 C 24 FOR STIFF METHOD, USER-SUPPLIED BANDED JACOBIAN.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
213 C 25 FOR STIFF METHOD, INTERNALLY GENERATED BANDED JACOBIAN.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
214 C IF ISOPT = 1, MF = 10 IS ILLEGAL AND CAN BE REPLACED BY..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
215 C 11 FOR NONSTIFF METHOD, USER-SUPPLIED FULL JACOBIAN.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
216 C 12 FOR NONSTIFF METHOD, INTERNALLY GENERATED FULL JACOBIAN.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
217 C 14 FOR NONSTIFF METHOD, USER-SUPPLIED BANDED JACOBIAN.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
218 C 15 FOR NONSTIFF METHOD, INTERNALLY GENERATED BANDED JACOBIAN.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
219 C NOTE THAT THE MAIN PROGRAM MUST DECLARE ARRAYS Y, RWORK, IWORK, AND
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
220 C POSSIBLY ATOL AND RTOL, AS WELL AS NEQ, IOPT, AND PAR IF ISOPT = 1.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
221 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
222 C E. THE OUTPUT FROM THE FIRST CALL (OR ANY CALL) IS..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
223 C Y = ARRAY OF COMPUTED VALUES OF Y(T) VECTOR.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
224 C T = CORRESPONDING VALUE OF INDEPENDENT VARIABLE (NORMALLY TOUT).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
225 C ISTATE = 2 IF ODESSA WAS SUCCESSFUL, NEGATIVE OTHERWISE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
226 C -1 MEANS EXCESS WORK DONE ON THIS CALL (PERHAPS WRONG MF).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
227 C -2 MEANS EXCESS ACCURACY REQUESTED (TOLERANCES TOO SMALL).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
228 C -3 MEANS ILLEGAL INPUT DETECTED (SEE PRINTED MESSAGE).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
229 C -4 MEANS REPEATED ERROR TEST FAILURES (CHECK ALL INPUTS).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
230 C -5 MEANS REPEATED CONVERGENCE FAILURES (PERHAPS BAD JACOBIAN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
231 C SUPPLIED OR WRONG CHOICE OF MF OR TOLERANCES).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
232 C -6 MEANS ERROR WEIGHT BECAME ZERO DURING PROBLEM. (SOLUTION
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
233 C COMPONENT I,J VANISHED, AND ATOL OR ATOL(I,J) = 0.0)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
234 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
235 C F. TO CONTINUE THE INTEGRATION AFTER A SUCCESSFUL RETURN, SIMPLY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
236 C RESET TOUT AND CALL ODESSA AGAIN. NO OTHER PARAMETERS NEED BE RESET.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
237 C----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
238 C EXAMPLE PROBLEM.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
239 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
240 C THE FOLLOWING IS A SIMPLE EXAMPLE PROBLEM, WITH THE CODING
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
241 C NEEDED FOR ITS SOLUTION BY ODESSA. THE PROBLEM IS FROM CHEMICAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
242 C KINETICS, AND CONSISTS OF THE FOLLOWING THREE RATE EQUATIONS..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
243 C DY1/DT = -PAR(1)*Y1 + PAR(2)*Y2*Y3 ; PAR(1) = .04, PAR(2) = 1.E4
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
244 C DY2/DT = PAR(1)*Y1 - PAR(2)*Y2*Y3 - PAR(3)*Y2**2 ; PAR(3) = 3.E7
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
245 C DY3/DT = PAR(3)*Y2**2
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
246 C ON THE INTERVAL FROM T = 0.0 TO T = 4.E10, WITH INITIAL CONDITIONS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
247 C Y1 = 1.0, Y2 = Y3 = 0, AND S(I,J) = 0, I = 1,3, J = 1,3.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
248 C THE PROBLEM IS STIFF.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
249 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
250 C THE FOLLOWING CODING SOLVES THIS PROBLEM WITH ODESSA, USING
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
251 C MF = 21 AND PRINTING RESULTS AT T = .4, 4., ..., 4.E10.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
252 C IT USES ITOL = 4 AND ATOL MUCH SMALLER FOR Y2 THAN Y1 OR Y3,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
253 C BECAUSE Y2 HAS MUCH SMALLER VALUES. LESS STRINGENT TOLERANCES
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
254 C ARE ASSIGNED FOR THE SENSITIVITIES TO ACHIEVE GREATER EFFICIENCY.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
255 C AT THE END OF THE RUN, STATISTICAL QUANTITIES OF INTEREST ARE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
256 C PRINTED (SEE OPTIONAL OUTPUTS IN THE FULL DESCRIPTION BELOW).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
257 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
258 C DOUBLE PRECISION ATOL, RWORK, RTOL, T, TOUT, Y, PAR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
259 C EXTERNAL FEX, JEX, DFEX
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
260 C DIMENSION Y(3,4), PAR(3), ATOL(3,4), RTOL(3,4), RWORK(130),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
261 C 1 IWORK(27), NEQ(2), IOPT(3)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
262 C N = 3
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
263 C NPAR = 3
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
264 C NEQ(1) = N
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
265 C NEQ(2) = NPAR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
266 C NSV = NPAR+1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
267 C DO 10 I = 1,N
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
268 C DO 10 J = 1,NSV
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
269 C 10 Y(I,J) = 0.0D0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
270 C Y(1,1) = 1.0D0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
271 C PAR(1) = 0.04D0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
272 C PAR(2) = 1.0D4
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
273 C PAR(3) = 3.0D7
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
274 C T = 0.D0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
275 C TOUT = .4D0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
276 C ITOL = 4
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
277 C ATOL(1,1) = 1.D-6
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
278 C ATOL(2,1) = 1.D-10
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
279 C ATOL(3,1) = 1.D-6
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
280 C DO 20 I = 1,N
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
281 C RTOL(I,1) = 1.D-4
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
282 C DO 15 J = 2,NSV
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
283 C RTOL(I,J) = 1.D-3
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
284 C 15 ATOL(I,J) = 1.D2 * ATOL(I,1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
285 C 20 CONTINUE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
286 C ITASK = 1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
287 C ISTATE = 1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
288 C IOPT(1) = 0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
289 C IOPT(2) = 1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
290 C IOPT(3) = 1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
291 C LRW = 130
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
292 C LIW = 27
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
293 C MF = 21
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
294 C DO 60 IOUT = 1,12
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
295 C CALL ODESSA(FEX,DFEX,NEQ,Y,PAR,T,TOUT,ITOL,RTOL,ATOL,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
296 C 1 ITASK,ISTATE, IOPT,RWORK,LRW,IWORK,LIW,JEX,MF)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
297 C WRITE(6,30)T,Y(1,1),Y(2,1),Y(3,1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
298 C 30 FORMAT(1X,7H AT T =,E12.4,6H Y =,3E14.6)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
299 C DO 50 J = 2,NSV
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
300 C JPAR = J-1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
301 C WRITE(6,40)JPAR,Y(1,J),Y(2,J),Y(3,J)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
302 C 40 FORMAT(20X,2HS(,I1,3H) =,3E14.6)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
303 C 50 CONTINUE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
304 C IF (ISTATE .LT. 0) GO TO 80
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
305 C 60 TOUT = TOUT*10.D0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
306 C WRITE(6,70)IWORK(11),IWORK(12),IWORK(13),IWORK(19)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
307 C 70 FORMAT(1X,/,12H NO. STEPS =,I4,11H NO. F-S =,I4,11H NO. J-S =,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
308 C 1 I4,12H NO. DF-S =,I4)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
309 C STOP
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
310 C 80 WRITE(6,90)ISTATE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
311 C 90 FORMAT(///22H ERROR HALT.. ISTATE =,I3)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
312 C STOP
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
313 C END
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
314 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
315 C SUBROUTINE FEX (NEQ, T, Y, PAR, YDOT)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
316 C DOUBLE PRECISION T, Y, YDOT, PAR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
317 C DIMENSION Y(3), YDOT(3), PAR(3)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
318 C YDOT(1) = -PAR(1)*Y(1) + PAR(2)*Y(2)*Y(3)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
319 C YDOT(3) = PAR(3)*Y(2)*Y(2)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
320 C YDOT(2) = -YDOT(1) - YDOT(3)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
321 C RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
322 C END
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
323 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
324 C SUBROUTINE JEX (NEQ, T, Y, PAR, ML, MU, PD, NRPD)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
325 C DOUBLE PRECISION PD, T, Y, PAR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
326 C DIMENSION Y(3), PD(NRPD,3), PAR(3)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
327 C PD(1,1) = -PAR(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
328 C PD(1,2) = PAR(2)*Y(3)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
329 C PD(1,3) = PAR(2)*Y(2)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
330 C PD(2,1) = PAR(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
331 C PD(2,3) = -PD(1,3)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
332 C PD(3,2) = 2.D0*PAR(3)*Y(2)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
333 C PD(2,2) = -PD(1,2) - PD(3,2)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
334 C RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
335 C END
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
336 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
337 C SUBROUTINE DFEX (NEQ, T, Y, PAR, DFDP, JPAR)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
338 C DOUBLE PRECISION T, Y, PAR, DFDP
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
339 C DIMENSION Y(3), PAR(3), DFDP(3)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
340 C GO TO (1,2,3), JPAR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
341 C 1 DFDP(1) = -Y(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
342 C DFDP(2) = Y(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
343 C RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
344 C 2 DFDP(1) = Y(2)*Y(3)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
345 C DFDP(2) = -Y(2)*Y(3)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
346 C RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
347 C 3 DFDP(2) = -Y(2)*Y(2)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
348 C DFDP(3) = Y(2)*Y(2)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
349 C RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
350 C END
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
351 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
352 C THE OUTPUT OF THIS PROGRAM (ON A DATA GENERAL MV-8000 IN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
353 C DOUBLE PRECISION IS AS FOLLOWS:
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
354 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
355 C AT T = .4000E+00 Y = .985173E+00 .338641E-04 .147930E-01
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
356 C S(1) = -.355914E+00 .390261E-03 .355524E+00
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
357 C S(2) = .955150E-07 -.213065E-09 -.953019E-07
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
358 C S(3) = -.158466E-10 -.529012E-12 .163756E-10
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
359 C AT T = .4000E+01 Y = .905516E+00 .224044E-04 .944615E-01
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
360 C S(1) = -.187621E+01 .179197E-03 .187603E+01
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
361 C S(2) = .296093E-05 -.583104E-09 -.296034E-05
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
362 C S(3) = -.493267E-09 -.276246E-12 .493544E-09
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
363 C AT T = .4000E+02 Y = .715848E+00 .918628E-05 .284143E+00
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
364 C S(1) = -.424730E+01 .459360E-04 .424726E+01
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
365 C S(2) = .137294E-04 -.235815E-09 -.137291E-04
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
366 C S(3) = -.228818E-08 -.113803E-12 .228829E-08
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
367 C AT T = .4000E+03 Y = .450526E+00 .322299E-05 .549471E+00
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
368 C S(1) = -.595837E+01 .354310E-05 .595836E+01
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
369 C S(2) = .227380E-04 -.226041E-10 -.227380E-04
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
370 C S(3) = -.378971E-08 -.499501E-13 .378976E-08
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
371 C AT T = .4000E+04 Y = .183185E+00 .894131E-06 .816814E+00
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
372 C S(1) = -.475006E+01 -.599504E-05 .475007E+01
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
373 C S(2) = .188089E-04 .231330E-10 -.188089E-04
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
374 C S(3) = -.313478E-08 -.187575E-13 .313480E-08
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
375 C AT T = .4000E+05 Y = .389733E-01 .162133E-06 .961027E+00
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
376 C S(1) = -.157477E+01 -.276199E-05 .157477E+01
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
377 C S(2) = .628668E-05 .110026E-10 -.628670E-05
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
378 C S(3) = -.104776E-08 -.453588E-14 .104776E-08
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
379 C AT T = .4000E+06 Y = .493609E-02 .198411E-07 .995064E+00
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
380 C S(1) = -.236244E+00 -.458262E-06 .236244E+00
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
381 C S(2) = .944669E-06 .183193E-11 -.944671E-06
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
382 C S(3) = -.157441E-09 -.635990E-15 .157442E-09
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
383 C AT T = .4000E+07 Y = .516087E-03 .206540E-08 .999484E+00
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
384 C S(1) = -.256277E-01 -.509808E-07 .256278E-01
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
385 C S(2) = .102506E-06 .203905E-12 -.102506E-06
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
386 C S(3) = -.170825E-10 -.684002E-16 .170826E-10
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
387 C AT T = .4000E+08 Y = .519314E-04 .207736E-09 .999948E+00
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
388 C S(1) = -.259316E-02 -.518029E-08 .259316E-02
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
389 C S(2) = .103726E-07 .207209E-13 -.103726E-07
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
390 C S(3) = -.172845E-11 -.691450E-17 .172845E-11
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
391 C AT T = .4000E+09 Y = .544710E-05 .217885E-10 .999995E+00
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
392 C S(1) = -.271637E-03 -.541849E-09 .271638E-03
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
393 C S(2) = .108655E-08 .216739E-14 -.108655E-08
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
394 C S(3) = -.180902E-12 -.723615E-18 .180902E-12
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
395 C AT T = .4000E+10 Y = .446748E-06 .178699E-11 .100000E+01
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
396 C S(1) = -.322322E-04 -.842541E-10 .322323E-04
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
397 C S(2) = .128929E-09 .337016E-15 -.128929E-09
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
398 C S(3) = -.209715E-13 -.838859E-19 .209715E-13
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
399 C AT T = .4000E+11 Y = -.363960E-07 -.145584E-12 .100000E+01
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
400 C S(1) = -.164109E-06 -.429604E-11 .164113E-06
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
401 C S(2) = .656436E-12 .171842E-16 -.656451E-12
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
402 C S(3) = -.689361E-15 -.275745E-20 .689363E-15
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
403 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
404 C NO. STEPS = 340 NO. F-S = 412 NO. J-S = 343 NO. DF-S =1023
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
405 C----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
406 C FULL DESCRIPTION OF USER INTERFACE TO ODESSA.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
407 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
408 C THE USER INTERFACE TO ODESSA CONSISTS OF THE FOLLOWING PARTS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
409 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
410 C I. THE CALL SEQUENCE TO SUBROUTINE ODESSA, WHICH IS A DRIVER
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
411 C ROUTINE FOR THE SOLVER. THIS INCLUDES DESCRIPTIONS OF BOTH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
412 C THE CALL SEQUENCE ARGUMENTS AND OF USER-SUPPLIED ROUTINES.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
413 C FOLLOWING THESE DESCRIPTIONS IS A DESCRIPTION OF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
414 C OPTIONAL INPUTS AVAILABLE THROUGH THE CALL SEQUENCE, AND THEN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
415 C A DESCRIPTION OF OPTIONAL OUTPUTS (IN THE WORK ARRAYS).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
416 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
417 C II. DESCRIPTIONS OF OTHER ROUTINES IN THE ODESSA PACKAGE THAT MAY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
418 C BE (OPTIONALLY) CALLED BY THE USER. THESE PROVIDE THE ABILITY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
419 C TO ALTER ERROR MESSAGE HANDLING, SAVE AND RESTORE THE INTERNAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
420 C COMMON, AND OBTAIN SPECIFIED DERIVATIVES OF THE SOLUTION Y(T).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
421 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
422 C III. DESCRIPTIONS OF COMMON BLOCKS TO BE DECLARED IN OVERLAY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
423 C OR SIMILAR ENVIRONMENTS, OR TO BE SAVED WHEN DOING AN INTERRUPT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
424 C OF THE PROBLEM AND CONTINUED SOLUTION LATER.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
425 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
426 C IV. DESCRIPTION OF TWO SUBROUTINES IN THE ODESSA PACKAGE, EITHER OF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
427 C WHICH THE USER MAY REPLACE WITH HIS OWN VERSION, IF DESIRED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
428 C THESE RELATE TO THE MEASUREMENT OF ERRORS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
429 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
430 C V. GENERAL REMARKS WHICH HIGHLIGHT DIFFERENCES BETWEEN THE LSODE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
431 C PACKAGE AND THE ODESSA PACKAGE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
432 C----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
433 C PART I. CALL SEQUENCE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
434 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
435 C THE CALL SEQUENCE PARAMETERS USED FOR INPUT ONLY ARE..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
436 C F, DF, NEQ, PAR, TOUT, ITOL, RTOL, ATOL, ITASK, IOPT, LRW, LIW,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
437 C JAC, MF,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
438 C AND THOSE USED FOR BOTH INPUT AND OUTPUT ARE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
439 C Y, T, ISTATE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
440 C THE WORK ARRAYS RWORK AND IWORK ARE ALSO USED FOR CONDITIONAL AND
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
441 C OPTIONAL INPUTS AND OPTIONAL OUTPUTS. (THE TERM OUTPUT HERE REFERS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
442 C TO THE RETURN FROM SUBROUTINE ODESSA TO THE USER-S CALLING PROGRAM.)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
443 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
444 C THE LEGALITY OF INPUT PARAMETERS WILL BE THOROUGHLY CHECKED ON THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
445 C INITIAL CALL FOR THE PROBLEM, BUT NOT CHECKED THEREAFTER UNLESS A
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
446 C CHANGE IN INPUT PARAMETERS IS FLAGGED BY ISTATE = 3 ON INPUT.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
447 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
448 C THE DESCRIPTIONS OF THE CALL ARGUMENTS ARE AS FOLLOWS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
449 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
450 C F = THE NAME OF THE USER-SUPPLIED SUBROUTINE DEFINING THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
451 C ODE MODEL. THIS SYSTEM MUST BE PUT IN THE FIRST-ORDER
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
452 C FORM DY/DT = F(Y,T;P), WHERE F IS A VECTOR-VALUED FUNCTION
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
453 C OF THE SCALAR T AND VECTORS Y, AND PAR. SUBROUTINE F IS TO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
454 C COMPUTE THE FUNCTION F. IT IS TO HAVE THE FORM..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
455 C SUBROUTINE F (NEQ, T, Y, PAR, YDOT)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
456 C DOUBLE PRECISION T, Y, PAR, YDOT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
457 C DIMENSION Y(1), PAR(1), YDOT(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
458 C WHERE NEQ, T, Y, AND PAR ARE INPUT, AND YDOT = F(Y,T;P)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
459 C IS OUTPUT. Y AND YDOT ARE ARRAYS OF LENGTH N (= NEQ(1)).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
460 C (IN THE DIMENSION STATEMENT ABOVE, 1 IS A DUMMY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
461 C DIMENSION.. IT CAN BE REPLACED BY ANY VALUE.)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
462 C F SHOULD NOT ALTER ARRAY Y, OR PAR(1),...,PAR(NPAR).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
463 C F MUST BE DECLARED EXTERNAL IN THE CALLING PROGRAM.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
464 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
465 C SUBROUTINE F MAY ACCESS USER-DEFINED QUANTITIES IN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
466 C NEQ(2),... AND PAR(NPAR+1),... IF NEQ IS AN ARRAY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
467 C (DIMENSIONED IN F) AND PAR HAS LENGTH EXCEEDING NPAR.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
468 C SEE THE DESCRIPTIONS OF NEQ AND PAR BELOW.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
469 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
470 C DF = THE NAME OF THE USER-SUPPLIED ROUTINE (IDF = 1) TO COMPUTE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
471 C THE INHOMOGENEITY MATRIX, DF/DP, AS A FUNCTION OF THE SCALAR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
472 C T, AND THE VECTORS Y, AND PAR. IT IS TO HAVE THE FORM
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
473 C SUBROUTINE DF (NEQ, T, Y, PAR, DFDP, JPAR)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
474 C DOUBLE PRECISION T, Y, PAR, DFDP
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
475 C DIMENSION Y(1), PAR(1), DFDP(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
476 C GO TO (1,2,...,NPAR) JPAR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
477 C 1 DFDP(1) = DF(1)/DP(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
478 C .
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
479 C DFDP(I) = DF(I)/DP(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
480 C .
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
481 C DFDP(N) = DF(N)/DP(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
482 C RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
483 C 2 DFDP(1) = DF(1)/DP(2)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
484 C .
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
485 C DFDP(I) = DF(I)/DP(2)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
486 C .
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
487 C DFDP(N) = DF(N)/DP(2)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
488 C .
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
489 C RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
490 C . .
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
491 C . .
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
492 C NPAR DFDP(1) = DF(1)/DP(NPAR)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
493 C .
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
494 C DFDP(I) = DF(I)/DP(NPAR)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
495 C .
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
496 C DFDP(N) = DF(N)/DP(NPAR)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
497 C RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
498 C END
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
499 C WHERE NEQ, T, Y, PAR, AND JPAR ARE INPUT AND THE VECTOR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
500 C DFDP(*,JPAR) IS TO BE LOADED WITH THE PARTIAL DERIVATIVES
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
501 C DF(Y,T;PAR)/DP(JPAR) ON OUTPUT. ONLY NONZERO ELEMENTS NEED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
502 C BE LOADED. T, Y, AND PAR HAVE THE SAME MEANING AS IN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
503 C SUBROUTINE F. (IN THE DIMENSION STATEMENT ABOVE, 1 IS A DUMMY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
504 C DIMENSION.. IT CAN BE REPLACED BY ANY VALUE).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
505 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
506 C DFDP(*,JPAR) IS PRESET TO ZERO BY THE SOLVER, SO THAT ONLY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
507 C THE NONZERO ELEMENTS NEED BE LOADED BY DF. SUBROUTINE DF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
508 C MUST BE DECLARED EXTERNAL IN THE CALLING PROGRAM IF USED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
509 C IF IDF = 0 (OR ISOPT = 0), A DUMMY ARGUMENT CAN BE USED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
510 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
511 C SUBROUTINE DF MAY ACCESS USER-DEFINED QUANTITIES IN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
512 C NEQ(2),... AND PAR(NPAR+1),... IF NEQ IS AN ARRAY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
513 C (DIMENSIONED IN DF) AND PAR HAS A LENGTH EXCEEDING NPAR.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
514 C SEE THE DESCRIPTIONS OF NEQ AND PAR (BELOW).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
515 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
516 C NEQ = THE SIZE OF THE ODE SYSTEM (NUMBER OF FIRST ORDER ORDINARY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
517 C DIFFERENTIAL EQUATIONS (N) IN THE MODEL). USED ONLY FOR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
518 C INPUT. NEQ MAY NOT BE CHANGED DURING THE PROBLEM.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
519 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
520 C FOR ISOPT = 0, NEQ IS NORMALLY A SCALAR. HOWEVER, NEQ MAY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
521 C BE AN ARRAY, WITH NEQ(1) SET TO THE SYSTEM SIZE (N), IN WHICH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
522 C CASE THE ODESSA PACKAGE ACCESSES ONLY NEQ(1). HOWEVER,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
523 C THIS PARAMETER IS PASSED AS THE NEQ ARGUMENT IN ALL CALLS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
524 C TO F, DF, AND JAC. HENCE, IF IT IS AN ARRAY, LOCATIONS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
525 C NEQ(2),... MAY BE USED TO STORE OTHER INTEGER DATA AND PASS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
526 C IT TO F, DF, AND/OR JAC. FOR ISOPT = 1, NPAR MUST BE LOADED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
527 C INTO NEQ(2), AND IS NOT ALLOWED TO CHANGE DURING THE PROBLEM.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
528 C IN THESE CASES, SUBROUTINES F, DF, AND/OR JAC MUST INCLUDE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
529 C NEQ IN A DIMENSION STATEMENT.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
530 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
531 C Y = A REAL ARRAY FOR THE VECTOR OF DEPENDENT VARIABLES, OF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
532 C DIMENSION (N) BY (NPAR+1). USED FOR BOTH INPUT AND
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
533 C OUTPUT ON THE FIRST CALL (ISTATE = 1), AND ONLY FOR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
534 C OUTPUT ON OTHER CALLS. ON THE FIRST CALL, Y MUST CONTAIN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
535 C THE VECTORS OF INITIAL VALUES. ON OUTPUT, Y CONTAINS THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
536 C COMPUTED SOLUTION VECTORS, EVALUATED AT T.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
537 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
538 C PAR = A REAL ARRAY FOR THE VECTOR OF CONSTANT MODEL PARAMETERS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
539 C OF INTEREST IN THE SENSITIVITY ANALYSIS, OF LENGTH NPAR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
540 C OR MORE. PAR IS PASSED AS AN ARGUMENT IN ALL CALLS TO F,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
541 C DF, AND JAC. HENCE LOCATIONS PAR(NPAR+1),... MAY BE USED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
542 C TO STORE OTHER REAL DATA AND PASS IT TO F, DF, AND/OR JAC.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
543 C LOCATIONS PAR(1),...,PAR(NPAR) ARE USED AS INPUT ONLY,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
544 C AND MUST NOT BE CHANGED DURING THE PROBLEM.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
545 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
546 C T = THE INDEPENDENT VARIABLE. ON INPUT, T IS USED ONLY ON THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
547 C FIRST CALL, AS THE INITIAL POINT OF THE INTEGRATION.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
548 C ON OUTPUT, AFTER EACH CALL, T IS THE VALUE AT WHICH A
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
549 C COMPUTED SOLUTION Y IS EVALUATED (USUALLY THE SAME AS TOUT).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
550 C ON AN ERROR RETURN, T IS THE FARTHEST POINT REACHED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
551 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
552 C TOUT = THE NEXT VALUE OF T AT WHICH A COMPUTED SOLUTION IS DESIRED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
553 C USED ONLY FOR INPUT.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
554 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
555 C WHEN STARTING THE PROBLEM (ISTATE = 1), TOUT MAY BE EQUAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
556 C TO T FOR ONE CALL, THEN SHOULD .NE. T FOR THE NEXT CALL.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
557 C FOR THE INITIAL T, AN INPUT VALUE OF TOUT .NE. T IS USED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
558 C IN ORDER TO DETERMINE THE DIRECTION OF THE INTEGRATION
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
559 C (I.E. THE ALGEBRAIC SIGN OF THE STEP SIZES) AND THE ROUGH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
560 C SCALE OF THE PROBLEM. INTEGRATION IN EITHER DIRECTION
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
561 C (FORWARD OR BACKWARD IN T) IS PERMITTED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
562 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
563 C IF ITASK = 2 OR 5 (ONE-STEP MODES), TOUT IS IGNORED AFTER
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
564 C THE FIRST CALL (I.E. THE FIRST CALL WITH TOUT .NE. T).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
565 C OTHERWISE, TOUT IS REQUIRED ON EVERY CALL.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
566 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
567 C IF ITASK = 1, 3, OR 4, THE VALUES OF TOUT NEED NOT BE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
568 C MONOTONE, BUT A VALUE OF TOUT WHICH BACKS UP IS LIMITED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
569 C TO THE CURRENT INTERNAL T INTERVAL, WHOSE ENDPOINTS ARE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
570 C TCUR - HU AND TCUR (SEE OPTIONAL OUTPUTS, BELOW, FOR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
571 C TCUR AND HU).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
572 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
573 C ITOL = AN INDICATOR FOR THE TYPE OF ERROR CONTROL. SEE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
574 C DESCRIPTION BELOW UNDER ATOL. USED ONLY FOR INPUT.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
575 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
576 C RTOL = A RELATIVE ERROR TOLERANCE PARAMETER, EITHER A SCALAR OR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
577 C AN ARRAY OF SPACE (N) BY (NPAR+1). SEE DESCRIPTION BELOW
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
578 C UNDER ATOL. INPUT ONLY.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
579 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
580 C ATOL = AN ABSOLUTE ERROR TOLERANCE PARAMETER, EITHER A SCALAR OR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
581 C AN ARRAY OF SPACE (N) BY (NPAR+1). INPUT ONLY.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
582 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
583 C THE INPUT PARAMETERS ITOL, RTOL, AND ATOL DETERMINE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
584 C THE ERROR CONTROL PERFORMED BY THE SOLVER. THE SOLVER WILL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
585 C CONTROL THE VECTOR E = (E(I,J)) OF ESTIMATED LOCAL ERRORS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
586 C IN Y, ACCORDING TO AN INEQUALITY OF THE FORM
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
587 C RMS-NORM OF ( E(I,J)/EWT(I,J) ) .LE. 1,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
588 C WHERE EWT(I,J) = RTOL(I,J)*ABS(Y(I,J)) + ATOL(I,J),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
589 C AND THE RMS-NORM (ROOT-MEAN-SQUARE NORM) HERE IS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
590 C RMS-NORM(V) = SQRT ( (1/N) * SUM (V(I,J)**2) ); I =1,...,N.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
591 C HERE EWT = (EWT(I,J)) IS A VECTOR OF WEIGHTS WHICH MUST
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
592 C ALWAYS BE POSITIVE, AND THE VALUES OF RTOL AND ATOL SHOULD
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
593 C ALL BE NON-NEGATIVE. THE FOLLOWING TABLE GIVES THE TYPES
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
594 C (SCALAR/ARRAY) OF RTOL AND ATOL, AND THE CORRESPONDING FORM
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
595 C OF EWT(I,J).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
596 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
597 C ITOL RTOL ATOL EWT(I,J)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
598 C 1 SCALAR SCALAR RTOL*ABS(Y(I,J)) + ATOL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
599 C 2 SCALAR ARRAY RTOL*ABS(Y(I,J)) + ATOL(I,J)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
600 C 3 ARRAY SCALAR RTOL(I,J)*ABS(Y(I,J)) + ATOL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
601 C 4 ARRAY ARRAY RTOL(I,J)*ABS(Y(I,J)) + ATOL(I,J)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
602 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
603 C WHEN EITHER OF THESE PARAMETERS IS A SCALAR, IT NEED NOT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
604 C BE DIMENSIONED IN THE USER-S CALLING PROGRAM.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
605 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
606 C THE TOTAL NUMBER OF ERROR TEST FAILURES DUE TO THE SENSITIVITY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
607 C ANALYSIS, AND WHICH REQUIRE AN INTEGRATION STEP TO BE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
608 C REPEATED, ARE ACCUMULATED IN THE LAST NPAR+1 LOCATIONS OF THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
609 C INTEGER WORK ARRAY IWORK (SEE OPTIONAL OUTPUTS BELOW).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
610 C THIS INFORMATION MAY BE OF VALUE IN DETERMINING APPROPRIATE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
611 C ERROR TOLERANCES TO BE APPLIED TO THE SENSITIVITY FUNCTIONS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
612 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
613 C IF NONE OF THE ABOVE CHOICES (WITH ITOL, RTOL, AND ATOL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
614 C FIXED THROUGHOUT THE PROBLEM) IS SUITABLE, MORE GENERAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
615 C ERROR CONTROLS CAN BE OBTAINED BY SUBSTITUTING
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
616 C USER-SUPPLIED ROUTINES FOR THE SETTING OF EWT AND/OR FOR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
617 C THE NORM CALCULATION. SEE PART IV BELOW.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
618 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
619 C IF GLOBAL ERRORS ARE TO BE ESTIMATED BY MAKING A REPEATED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
620 C RUN ON THE SAME PROBLEM WITH SMALLER TOLERANCES, THEN ALL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
621 C COMPONENTS OF RTOL AND ATOL (I.E. OF EWT) SHOULD BE SCALED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
622 C DOWN UNIFORMLY.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
623 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
624 C ITASK = AN INDEX SPECIFYING THE TASK TO BE PERFORMED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
625 C INPUT ONLY. ITASK HAS THE FOLLOWING VALUES AND MEANINGS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
626 C 1 MEANS NORMAL COMPUTATION OF OUTPUT VALUES OF Y(T) AT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
627 C T = TOUT (BY OVERSHOOTING AND INTERPOLATING).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
628 C 2 MEANS TAKE ONE STEP ONLY AND RETURN.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
629 C 3 MEANS STOP AT THE FIRST INTERNAL MESH POINT AT OR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
630 C BEYOND T = TOUT AND RETURN.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
631 C 4 MEANS NORMAL COMPUTATION OF OUTPUT VALUES OF Y(T) AT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
632 C T = TOUT BUT WITHOUT OVERSHOOTING T = TCRIT.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
633 C TCRIT MUST BE INPUT AS RWORK(1). TCRIT MAY BE EQUAL TO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
634 C OR BEYOND TOUT, BUT NOT BEHIND IT IN THE DIRECTION OF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
635 C INTEGRATION. THIS OPTION IS USEFUL IF THE PROBLEM
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
636 C HAS A SINGULARITY AT OR BEYOND T = TCRIT.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
637 C 5 MEANS TAKE ONE STEP, WITHOUT PASSING TCRIT, AND RETURN.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
638 C TCRIT MUST BE INPUT AS RWORK(1).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
639 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
640 C NOTE.. IF ITASK = 4 OR 5 AND THE SOLVER REACHES TCRIT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
641 C (WITHIN ROUNDOFF), IT WILL RETURN T = TCRIT (EXACTLY) TO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
642 C INDICATE THIS (UNLESS ITASK = 4 AND TOUT COMES BEFORE TCRIT,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
643 C IN WHICH CASE ANSWERS AT T = TOUT ARE RETURNED FIRST).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
644 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
645 C ISTATE = AN INDEX USED FOR INPUT AND OUTPUT TO SPECIFY THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
646 C THE STATE OF THE CALCULATION.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
647 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
648 C ON INPUT, THE VALUES OF ISTATE ARE AS FOLLOWS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
649 C 1 MEANS THIS IS THE FIRST CALL FOR THE PROBLEM
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
650 C (INITIALIZATIONS WILL BE DONE). SEE NOTE BELOW.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
651 C 2 MEANS THIS IS NOT THE FIRST CALL, AND THE CALCULATION
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
652 C IS TO CONTINUE NORMALLY, WITH NO CHANGE IN ANY INPUT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
653 C PARAMETERS EXCEPT POSSIBLY TOUT AND ITASK.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
654 C (IF ITOL, RTOL, AND/OR ATOL ARE CHANGED BETWEEN CALLS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
655 C WITH ISTATE = 2, THE NEW VALUES WILL BE USED BUT NOT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
656 C TESTED FOR LEGALITY.)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
657 C 3 MEANS THIS IS NOT THE FIRST CALL, AND THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
658 C CALCULATION IS TO CONTINUE NORMALLY, BUT WITH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
659 C A CHANGE IN INPUT PARAMETERS OTHER THAN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
660 C TOUT AND ITASK. CHANGES ARE ALLOWED IN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
661 C ITOL, RTOL, ATOL, IOPT, LRW, LIW, MF, ML, MU,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
662 C AND ANY OF THE OPTIONAL INPUTS EXCEPT H0.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
663 C (SEE IWORK DESCRIPTION FOR ML AND MU.)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
664 C NOTE.. A PRELIMINARY CALL WITH TOUT = T IS NOT COUNTED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
665 C AS A FIRST CALL HERE, AS NO INITIALIZATION OR CHECKING OF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
666 C INPUT IS DONE. (SUCH A CALL IS SOMETIMES USEFUL FOR THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
667 C PURPOSE OF OUTPUTTING THE INITIAL CONDITIONS.)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
668 C THUS THE FIRST CALL FOR WHICH TOUT .NE. T REQUIRES
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
669 C ISTATE = 1 ON INPUT.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
670 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
671 C ON OUTPUT, ISTATE HAS THE FOLLOWING VALUES AND MEANINGS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
672 C 1 MEANS NOTHING WAS DONE, AS TOUT WAS EQUAL TO T WITH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
673 C ISTATE = 1 ON INPUT. (HOWEVER, AN INTERNAL COUNTER WAS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
674 C SET TO DETECT AND PREVENT REPEATED CALLS OF THIS TYPE.)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
675 C 2 MEANS THE INTEGRATION WAS PERFORMED SUCCESSFULLY.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
676 C -1 MEANS AN EXCESSIVE AMOUNT OF WORK (MORE THAN MXSTEP
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
677 C STEPS) WAS DONE ON THIS CALL, BEFORE COMPLETING THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
678 C REQUESTED TASK, BUT THE INTEGRATION WAS OTHERWISE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
679 C SUCCESSFUL AS FAR AS T. (MXSTEP IS AN OPTIONAL INPUT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
680 C AND IS NORMALLY 500.) TO CONTINUE, THE USER MAY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
681 C SIMPLY RESET ISTATE TO A VALUE .GT. 1 AND CALL AGAIN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
682 C (THE EXCESS WORK STEP COUNTER WILL BE RESET TO 0).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
683 C IN ADDITION, THE USER MAY INCREASE MXSTEP TO AVOID
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
684 C THIS ERROR RETURN (SEE BELOW ON OPTIONAL INPUTS).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
685 C -2 MEANS TOO MUCH ACCURACY WAS REQUESTED FOR THE PRECISION
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
686 C OF THE MACHINE BEING USED. THIS WAS DETECTED BEFORE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
687 C COMPLETING THE REQUESTED TASK, BUT THE INTEGRATION
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
688 C WAS SUCCESSFUL AS FAR AS T. TO CONTINUE, THE TOLERANCE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
689 C PARAMETERS MUST BE RESET, AND ISTATE MUST BE SET
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
690 C TO 3. THE OPTIONAL OUTPUT TOLSF MAY BE USED FOR THIS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
691 C PURPOSE. (NOTE.. IF THIS CONDITION IS DETECTED BEFORE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
692 C TAKING ANY STEPS, THEN AN ILLEGAL INPUT RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
693 C (ISTATE = -3) OCCURS INSTEAD.)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
694 C -3 MEANS ILLEGAL INPUT WAS DETECTED, BEFORE TAKING ANY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
695 C INTEGRATION STEPS. SEE WRITTEN MESSAGE FOR DETAILS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
696 C NOTE.. IF THE SOLVER DETECTS AN INFINITE LOOP OF CALLS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
697 C TO THE SOLVER WITH ILLEGAL INPUT, IT WILL CAUSE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
698 C THE RUN TO STOP.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
699 C -4 MEANS THERE WERE REPEATED ERROR TEST FAILURES ON
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
700 C ONE ATTEMPTED STEP, BEFORE COMPLETING THE REQUESTED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
701 C TASK, BUT THE INTEGRATION WAS SUCCESSFUL AS FAR AS T.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
702 C THE PROBLEM MAY HAVE A SINGULARITY, OR THE INPUT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
703 C MAY BE INAPPROPRIATE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
704 C -5 MEANS THERE WERE REPEATED CONVERGENCE TEST FAILURES ON
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
705 C ONE ATTEMPTED STEP, BEFORE COMPLETING THE REQUESTED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
706 C TASK, BUT THE INTEGRATION WAS SUCCESSFUL AS FAR AS T.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
707 C THIS MAY BE CAUSED BY AN INACCURATE JACOBIAN MATRIX,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
708 C IF ONE IS BEING USED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
709 C -6 MEANS EWT(I,J) BECAME ZERO FOR SOME I,J DURING THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
710 C INTEGRATION. PURE RELATIVE ERROR CONTROL (ATOL(I,J)=0.0)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
711 C WAS REQUESTED ON A VARIABLE WHICH HAS NOW VANISHED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
712 C THE INTEGRATION WAS SUCCESSFUL AS FAR AS T.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
713 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
714 C NOTE.. SINCE THE NORMAL OUTPUT VALUE OF ISTATE IS 2,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
715 C IT DOES NOT NEED TO BE RESET FOR NORMAL CONTINUATION.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
716 C ALSO, SINCE A NEGATIVE INPUT VALUE OF ISTATE WILL BE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
717 C REGARDED AS ILLEGAL, A NEGATIVE OUTPUT VALUE REQUIRES THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
718 C USER TO CHANGE IT, AND POSSIBLY OTHER INPUTS, BEFORE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
719 C CALLING THE SOLVER AGAIN.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
720 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
721 C IOPT = AN INTEGER ARRAY FLAG TO SPECIFY WHETHER OR NOT ANY OPTIONAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
722 C INPUTS ARE BEING USED ON THIS CALL. INPUT ONLY.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
723 C THE OPTIONAL INPUTS ARE LISTED SEPARATELY BELOW.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
724 C IOPT(1) = 0 MEANS NO OPTIONAL INPUTS FOR THE SOLVER WILL BE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
725 C USED. DEFAULT VALUES WILL BE USED IN ALL CASES.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
726 C = 1 MEANS ONE OR MORE OPTIONAL INPUTS FOR THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
727 C SOLVER ARE BEING USED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
728 C NOTE : IOPT(1) IS INDEPENDENT OF ISOPT AND IDF.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
729 C IOPT(2) = 0 MEANS NO SENSITIVITY ANALYSIS WILL BE PERFORMED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
730 C = 1 MEANS A SENSITIVITY ANALYSIS WILL BE PERFORMED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
731 C NOTE : IOPT(2) IS RENAMED TO ISOPT IN ODESSA.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
732 C = 0 MEANS DF/DP WILL BE CALCULATED BY FINITE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
733 C DIFFERENCE WITHIN ODESSA.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
734 C IOPT(3) = 1 MEANS DF/DP WILL BE CALCULATED BY A USER-SUPPLIED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
735 C ROUTINE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
736 C NOTE : IOPT(3) IS RENAMED TO IDF IN ODESSA.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
737 C IF IDF = 1, THE USER MUST SUPPLY A
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
738 C SUBROUTINE DF (THE NAME IS ARBITRARY) AS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
739 C DESCRIBED BELOW UNDER DF. FOR IDF = 0,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
740 C A DUMMY ARGUMENT CAN BE USED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
741 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
742 C RWORK = A REAL WORKING ARRAY (DOUBLE PRECISION).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
743 C FOR ISOPT = 0, THE LENGTH OF RWORK MUST BE AT LEAST..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
744 C 20 + NYH*(MAXORD + 1) + 3*NEQ + LWM
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
745 C FOR ISOPT = 1, THE LENGTH OF RWORK MUST BE AT LEAST..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
746 C 20 + NYH*(MAXORD + 1) + 2*NYH + LWM + N
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
747 C WHERE..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
748 C NYH = THE TOTAL NUMBER OF DEPENDENT VARIABLES;
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
749 C (= N IF ISOPT = 0, AND N*(NPAR+1) IF ISOPT = 1).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
750 C MAXORD = 12 (IF METH = 1) OR 5 (IF METH = 2) (UNLESS A
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
751 C SMALLER VALUE IS GIVEN AS AN OPTIONAL INPUT),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
752 C LWM = 0 IF MITER = 0,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
753 C LWM = N**2 + 2 IF MITER IS 1 OR 2,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
754 C LWM = N + 2 IF MITER = 3, AND
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
755 C LWM = (2*ML+MU+1)*N + 2 IF MITER IS 4 OR 5.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
756 C (SEE THE MF DESCRIPTION FOR METH AND MITER.)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
757 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
758 C THE FIRST 20 WORDS OF RWORK ARE RESERVED FOR CONDITIONAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
759 C AND OPTIONAL INPUTS AND OPTIONAL OUTPUTS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
760 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
761 C THE FOLLOWING WORD IN RWORK IS A CONDITIONAL INPUT..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
762 C RWORK(1) = TCRIT = CRITICAL VALUE OF T WHICH THE SOLVER
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
763 C IS NOT TO OVERSHOOT. REQUIRED IF ITASK IS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
764 C 4 OR 5, AND IGNORED OTHERWISE. (SEE ITASK.)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
765 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
766 C LRW = THE LENGTH OF THE ARRAY RWORK, AS DECLARED BY THE USER.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
767 C (THIS WILL BE CHECKED BY THE SOLVER.)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
768 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
769 C IWORK = AN INTEGER WORK ARRAY. THE LENGTH MUST BE AT LEAST..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
770 C 20 IF MITER = 0 OR 3 (MF = 10, 13, 20, 23), OR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
771 C 20 + N OTHERWISE (MF = 11, 12, 14, 15, 21, 22, 24, 25).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
772 C FOR ISOPT = 0, OR..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
773 C 21 + N + NPAR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
774 C FOR ISOPT = 1.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
775 C THE FIRST FEW WORDS OF IWORK ARE USED FOR CONDITIONAL AND
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
776 C OPTIONAL INPUTS AND OPTIONAL OUTPUTS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
777 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
778 C THE FOLLOWING 2 WORDS IN IWORK ARE CONDITIONAL INPUTS..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
779 C IWORK(1) = ML THESE ARE THE LOWER AND UPPER
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
780 C IWORK(2) = MU HALF-BANDWIDTHS, RESPECTIVELY, OF THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
781 C BANDED JACOBIAN, EXCLUDING THE MAIN DIAGONAL.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
782 C THE BAND IS DEFINED BY THE MATRIX LOCATIONS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
783 C (I,J) WITH I-ML .LE. J .LE. I+MU. ML AND MU
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
784 C MUST SATISFY 0 .LE. ML,MU .LE. NEQ-1.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
785 C THESE ARE REQUIRED IF MITER IS 4 OR 5, AND
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
786 C IGNORED OTHERWISE. ML AND MU MAY IN FACT BE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
787 C THE BAND PARAMETERS FOR A MATRIX TO WHICH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
788 C DF/DY IS ONLY APPROXIMATELY EQUAL.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
789 *
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
790 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
791 C LIW = THE LENGTH OF THE ARRAY IWORK, AS DECLARED BY THE USER.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
792 C (THIS WILL BE CHECKED BY THE SOLVER.)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
793 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
794 C NOTE.. THE WORK ARRAYS MUST NOT BE ALTERED BETWEEN CALLS TO ODESSA
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
795 C FOR THE SAME PROBLEM, EXCEPT POSSIBLY FOR THE CONDITIONAL AND
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
796 C OPTIONAL INPUTS, AND EXCEPT FOR THE LAST 2*NYH + N WORDS OF RWORK.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
797 C THE LATTER SPACE IS USED FOR INTERNAL SCRATCH SPACE, AND SO IS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
798 C AVAILABLE FOR USE BY THE USER OUTSIDE ODESSA BETWEEN CALLS, IF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
799 C DESIRED (BUT NOT FOR USE BY F, DF, OR JAC).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
800 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
801 C JAC = THE NAME OF THE USER-SUPPLIED ROUTINE (MITER = 1 OR 4) TO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
802 C COMPUTE THE JACOBIAN MATRIX, DF/DY, AS A FUNCTION OF THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
803 C SCALAR T AND THE VECTORS Y, AND PAR. IT IS TO HAVE THE FORM
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
804 C SUBROUTINE JAC (NEQ, T, Y, PAR, ML, MU, PD, NROWPD)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
805 C DOUBLE PRECISION T, Y, PAR, PD
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
806 C DIMENSION Y(1), PAR(1), PD(NROWPD,1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
807 C WHERE NEQ, T, Y, PAR, ML, MU, AND NROWPD ARE INPUT AND THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
808 C ARRAY PD IS TO BE LOADED WITH PARTIAL DERIVATIVES (ELEMENTS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
809 C OF THE JACOBIAN MATRIX) ON OUTPUT. PD MUST BE GIVEN A FIRST
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
810 C DIMENSION OF NROWPD. T, Y, AND PAR HAVE THE SAME MEANING AS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
811 C IN SUBROUTINE F. (IN THE DIMENSION STATEMENT ABOVE, 1 IS A
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
812 C DUMMY DIMENSION.. IT CAN BE REPLACED BY ANY VALUE.)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
813 C IN THE FULL MATRIX CASE (MITER = 1), ML AND MU ARE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
814 C IGNORED, AND THE JACOBIAN IS TO BE LOADED INTO PD IN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
815 C COLUMNWISE MANNER, WITH DF(I)/DY(J) LOADED INTO PD(I,J).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
816 C IN THE BAND MATRIX CASE (MITER = 4), THE ELEMENTS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
817 C WITHIN THE BAND ARE TO BE LOADED INTO PD IN COLUMNWISE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
818 C MANNER, WITH DIAGONAL LINES OF DF/DY LOADED INTO THE ROWS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
819 C OF PD. THUS DF(I)/DY(J) IS TO BE LOADED INTO PD(I-J+MU+1,J).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
820 C ML AND MU ARE THE HALF-BANDWIDTH PARAMETERS (SEE IWORK).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
821 C THE LOCATIONS IN PD IN THE TWO TRIANGULAR AREAS WHICH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
822 C CORRESPOND TO NONEXISTENT MATRIX ELEMENTS CAN BE IGNORED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
823 C OR LOADED ARBITRARILY, AS THEY ARE OVERWRITTEN BY ODESSA.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
824 C PD IS PRESET TO ZERO BY THE SOLVER, SO THAT ONLY THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
825 C NONZERO ELEMENTS NEED BE LOADED BY JAC. EACH CALL TO JAC IS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
826 C PRECEDED BY A CALL TO F WITH THE SAME ARGUMENTS NEQ, T, Y,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
827 C AND PAR. THUS TO GAIN SOME EFFICIENCY, INTERMEDIATE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
828 C QUANTITIES SHARED BY BOTH CALCULATIONS MAY BE SAVED IN A
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
829 C USER COMMON BLOCK BY F AND NOT RECOMPUTED BY JAC, IF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
830 C DESIRED. ALSO, JAC MAY ALTER THE Y ARRAY, IF DESIRED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
831 C JAC MUST BE DECLARED EXTERNAL IN THE CALLING PROGRAM.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
832 C SUBROUTINE JAC MAY ACCESS USER-DEFINED QUANTITIES IN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
833 C NEQ(2),... AND PAR(NPAR+1),.... SEE THE DESCRIPTIONS OF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
834 C NEQ (ABOVE) AND PAR (BELOW).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
835 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
836 C MF = THE METHOD FLAG. USED ONLY FOR INPUT. THE LEGAL VALUES OF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
837 C MF ARE 10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24, AND 25.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
838 C MF HAS DECIMAL DIGITS METH AND MITER.. MF = 10*METH + MITER.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
839 C METH INDICATES THE BASIC LINEAR MULTISTEP METHOD..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
840 C METH = 1 MEANS THE IMPLICIT ADAMS METHOD.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
841 *
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
842 C METH = 2 MEANS THE METHOD BASED ON BACKWARD
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
843 C DIFFERENTIATION FORMULAS (BDF-S).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
844 C MITER INDICATES THE CORRECTOR ITERATION METHOD..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
845 C MITER = 0 MEANS FUNCTIONAL ITERATION (NO JACOBIAN MATRIX
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
846 C IS INVOLVED).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
847 C MITER = 1 MEANS CHORD ITERATION WITH A USER-SUPPLIED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
848 C FULL (NEQ BY NEQ) JACOBIAN.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
849 C MITER = 2 MEANS CHORD ITERATION WITH AN INTERNALLY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
850 C GENERATED (DIFFERENCE QUOTIENT) FULL JACOBIAN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
851 C (USING NEQ EXTRA CALLS TO F PER DF/DY VALUE).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
852 C MITER = 3 MEANS CHORD ITERATION WITH AN INTERNALLY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
853 C GENERATED DIAGONAL JACOBIAN APPROXIMATION.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
854 C (USING 1 EXTRA CALL TO F PER DF/DY EVALUATION).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
855 C MITER = 4 MEANS CHORD ITERATION WITH A USER-SUPPLIED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
856 C BANDED JACOBIAN.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
857 C MITER = 5 MEANS CHORD ITERATION WITH AN INTERNALLY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
858 C GENERATED BANDED JACOBIAN (USING ML+MU+1 EXTRA
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
859 C CALLS TO F PER DF/DY EVALUATION).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
860 C IF MITER = 1 OR 4, THE USER MUST SUPPLY A SUBROUTINE JAC
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
861 C (THE NAME IS ARBITRARY) AS DESCRIBED ABOVE UNDER JAC.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
862 C FOR OTHER VALUES OF MITER, A DUMMY ARGUMENT CAN BE USED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
863 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
864 C IF A SENSITIVITY ANLYSIS IS DESIRED (ISOPT = 1), MITER = 0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
865 C AND 3 ARE DISALLOWED. IN THESE CASES, THE USER IS RECOMMENDED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
866 C TO SUPPLY AN ANALYTICAL JACOBIAN (MITER = 1 OR 4) AND AN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
867 C ANALYTICAL INHOMOGENEITY MATRIX (IDF = 1).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
868 C----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
869 C OPTIONAL INPUTS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
870 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
871 C THE FOLLOWING IS A LIST OF THE OPTIONAL INPUTS PROVIDED FOR IN THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
872 C CALL SEQUENCE. (SEE ALSO PART II.) FOR EACH SUCH INPUT VARIABLE,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
873 C THIS TABLE LISTS ITS NAME AS USED IN THIS DOCUMENTATION, ITS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
874 C LOCATION IN THE CALL SEQUENCE, ITS MEANING, AND THE DEFAULT VALUE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
875 C THE USE OF ANY OF THESE INPUTS REQUIRES IOPT(1) = 1, AND IN THAT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
876 C CASE ALL OF THESE INPUTS ARE EXAMINED. A VALUE OF ZERO FOR ANY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
877 C OF THESE OPTIONAL INPUTS WILL CAUSE THE DEFAULT VALUE TO BE USED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
878 C THUS TO USE A SUBSET OF THE OPTIONAL INPUTS, SIMPLY PRELOAD
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
879 C LOCATIONS 5 TO 10 IN RWORK AND IWORK TO 0.0 AND 0 RESPECTIVELY, AND
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
880 C THEN SET THOSE OF INTEREST TO NONZERO VALUES.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
881 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
882 C NAME LOCATION MEANING AND DEFAULT VALUE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
883 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
884 C H0 RWORK(5) THE STEP SIZE TO BE ATTEMPTED ON THE FIRST STEP.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
885 C THE DEFAULT VALUE IS DETERMINED BY THE SOLVER.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
886 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
887 C HMAX RWORK(6) THE MAXIMUM ABSOLUTE STEP SIZE ALLOWED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
888 C THE DEFAULT VALUE IS INFINITE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
889 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
890 C HMIN RWORK(7) THE MINIMUM ABSOLUTE STEP SIZE ALLOWED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
891 C THE DEFAULT VALUE IS 0. (THIS LOWER BOUND IS NOT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
892 C ENFORCED ON THE FINAL STEP BEFORE REACHING TCRIT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
893 C WHEN ITASK = 4 OR 5.)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
894 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
895 C MAXORD IWORK(5) THE MAXIMUM ORDER TO BE ALLOWED. THE DEFAULT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
896 C VALUE IS 12 IF METH = 1, AND 5 IF METH = 2.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
897 C IF MAXORD EXCEEDS THE DEFAULT VALUE, IT WILL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
898 C BE REDUCED TO THE DEFAULT VALUE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
899 C IF MAXORD IS CHANGED DURING THE PROBLEM, IT MAY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
900 C CAUSE THE CURRENT ORDER TO BE REDUCED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
901 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
902 C MXSTEP IWORK(6) MAXIMUM NUMBER OF (INTERNALLY DEFINED) STEPS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
903 C ALLOWED DURING ONE CALL TO THE SOLVER.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
904 C THE DEFAULT VALUE IS 500.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
905 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
906 C MXHNIL IWORK(7) MAXIMUM NUMBER OF MESSAGES PRINTED (PER PROBLEM)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
907 C WARNING THAT T + H = T ON A STEP (H = STEP SIZE).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
908 C THIS MUST BE POSITIVE TO RESULT IN A NON-DEFAULT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
909 C VALUE. THE DEFAULT VALUE IS 10.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
910 C----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
911 C OPTIONAL OUTPUTS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
912 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
913 C AS OPTIONAL ADDITIONAL OUTPUT FROM ODESSA, THE VARIABLES LISTED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
914 C BELOW ARE QUANTITIES RELATED TO THE PERFORMANCE OF ODESSA
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
915 C WHICH ARE AVAILABLE TO THE USER. THESE ARE COMMUNICATED BY WAY OF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
916 C THE WORK ARRAYS, BUT ALSO HAVE INTERNAL MNEMONIC NAMES AS SHOWN.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
917 C EXCEPT WHERE STATED OTHERWISE, ALL OF THESE OUTPUTS ARE DEFINED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
918 C ON ANY SUCCESSFUL RETURN FROM ODESSA, AND ON ANY RETURN WITH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
919 C ISTATE = -1, -2, -4, -5, OR -6. ON AN ILLEGAL INPUT RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
920 C (ISTATE = -3), THEY WILL BE UNCHANGED FROM THEIR EXISTING VALUES
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
921 C (IF ANY), EXCEPT POSSIBLY FOR TOLSF, LENRW, AND LENIW.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
922 C ON ANY ERROR RETURN, OUTPUTS RELEVANT TO THE ERROR WILL BE DEFINED,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
923 C AS NOTED BELOW.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
924 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
925 C NAME LOCATION MEANING
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
926 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
927 C HU RWORK(11) THE STEP SIZE IN T LAST USED (SUCCESSFULLY).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
928 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
929 C HCUR RWORK(12) THE STEP SIZE TO BE ATTEMPTED ON THE NEXT STEP.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
930 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
931 C TCUR RWORK(13) THE CURRENT VALUE OF THE INDEPENDENT VARIABLE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
932 C WHICH THE SOLVER HAS ACTUALLY REACHED, I.E. THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
933 C CURRENT INTERNAL MESH POINT IN T. ON OUTPUT, TCUR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
934 C WILL ALWAYS BE AT LEAST AS FAR AS THE ARGUMENT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
935 C T, BUT MAY BE FARTHER (IF INTERPOLATION WAS DONE).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
936 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
937 C TOLSF RWORK(14) A TOLERANCE SCALE FACTOR, GREATER THAN 1.0,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
938 C COMPUTED WHEN A REQUEST FOR TOO MUCH ACCURACY WAS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
939 C DETECTED (ISTATE = -3 IF DETECTED AT THE START OF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
940 C THE PROBLEM, ISTATE = -2 OTHERWISE). IF ITOL IS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
941 C LEFT UNALTERED BUT RTOL AND ATOL ARE UNIFORMLY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
942 C SCALED UP BY A FACTOR OF TOLSF FOR THE NEXT CALL,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
943 C THEN THE SOLVER IS DEEMED LIKELY TO SUCCEED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
944 C (THE USER MAY ALSO IGNORE TOLSF AND ALTER THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
945 C TOLERANCE PARAMETERS IN ANY OTHER WAY APPROPRIATE.)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
946 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
947 C NST IWORK(11) THE NUMBER OF STEPS TAKEN FOR THE PROBLEM SO FAR.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
948 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
949 C NFE IWORK(12) THE NUMBER OF F EVALUATIONS FOR THE PROBLEM SO FAR.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
950 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
951 C NJE IWORK(13) THE NUMBER OF JACOBIAN EVALUATIONS (AND OF MATRIX
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
952 C LU DECOMPOSITIONS IF ISOPT = 0) FOR THE PROBLEM SO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
953 C FAR. IF ISOPT = 1, THE NUMBER OF LU DECOMPOSITIONS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
954 C IS EQUAL TO NJE - NSPE (SEE BELOW).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
955 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
956 C NQU IWORK(14) THE METHOD ORDER LAST USED (SUCCESSFULLY).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
957 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
958 C NQCUR IWORK(15) THE ORDER TO BE ATTEMPTED ON THE NEXT STEP.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
959 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
960 C IMXER IWORK(16) THE INDEX OF THE COMPONENT OF LARGEST MAGNITUDE IN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
961 C THE WEIGHTED LOCAL ERROR VECTOR (E(I,J)/EWT(I,J)),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
962 C ON AN ERROR RETURN WITH ISTATE = -4 OR -5.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
963 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
964 C LENRW IWORK(17) THE LENGTH OF RWORK ACTUALLY REQUIRED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
965 C THIS IS DEFINED ON NORMAL RETURNS AND ON AN ILLEGAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
966 C INPUT RETURN FOR INSUFFICIENT STORAGE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
967 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
968 C LENIW IWORK(18) THE LENGTH OF IWORK ACTUALLY REQUIRED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
969 C THIS IS DEFINED ON NORMAL RETURNS AND ON AN ILLEGAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
970 C INPUT RETURN FOR INSUFFICIENT STORAGE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
971 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
972 C NDFE IWORK(19) THE NUMBER OF DF/DP (VECTOR) EVALUATIONS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
973 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
974 C NSPE IWORK(20) THE NUMBER OF CALLS TO SUBROUTINE ODESSA_SPRIME. EACH CALL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
975 C TO ODESSA_SPRIME REQUIRES A JACOBIAN EVALUATION, BUT NOT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
976 C AN LU DECOMPOSITION.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
977 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
978 C THE FOLLOWING ARRAYS ARE SEGMENTS OF THE RWORK AND IWORK ARRAYS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
979 C WHICH MAY ALSO BE OF INTEREST TO THE USER AS OPTIONAL OUTPUTS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
980 C FOR EACH ARRAY, THE TABLE BELOW GIVES ITS INTERNAL NAME, ITS BASE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
981 C ADDRESS IN RWORK OR IWORK, AND ITS DESCRIPTION.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
982 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
983 C NAME BASE ADDRESS DESCRIPTION
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
984 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
985 C YH 21 IN RWORK THE NORDSIECK HISTORY ARRAY, OF SIZE NYH BY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
986 C (NQCUR + 1). FOR J = 0,1,...,NQCUR, COLUMN J+1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
987 C OF YH CONTAINS HCUR**J/FACTORIAL(J) TIMES
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
988 C THE J-TH DERIVATIVE OF THE INTERPOLATING
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
989 C POLYNOMIAL CURRENTLY REPRESENTING THE SOLUTION,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
990 C EVALUATED AT T = TCUR.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
991 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
992 C ACOR LENRW-NYH+1 ARRAY OF SIZE NYH USED FOR THE ACCUMULATED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
993 C IN RWORK CORRECTIONS ON EACH STEP, SCALED ON OUTPUT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
994 C TO REPRESENT THE ESTIMATED LOCAL ERROR IN Y
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
995 C ON THE LAST STEP. THIS IS THE VECTOR E IN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
996 C THE DESCRIPTION OF THE ERROR CONTROL.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
997 C IT IS DEFINED ONLY ON A SUCCESSFUL RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
998 C FROM ODESSA.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
999 C NRS LENIW-NPAR ARRAY OF SIZE NPAR+1, USED TO STORE THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1000 C IN IWORK ACCUMULATED NUMBER OF REPEATED STEPS DUE TO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1001 C THE SENSITIVITY ANALYSIS..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1002 C NRS(1) = TOTAL NUMBER OF REPEATED STEPS,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1003 C NRS(2),... = NUMBER OF REPEATED STEPS DUE TO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1004 C MODEL PARAMETER 1,...
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1005 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1006 C----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1007 C PART II. OTHER ROUTINES CALLABLE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1008 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1009 C THE FOLLOWING ARE OPTIONAL CALLS WHICH THE USER MAY MAKE TO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1010 C GAIN ADDITIONAL CAPABILITIES IN CONJUNCTION WITH ODESSA.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1011 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1012 C CALL ODESSA_SVCOM (RSAV, ISAV) STORE IN RSAV AND ISAV THE CONTENTS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1013 C OF THE INTERNAL COMMON BLOCKS USED BY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1014 C ODESSA (SEE PART III BELOW).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1015 C RSAV MUST BE A REAL ARRAY OF LENGTH 222
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1016 C OR MORE, AND ISAV MUST BE AN INTEGER
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1017 C ARRAY OF LENGTH 54 OR MORE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1018 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1019 C CALL ODESSA_RSCOM (RSAV, ISAV) RESTORE, FROM RSAV AND ISAV, THE CONTENTS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1020 C OF THE INTERNAL COMMON BLOCKS USED BY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1021 C ODESSA. PRESUMES A PRIOR CALL TO ODESSA_SVCOM
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1022 C WITH THE SAME ARGUMENTS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1023 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1024 C ODESSA_SVCOM AND ODESSA_RSCOM ARE USEFUL IF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1025 C INTERRUPTING A RUN AND RESTARTING
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1026 C LATER, OR ALTERNATING BETWEEN TWO OR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1027 C MORE PROBLEMS SOLVED WITH ODESSA.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1028 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1029 C CALL ODESSA_INTDY(,,,,,) PROVIDE DERIVATIVES OF Y, OF VARIOUS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1030 C (SEE BELOW) ORDERS, AT A SPECIFIED POINT T, IF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1031 C DESIRED. IT MAY BE CALLED ONLY AFTER
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1032 C A SUCCESSFUL RETURN FROM ODESSA.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1033 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1034 C THE DETAILED INSTRUCTIONS FOR USING ODESSA_INTDY ARE AS FOLLOWS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1035 C THE FORM OF THE CALL IS..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1036 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1037 C CALL ODESSA_INTDY (T, K, RWORK(21), NYH, DKY, IFLAG)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1038 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1039 C THE INPUT PARAMETERS ARE..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1040 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1041 C T = VALUE OF INDEPENDENT VARIABLE WHERE ANSWERS ARE DESIRED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1042 C (NORMALLY THE SAME AS THE T LAST RETURNED BY ODESSA).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1043 C FOR VALID RESULTS, T MUST LIE BETWEEN TCUR - HU AND TCUR.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1044 C (SEE OPTIONAL OUTPUTS FOR TCUR AND HU.)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1045 C K = INTEGER ORDER OF THE DERIVATIVE DESIRED. K MUST SATISFY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1046 C 0 .LE. K .LE. NQCUR, WHERE NQCUR IS THE CURRENT ORDER
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1047 C (SEE OPTIONAL OUTPUTS). THE CAPABILITY CORRESPONDING
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1048 C TO K = 0, I.E. COMPUTING Y(T), IS ALREADY PROVIDED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1049 C BY ODESSA DIRECTLY. SINCE NQCUR .GE. 1, THE FIRST
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1050 C DERIVATIVE DY/DT IS ALWAYS AVAILABLE WITH ODESSA_INTDY.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1051 C RWORK(21) = THE BASE ADDRESS OF THE HISTORY ARRAY YH.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1052 C NYH = COLUMN LENGTH OF YH, EQUAL TO THE TOTAL NUMBER OF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1053 C DEPENDENT VARIABLES. IF ISOPT = 0, NYH = N. IF ISOPT = 1,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1054 C NYH = N * (NPAR + 1).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1055 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1056 C THE OUTPUT PARAMETERS ARE..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1057 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1058 C DKY = A REAL ARRAY OF LENGTH NYH CONTAINING THE COMPUTED VALUE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1059 C OF THE K-TH DERIVATIVE OF Y(T).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1060 C IFLAG = INTEGER FLAG, RETURNED AS 0 IF K AND T WERE LEGAL,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1061 C -1 IF K WAS ILLEGAL, AND -2 IF T WAS ILLEGAL.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1062 C ON AN ERROR RETURN, A MESSAGE IS ALSO WRITTEN.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1063 C----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1064 C PART III. COMMON BLOCKS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1065 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1066 C IF ODESSA IS TO BE USED IN AN OVERLAY SITUATION, THE USER
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1067 C MUST DECLARE, IN THE PRIMARY OVERLAY, THE VARIABLES IN..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1068 C (1) THE CALL SEQUENCE TO ODESSA,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1069 C (2) THE THREE INTERNAL COMMON BLOCKS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1070 C /ODE001/ OF LENGTH 258 (219 DOUBLE PRECISION WORDS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1071 C FOLLOWED BY 39 INTEGER WORDS),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1072 C /ODE002/ OF LENGTH 14 (3 DOUBLE PRECISION WORDS FOLLOWED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1073 C BY 11 INTEGER WORDS),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1074 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1075 C IF ODESSA IS USED ON A SYSTEM IN WHICH THE CONTENTS OF INTERNAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1076 C COMMON BLOCKS ARE NOT PRESERVED BETWEEN CALLS, THE USER SHOULD
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1077 C DECLARE THE ABOVE THREE COMMON BLOCKS IN HIS MAIN PROGRAM TO INSURE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1078 C THAT THEIR CONTENTS ARE PRESERVED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1079 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1080 C IF THE SOLUTION OF A GIVEN PROBLEM BY ODESSA IS TO BE INTERRUPTED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1081 C AND THEN LATER CONTINUED, SUCH AS WHEN RESTARTING AN INTERRUPTED RUN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1082 C OR ALTERNATING BETWEEN TWO OR MORE PROBLEMS, THE USER SHOULD SAVE,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1083 C FOLLOWING THE RETURN FROM THE LAST ODESSA CALL PRIOR TO THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1084 C INTERRUPTION, THE CONTENTS OF THE CALL SEQUENCE VARIABLES AND THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1085 C INTERNAL COMMON BLOCKS, AND LATER RESTORE THESE VALUES BEFORE THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1086 C NEXT ODESSA CALL FOR THAT PROBLEM. TO SAVE AND RESTORE THE COMMON
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1087 C BLOCKS, USE SUBROUTINES ODESSA_SVCOM AND ODESSA_RSCOM (SEE PART II ABOVE).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1088 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1089 C----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1090 C PART IV. OPTIONALLY REPLACEABLE SOLVER ROUTINES.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1091 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1092 C BELOW ARE DESCRIPTIONS OF TWO ROUTINES IN THE ODESSA PACKAGE WHICH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1093 C RELATE TO THE MEASUREMENT OF ERRORS. EITHER ROUTINE CAN BE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1094 C REPLACED BY A USER-SUPPLIED VERSION, IF DESIRED. HOWEVER, SINCE SUCH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1095 C A REPLACEMENT MAY HAVE A MAJOR IMPACT ON PERFORMANCE, IT SHOULD BE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1096 C DONE ONLY WHEN ABSOLUTELY NECESSARY, AND ONLY WITH GREAT CAUTION.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1097 C (NOTE.. THE MEANS BY WHICH THE PACKAGE VERSION OF A ROUTINE IS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1098 C SUPERSEDED BY THE USER-S VERSION MAY BE SYSTEM-DEPENDENT.)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1099 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1100 C (A) ODESSA_EWSET.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1101 C THE FOLLOWING SUBROUTINE IS CALLED JUST BEFORE EACH INTERNAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1102 C INTEGRATION STEP, AND SETS THE ARRAY OF ERROR WEIGHTS, EWT, AS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1103 C DESCRIBED UNDER ITOL/RTOL/ATOL ABOVE..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1104 C SUBROUTINE ODESSA_EWSET (NYH, ITOL, RTOL, ATOL, YCUR, EWT)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1105 C WHERE NEQ, ITOL, RTOL, AND ATOL ARE AS IN THE ODESSA CALL SEQUENCE,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1106 C YCUR CONTAINS THE CURRENT DEPENDENT VARIABLE VECTOR, AND
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1107 C EWT IS THE ARRAY OF WEIGHTS SET BY ODESSA_EWSET.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1108 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1109 C IF THE USER SUPPLIES THIS SUBROUTINE, IT MUST RETURN IN EWT(I)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1110 C (I = 1,...,NYH) A POSITIVE QUANTITY SUITABLE FOR COMPARING ERRORS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1111 C IN Y(I) TO. THE EWT ARRAY RETURNED BY ODESSA_EWSET IS PASSED TO THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1112 C ODESSA_VNORM ROUTINE (SEE BELOW), AND ALSO USED BY ODESSA IN THE COMPUTATION
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1113 C OF THE OPTIONAL OUTPUT IMXER, THE DIAGONAL JACOBIAN APPROXIMATION,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1114 C AND THE INCREMENTS FOR DIFFERENCE QUOTIENT JACOBIANS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1115 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1116 C IN THE USER-SUPPLIED VERSION OF ODESSA_EWSET, IT MAY BE DESIRABLE TO USE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1117 C THE CURRENT VALUES OF DERIVATIVES OF Y. DERIVATIVES UP TO ORDER NQ
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1118 C ARE AVAILABLE FROM THE HISTORY ARRAY YH, DESCRIBED ABOVE UNDER
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1119 C OPTIONAL OUTPUTS. IN ODESSA_EWSET, YH IS IDENTICAL TO THE YCUR ARRAY,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1120 C EXTENDED TO NQ + 1 COLUMNS WITH A COLUMN LENGTH OF NYH AND SCALE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1121 C FACTORS OF H**J/FACTORIAL(J). ON THE FIRST CALL FOR THE PROBLEM,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1122 C GIVEN BY NST = 0, NQ IS 1 AND H IS TEMPORARILY SET TO 1.0.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1123 C THE QUANTITIES NQ, NYH, H, AND NST CAN BE OBTAINED BY INCLUDING
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1124 C IN ODESSA_EWSET THE STATEMENTS..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1125 C DOUBLE PRECISION H, RLS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1126 C COMMON /ODE001/ RLS(219),ILS(39)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1127 C NQ = ILS(35)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1128 C NYH = ILS(14)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1129 C NST = ILS(36)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1130 C H = RLS(213)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1131 C THUS, FOR EXAMPLE, THE CURRENT VALUE OF DY/DT CAN BE OBTAINED AS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1132 C YCUR(NYH+I)/H (I=1,...,N) (AND THE DIVISION BY H IS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1133 C UNNECESSARY WHEN NST = 0).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1134 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1135 C (B) ODESSA_VNORM.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1136 C THE FOLLOWING IS A REAL FUNCTION ROUTINE WHICH COMPUTES THE WEIGHTED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1137 C ROOT-MEAN-SQUARE NORM OF A VECTOR V..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1138 C D = ODESSA_VNORM (LV, V, W)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1139 C WHERE..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1140 C LV = THE LENGTH OF THE VECTOR,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1141 C V = REAL ARRAY OF LENGTH N CONTAINING THE VECTOR,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1142 C W = REAL ARRAY OF LENGTH N CONTAINING WEIGHTS,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1143 C D = SQRT( (1/N) * SUM(V(I)*W(I))**2 ).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1144 C ODESSA_VNORM IS CALLED WITH LV = N AND WITH W(I) = 1.0/EWT(I), WHERE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1145 C EWT IS AS SET BY SUBROUTINE ODESSA_EWSET.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1146 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1147 C IF THE USER SUPPLIES THIS FUNCTION, IT SHOULD RETURN A NON-NEGATIVE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1148 C VALUE OF ODESSA_VNORM SUITABLE FOR USE IN THE ERROR CONTROL IN ODESSA.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1149 C NONE OF THE ARGUMENTS SHOULD BE ALTERED BY ODESSA_VNORM.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1150 C FOR EXAMPLE, A USER-SUPPLIED ODESSA_VNORM ROUTINE MIGHT..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1151 C -SUBSTITUTE A MAX-NORM OF (V(I)*W(I)) FOR THE RMS-NORM, OR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1152 C -IGNORE SOME COMPONENTS OF V IN THE NORM, WITH THE EFFECT OF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1153 C SUPPRESSING THE ERROR CONTROL ON THOSE COMPONENTS OF Y.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1154 C----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1155 C OTHER ROUTINES IN THE ODESSA PACKAGE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1156 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1157 C IN ADDITION TO SUBROUTINE ODESSA, THE ODESSA PACKAGE INCLUDES THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1158 C FOLLOWING SUBROUTINES AND FUNCTION ROUTINES..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1159 C ODESSA_INTDY COMPUTES AN INTERPOLATED VALUE OF THE Y VECTOR AT T = TOUT.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1160 C ODESSA_STODE IS THE CORE INTEGRATOR, WHICH DOES ONE STEP OF THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1161 C INTEGRATION AND THE ASSOCIATED ERROR CONTROL.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1162 C ODESSA_STESA MANAGES THE SOLUTION OF THE SENSITIVITY FUNCTIONS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1163 C ODESSA_CFODE SETS ALL METHOD COEFFICIENTS AND TEST CONSTANTS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1164 C ODESSA_PREPJ COMPUTES AND PREPROCESSES THE JACOBIAN MATRIX J = DF/DY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1165 C AND THE NEWTON ITERATION MATRIX P = I - H*L0*J.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1166 C IT IS ALSO CALLED BY ODESSA_SPRIME (WITH JOPT = 1) TO JUST
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1167 C COMPUTE THE JACOBIAN MATRIX.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1168 C ODESSA_PREPDF COMPUTES THE INHOMOGENEITY MATRIX DF/DP.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1169 C ODESSA_SPRIME DEFINES THE SYSTEM OF SENSITIVITY EQUATIONS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1170 C ODESSA_SOLSY MANAGES SOLUTION OF LINEAR SYSTEM IN CHORD ITERATION.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1171 C ODESSA_EWSET SETS THE ERROR WEIGHT VECTOR EWT BEFORE EACH STEP.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1172 C ODESSA_VNORM COMPUTES THE WEIGHTED R.M.S. NORM OF A VECTOR.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1173 C ODESSA_SVCOM AND ODESSA_RSCOM ARE USER-CALLABLE ROUTINES TO SAVE AND RESTORE,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1174 C RESPECTIVELY, THE CONTENTS OF THE INTERNAL COMMON BLOCKS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1175 C DGETRF AND DGETRS ARE ROUTINES FROM LAPACK FOR SOLVING FULL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1176 C SYSTEMS OF LINEAR ALGEBRAIC EQUATIONS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1177 C DGBTRF AND DGBTRS ARE ROUTINES FROM LAPACK FOR SOLVING BANDED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1178 C LINEAR SYSTEMS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1179 C DAXPY, DSCAL, IDAMAX, AND DDOT ARE BASIC LINEAR ALGEBRA MODULES
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1180 C (BLAS) USED BY THE ABOVE LINPACK ROUTINES.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1181 C D1MACH COMPUTES THE UNIT ROUNDOFF IN A MACHINE-INDEPENDENT MANNER.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1182 C XERRWD, XSETUN, AND ODESSA_XSETF HANDLE THE PRINTING OF ALL ERROR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1183 C MESSAGES AND WARNINGS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1184 C NOTE.. ODESSA_VNORM, IDAMAX, DDOT, AND D1MACH ARE FUNCTION ROUTINES.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1185 C ALL THE OTHERS ARE SUBROUTINES.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1186 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1187 C THE FORTRAN GENERIC INTRINSIC FUNCTIONS USED BY ODESSA ARE..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1188 C ABS, MAX, MIN, REAL, MOD, SIGN, SQRT, AND WRITE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1189 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1190 C A BLOCK DATA SUBPROGRAM IS ALSO INCLUDED WITH THE PACKAGE,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1191 C FOR LOADING SOME OF THE VARIABLES IN INTERNAL COMMON.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1192 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1193 C----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1194 C PART V. GENERAL REMARKS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1195 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1196 C THIS SECTION HIGHLIGHTS THE BASIC DIFFERENCES BETWEEN THE ORIGINAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1197 C LSODE PACKAGE AND THE ODESSA MODIFICATION. THIS IS PROVIDED AS A
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1198 C SERVICE TO EXPERIENCED LSODE USERS TO EXPEDITE FAMILIARIZATION WITH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1199 C ODESSA.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1200 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1201 C (A). ORIGINAL SUBROUTINES AND FUNCTIONS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1202 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1203 C OF THE ORIGINAL 22 SUBROUTINES AND FUNCTIONS USED IN THE LSODE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1204 C PACKAGE, ALL ARE USED BY ODESSA, WITH THE FOLLOWING HAVING BEEN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1205 C MODIFIED..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1206 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1207 C LSODE THE ORIGINAL DRIVER SUBROUTINE FOR THE LSODE PACKAGE IS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1208 C EXTENSIVELY MODIFIED AND RENAMED ODESSA, WHICH NOW
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1209 C CONTAINS A CALL TO ODESSA_SPRIME TO ESTABLISH INITIAL CONDITIONS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1210 C FOR THE SENSITIVITY CALCULATIONS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1211 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1212 C ODESSA_STODE THE ONE STEP INTEGRATOR IS SLIGHTLY MODIFIED AND RETAINS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1213 C ITS ORIGINAL NAME. IT NOW CONTAINS THE CALL TO ODESSA_STESA,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1214 C AND ALSO CALLS ODESSA_SPRIME IF KFLAG .LE. -3.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1215 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1216 C ODESSA_PREPJ ALSO NAMED ODESSA_PREPJ IN ODESSA IS SLIGHTLY MODIFIED TO ALLOW
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1217 C FOR THE CALCULATION OF JACOBIAN WITH NO PREPROCESSING
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1218 C (JOPT = 1).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1219 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1220 C (B). NEW SUBROUTINES.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1221 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1222 C IN ADDITION TO THE CHANGES NOTED ABOVE, THREE NEW SUBROUTINES
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1223 C HAVE BEEN INTRODUCED (SEE ODESSA_STESA, ODESSA_SPRIME, AND ODESSA_PREPDF AS DESCRIBED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1224 C IN PART IV. ABOVE).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1225 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1226 C (C). COMMON BLOCKS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1227 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1228 C /LS0001/ RETAINS THE SAME LENGTH AND IS RENAMED /ODE001/;
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1229 C HOWEVER THE REAL ARRAY ROWNS(209) IS SHORTENED TO A
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1230 C LENGTH OF (173) REAL WORDS, ALLOWING THE REMOVAL OF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1231 C TESCO(3,12) WHICH IS NOW PASSED FROM ODESSA_STODE TO ODESSA_STESA.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1232 C IN ADDITION, THE INTEGER ARRAY IOWNS(6) IS SHORTENED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1233 C TO A LENGTH OF (4) INTEGER WORDS, ALLOWING THE REMOVAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1234 C OF IALTH AND LMAX WHICH ARE NOW PASSED FROM ODESSA_STODE TO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1235 C ODESSA_STESA.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1236 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1237 C /ODE002/ ADDED COMMON BLOCK FOR VARIABLES IMPORTANT TO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1238 C SENSITIVITY ANALYSIS (SEE PART III. ABOVE). A BLOCK
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1239 C DATA PROGRAM IS NOT REQUIRED FOR THIS COMMON BLOCK.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1240 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1241 C ODESSA_SVCOM,ODESSA_RSCOM THESE TWO SUBROUTINES ARE MODIFIED TO HANDLE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1242 C COMMON BLOCK /ODE002/ AS WELL.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1243 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1244 C (D). OPTIONAL INPUTS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1245 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1246 C THE FULL SET OF OPTIONAL INPUTS AVAILABLE IN LSODE IS ALSO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1247 C AVAILABLE IN ODESSA, WITH THE EXCEPTION THAT THE NUMBER OF ODE'S
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1248 C IN THE MODEL (NEQ(1)), MAY NOT BE CHANGED DURING THE PROBLEM.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1249 C IN ODESSA, NYH NOW REFERS TO THE TOTAL NUMBER OF FIRST-ORDER
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1250 C ODE'S (MODEL AND SENSITIVITY EQUATIONS) WHICH IS EQUAL TO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1251 C NEQ(1) IF ISOPT = 0, OR NEQ(1)*(NEQ(2)+1) IF ISOPT = 1.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1252 C NEQ(1), NEQ(2), AND NYH ARE NOT ALLOWED TO CHANGE DURING
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1253 C THE COURSE OF AN INTEGRATION.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1254 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1255 C (E). OPTIONAL OUTPUTS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1256 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1257 C THE FULL SET OF OPTIONAL OUTPUTS AVAILABLE IN LSODE IS ALSO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1258 C AVAILABLE IN ODESSA. IN ADDITION, IWORK(19) AND IWORK(20) ARE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1259 C LOADED WITH NDFE AND NSPE, RESPECTIVELY, UPON OUTPUT. THE TOTAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1260 C NUMBER OF LU DECOMPOSITIONS OF THE PROCESSED JACOBIAN IS EQUAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1261 C TO NJE - NSPE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1262 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1263 SUBROUTINE DODESSA (F, DF, NEQ, Y, PAR, T, TOUT, ITOL, RTOL, ATOL,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1264 1 ITASK, ISTATE, IOPT, RWORK, LRW, IWORK, LIW, JAC, MF)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1265 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1266 LOGICAL IHIT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1267 EXTERNAL F, DF, JAC, ODESSA_PREPJ, ODESSA_SOLSY, ODESSA_PREPDF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1268 DIMENSION NEQ(*), Y(*), PAR(*), RTOL(*), ATOL(*), IOPT(*),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1269 1 RWORK(LRW), IWORK(LIW), MORD(2)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1270 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1271 C THIS IS THE SEPTEMBER 1, 1986 VERSION OF ODESSA..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1272 C AN ORDINARY DIFFERENTIAL EQUATION SOLVER WITH EXPLICIT SIMULTANEOUS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1273 C SENSITIVITY ANALYSIS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1274 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1275 C THIS PACKAGE IS A MODIFICATION OF THE AUGUST 13, 1981 VERSION OF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1276 C LSODE.. LIVERMORE SOLVER FOR ORDINARY DIFFERENTIAL EQUATIONS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1277 C THIS VERSION IS IN DOUBLE PRECISION.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1278 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1279 C ODESSA SOLVES FOR THE FIRST-ORDER SENSITIVITY COEFFICIENTS..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1280 C DY(I)/DP, FOR A SINGLE PARAMETER, OR,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1281 C DY(I)/DP(J), FOR MULTIPLE PARAMETERS,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1282 C ASSOCIATED WITH A SYSTEM OF ORDINARY DIFFERENTIAL EQUATIONS..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1283 C DY(T)/DT = F(Y,T;P).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1284 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1285 C REFERENCES...
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1286 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1287 C 1. JORGE R. LEIS AND MARK A. KRAMER, THE SIMULTANEOUS SOLUTION AND
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1288 C EXPLICIT SENSITIVITY ANALYSIS OF SYSTEMS DESCRIBED BY ORDINARY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1289 C DIFFERENTIAL EQUATIONS, SUBMITTED TO ACM TRANS. MATH. SOFTWARE,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1290 C (1985).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1291 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1292 C 2. JORGE R. LEIS AND MARK A. KRAMER, ODESSA - AN ORDINARY
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1293 C DIFFERENTIAL EQUATION SOLVER WITH EXPLICIT SIMULTANEOUS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1294 C SENSITIVITY ANALYSIS, SUBMITTED TO ACM TRANS. MATH. SOFTWARE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1295 C (1985).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1296 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1297 C 3. ALAN C. HINDMARSH, LSODE AND LSODI, TWO NEW INITIAL VALUE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1298 C ORDINARY DIFFERENTIAL EQUATION SOLVERS, ACM-SIGNUM NEWSLETTER,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1299 C VOL. 15, NO. 4 (1980), PP. 10-11.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1300 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1301 C THE FOLLOWING INTERNAL COMMON BLOCKS CONTAIN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1302 C (A) VARIABLES WHICH ARE LOCAL TO ANY SUBROUTINE BUT WHOSE VALUES MUST
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1303 C BE PRESERVED BETWEEN CALLS TO THE ROUTINE (OWN VARIABLES), AND
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1304 C (B) VARIABLES WHICH ARE COMMUNICATED BETWEEN SUBROUTINES.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1305 C THE STRUCTURE OF THE BLOCKS ARE AS FOLLOWS.. ALL REAL VARIABLES ARE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1306 C LISTED FIRST, FOLLOWED BY ALL INTEGERS. WITHIN EACH TYPE, THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1307 C VARIABLES ARE GROUPED WITH THOSE LOCAL TO SUBROUTINE ODESSA FIRST,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1308 C THEN THOSE LOCAL TO SUBROUTINE ODESSA_STODE, AND FINALLY THOSE USED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1309 C FOR COMMUNICATION. THE BLOCKS ARE DECLARED IN SUBROUTINES ODESSA
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1310 C ODESSA_INTDY, ODESSA_STODE, ODESSA_STESA, ODESSA_PREPJ, ODESSA_PREPDF,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1311 C AND ODESSA_SOLSY. GROUPS OF VARIABLES ARE REPLACED BY DUMMY ARRAYS IN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1312 C THE COMMON DECLARATIONS IN ROUTINES WHERE THOSE VARIABLES ARE NOT USED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1313 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1314 COMMON /ODE001/ TRET, ROWNS(173),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1315 1 TESCO(3,12), CCMAX, EL0, H, HMIN, HMXI, HU, RC, TN, UROUND,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1316 2 ILLIN, INIT, LYH, LEWT, LACOR, LSAVF, LWM, LIWM,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1317 3 MXSTEP, MXHNIL, NHNIL, NTREP, NSLAST, NYH, IOWNS(4),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1318 4 IALTH, LMAX, ICF, IERPJ, IERSL, JCUR, JSTART, KFLAG, L, METH,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1319 5 MITER, MAXORD, MAXCOR, MSBP, MXNCF, N, NQ, NST, NFE, NJE, NQU
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1320 COMMON /ODE002/ DUPS, DSMS, DDNS,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1321 1 NPAR, LDFDP, LNRS,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1322 2 ISOPT, NSV, NDFE, NSPE, IDF, IERSP, JOPT, KFLAGS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1323 PARAMETER (ZERO=0.0D0,ONE=1.0D0,TWO=2.0D0,FOUR=4.0D0)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1324 DATA MORD(1),MORD(2)/12,5/, MXSTP0/500/, MXHNL0/10/
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1325 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1326 C BLOCK A.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1327 C THIS CODE BLOCK IS EXECUTED ON EVERY CALL.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1328 C IT TESTS ISTATE AND ITASK FOR LEGALITY AND BRANCHES APPROPIATELY.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1329 C IF ISTATE .GT. 1 BUT THE FLAG INIT SHOWS THAT INITIALIZATION HAS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1330 C NOT YET BEEN DONE, AN ERROR RETURN OCCURS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1331 C IF ISTATE = 1 AND TOUT = T, JUMP TO BLOCK G AND RETURN IMMEDIATELY.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1332 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1333 IF (ISTATE .LT. 1 .OR. ISTATE .GT. 3) GO TO 601
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1334 IF (ITASK .LT. 1 .OR. ITASK .GT. 5) GO TO 602
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1335 IF (ISTATE .EQ. 1) GO TO 10
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1336 IF (INIT .EQ. 0) GO TO 603
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1337 IF (ISTATE .EQ. 2) GO TO 200
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1338 GO TO 20
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1339 10 INIT = 0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1340 IF (TOUT .EQ. T) GO TO 430
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1341 20 NTREP = 0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1342 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1343 C BLOCK B.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1344 C THE NEXT CODE BLOCK IS EXECUTED FOR THE INITIAL CALL (ISTATE = 1),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1345 C OR FOR A CONTINUATION CALL WITH PARAMETER CHANGES (ISTATE = 3).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1346 C IT CONTAINS CHECKING OF ALL INPUTS AND VARIOUS INITIALIZATIONS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1347 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1348 C FIRST CHECK LEGALITY OF THE NON-OPTIONAL INPUTS NEQ, ITOL, IOPT,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1349 C MF, ML, AND MU.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1350 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1351 IF (NEQ(1) .LE. 0) GO TO 604
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1352 IF (ISTATE .EQ. 1) GO TO 25
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1353 IF (NEQ(1) .NE. N) GO TO 605
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1354 25 N = NEQ(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1355 IF (ITOL .LT. 1 .OR. ITOL .GT. 4) GO TO 606
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1356 DO 26 I = 1,3
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1357 26 IF (IOPT(I) .LT. 0 .OR. IOPT(I) .GT. 1) GO TO 607
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1358 ISOPT = IOPT(2)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1359 IDF = IOPT(3)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1360 NYH = N
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1361 NSV = 1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1362 METH = MF/10
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1363 MITER = MF - 10*METH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1364 IF (METH .LT. 1 .OR. METH .GT. 2) GO TO 608
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1365 IF (MITER .LT. 0 .OR. MITER .GT. 5) GO TO 608
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1366 IF (MITER .LE. 3) GO TO 30
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1367 ML = IWORK(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1368 MU = IWORK(2)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1369 IF (ML .LT. 0 .OR. ML .GE. N) GO TO 609
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1370 IF (MU .LT. 0 .OR. MU .GE. N) GO TO 610
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1371 30 IF (ISOPT .EQ. 0) GO TO 32
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1372 C CHECK LEGALITY OF THE NON-OPTIONAL INPUTS ISOPT, NPAR.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1373 C COMPUTE NUMBER OF SOLUTION VECTORS AND TOTAL NUMBER OF EQUATIONS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1374 IF (NEQ(2) .LE. 0) GO TO 628
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1375 IF (ISTATE .EQ. 1) GO TO 31
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1376 IF (NEQ(2) .NE. NPAR) GO TO 629
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1377 31 NPAR = NEQ(2)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1378 NSV = NPAR + 1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1379 NYH = NSV * N
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1380 IF (MITER .EQ. 0 .OR. MITER .EQ. 3) GO TO 630
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1381 C NEXT PROCESS AND CHECK THE OPTIONAL INPUTS. --------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1382 32 IF (IOPT(1) .EQ. 1) GO TO 40
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1383 MAXORD = MORD(METH)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1384 MXSTEP = MXSTP0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1385 MXHNIL = MXHNL0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1386 IF (ISTATE .EQ. 1) H0 = ZERO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1387 HMXI = ZERO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1388 HMIN = ZERO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1389 GO TO 60
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1390 40 MAXORD = IWORK(5)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1391 IF (MAXORD .LT. 0) GO TO 611
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1392 IF (MAXORD .EQ. 0) MAXORD = 100
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1393 MAXORD = MIN(MAXORD,MORD(METH))
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1394 MXSTEP = IWORK(6)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1395 IF (MXSTEP .LT. 0) GO TO 612
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1396 IF (MXSTEP .EQ. 0) MXSTEP = MXSTP0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1397 MXHNIL = IWORK(7)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1398 IF (MXHNIL .LT. 0) GO TO 613
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1399 IF (MXHNIL .EQ. 0) MXHNIL = MXHNL0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1400 IF (ISTATE .NE. 1) GO TO 50
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1401 H0 = RWORK(5)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1402 IF ((TOUT - T)*H0 .LT. ZERO) GO TO 614
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1403 50 HMAX = RWORK(6)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1404 IF (HMAX .LT. ZERO) GO TO 615
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1405 HMXI = ZERO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1406 IF (HMAX .GT. ZERO) HMXI = ONE/HMAX
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1407 HMIN = RWORK(7)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1408 IF (HMIN .LT. ZERO) GO TO 616
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1409 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1410 C SET WORK ARRAY POINTERS AND CHECK LENGTHS LRW AND LIW.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1411 C POINTERS TO SEGMENTS OF RWORK AND IWORK ARE NAMED BY PREFIXING L TO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1412 C THE NAME OF THE SEGMENT. E.G., THE SEGMENT YH STARTS AT RWORK(LYH).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1413 C SEGMENTS OF RWORK (IN ORDER) ARE DENOTED YH, WM, EWT, SAVF, ACOR.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1414 C WORK SPACE FOR DFDP IS CONTAINED IN ACOR.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1415 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1416 60 LYH = 21
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1417 LWM = LYH + (MAXORD + 1)*NYH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1418 IF (MITER .EQ. 0) LENWM = 0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1419 IF (MITER .EQ. 1 .OR. MITER .EQ. 2) LENWM = N*N + 2
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1420 IF (MITER .EQ. 3) LENWM = N + 2
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1421 IF (MITER .GE. 4) LENWM = (2*ML + MU + 1)*N + 2
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1422 LEWT = LWM + LENWM
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1423 LSAVF = LEWT + NYH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1424 LACOR = LSAVF + N
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1425 LDFDP = LACOR + N
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1426 LENRW = LACOR + NYH - 1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1427 IWORK(17) = LENRW
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1428 LIWM = 1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1429 LENIW = 20 + N
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1430 IF (MITER .EQ. 0 .OR. MITER .EQ. 3) LENIW = 20
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1431 LNRS = LENIW + LIWM
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1432 IF (ISOPT .EQ. 1) LENIW = LNRS + NPAR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1433 IWORK(18) = LENIW
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1434 IF (LENRW .GT. LRW) GO TO 617
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1435 IF (LENIW .GT. LIW) GO TO 618
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1436 C CHECK RTOL AND ATOL FOR LEGALITY. ------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1437 RTOLI = RTOL(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1438 ATOLI = ATOL(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1439 DO 70 I = 1,NYH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1440 IF (ITOL .GE. 3) RTOLI = RTOL(I)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1441 IF (ITOL .EQ. 2 .OR. ITOL .EQ. 4) ATOLI = ATOL(I)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1442 IF (RTOLI .LT. ZERO) GO TO 619
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1443 IF (ATOLI .LT. ZERO) GO TO 620
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1444 70 CONTINUE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1445 IF (ISTATE .EQ. 1) GO TO 100
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1446 C IF ISTATE = 3, SET FLAG TO SIGNAL PARAMETER CHANGES TO ODESSA_STODE. -
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1447 JSTART = -1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1448 IF (NQ .LE. MAXORD) GO TO 90
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1449 C MAXORD WAS REDUCED BELOW NQ. COPY YH(*,MAXORD+2) INTO SAVF. ---------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1450 DO 80 I = 1,N
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1451 80 RWORK(I+LSAVF-1) = RWORK(I+LWM-1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1452 C RELOAD WM(1) = RWORK(LWM), SINCE LWM MAY HAVE CHANGED. ---------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1453 90 IF (MITER .GT. 0) RWORK(LWM) = DSQRT(UROUND)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1454 GO TO 200
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1455 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1456 C BLOCK C.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1457 C THE NEXT BLOCK IS FOR THE INITIAL CALL ONLY (ISTATE = 1).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1458 C IT CONTAINS ALL REMAINING INITIALIZATIONS, THE INITIAL CALL TO F,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1459 C THE INITIAL CALL TO ODESSA_SPRIME IF ISOPT = 1,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1460 C AND THE CALCULATION OF THE INITIAL STEP SIZE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1461 C THE ERROR WEIGHTS IN EWT ARE INVERTED AFTER BEING LOADED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1462 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1463 100 UROUND = D1MACH(4)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1464 TN = T
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1465 IF (ITASK .NE. 4 .AND. ITASK .NE. 5) GO TO 105
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1466 TCRIT = RWORK(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1467 IF ((TCRIT - TOUT)*(TOUT - T) .LT. ZERO) GO TO 625
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1468 IF (H0 .NE. ZERO .AND. (T + H0 - TCRIT)*H0 .GT. ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1469 1 H0 = TCRIT - T
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1470 105 JSTART = 0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1471 IF (MITER .GT. 0) RWORK(LWM) = DSQRT(UROUND)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1472 NHNIL = 0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1473 NST = 0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1474 NJE = 0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1475 NSLAST = 0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1476 HU = ZERO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1477 NQU = 0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1478 CCMAX = 0.3D0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1479 MAXCOR = 3
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1480 IF (ISOPT .EQ. 1) MAXCOR = 4
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1481 MSBP = 20
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1482 MXNCF = 10
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1483 C INITIAL CALL TO F. (LF0 POINTS TO YH(1,2) AND LOADS IN VALUES).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1484 LF0 = LYH + NYH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1485 CALL F (NEQ, T, Y, PAR, RWORK(LF0))
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1486 NFE = 1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1487 DUPS = ZERO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1488 DSMS = ZERO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1489 DDNS = ZERO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1490 NDFE = 0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1491 NSPE = 0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1492 IF (ISOPT .EQ. 0) GO TO 114
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1493 C INITIALIZE COUNTS FOR REPEATED STEPS DUE TO SENSITIVITY ANALYSIS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1494 DO 110 J = 1,NSV
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1495 110 IWORK(J + LNRS - 1) = 0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1496 C LOAD THE INITIAL VALUE VECTOR IN YH. ---------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1497 114 DO 115 I = 1,NYH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1498 115 RWORK(I+LYH-1) = Y(I)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1499 C LOAD AND INVERT THE EWT ARRAY. (H IS TEMPORARILY SET TO ONE.) -------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1500 NQ = 1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1501 H = ONE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1502 CALL ODESSA_EWSET (NYH, ITOL, RTOL, ATOL, RWORK(LYH), RWORK(LEWT))
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1503 DO 120 I = 1,NYH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1504 IF (RWORK(I+LEWT-1) .LE. ZERO) GO TO 621
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1505 120 RWORK(I+LEWT-1) = ONE/RWORK(I+LEWT-1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1506 IF (ISOPT .EQ. 0) GO TO 125
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1507 C CALL ODESSA_SPRIME TO LOAD FIRST-ORDER SENSITIVITY DERIVATIVES INTO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1508 C REMAINING YH(*,2) POSITIONS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1509 CALL ODESSA_SPRIME (NEQ, Y, RWORK(LYH), NYH, N, NSV, RWORK(LWM),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1510 1 IWORK(LIWM), RWORK(LEWT), RWORK(LF0), RWORK(LACOR),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1511 2 RWORK(LDFDP), PAR, F, JAC, DF, ODESSA_PREPJ, ODESSA_PREPDF)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1512 IF (IERSP .EQ. -1) GO TO 631
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1513 IF (IERSP .EQ. -2) GO TO 632
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1514 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1515 C THE CODING BELOW COMPUTES THE STEP SIZE, H0, TO BE ATTEMPTED ON THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1516 C FIRST STEP, UNLESS THE USER HAS SUPPLIED A VALUE FOR THIS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1517 C FIRST CHECK THAT TOUT - T DIFFERS SIGNIFICANTLY FROM ZERO.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1518 C A SCALAR TOLERANCE QUANTITY TOL IS COMPUTED, AS MAX(RTOL(I))
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1519 C IF THIS IS POSITIVE, OR MAX(ATOL(I)/ABS(Y(I))) OTHERWISE, ADJUSTED
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1520 C SO AS TO BE BETWEEN 100*UROUND AND 1.0E-3. ONLY THE ORIGINAL
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1521 C SOLUTION VECTOR IS CONSIDERED IN THIS CALCULATION (ISOPT = 0 OR 1).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1522 C THEN THE COMPUTED VALUE H0 IS GIVEN BY..
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1523 C NEQ
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1524 C H0**2 = TOL / ( W0**-2 + (1/NEQ) * SUM ( F(I)/YWT(I) )**2 )
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1525 C 1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1526 C WHERE W0 = MAX ( ABS(T), ABS(TOUT) ),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1527 C F(I) = I-TH COMPONENT OF INITIAL VALUE OF F,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1528 C YWT(I) = EWT(I)/TOL (A WEIGHT FOR Y(I)).
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1529 C THE SIGN OF H0 IS INFERRED FROM THE INITIAL VALUES OF TOUT AND T.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1530 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1531 125 IF (H0 .NE. ZERO) GO TO 180
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1532 TDIST = DABS(TOUT - T)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1533 W0 = DMAX1(DABS(T),DABS(TOUT))
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1534 IF (TDIST .LT. TWO*UROUND*W0) GO TO 622
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1535 TOL = RTOL(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1536 IF (ITOL .LE. 2) GO TO 140
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1537 DO 130 I = 1,N
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1538 130 TOL = DMAX1(TOL,RTOL(I))
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1539 140 IF (TOL .GT. ZERO) GO TO 160
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1540 ATOLI = ATOL(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1541 DO 150 I = 1,N
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1542 IF (ITOL .EQ. 2 .OR. ITOL .EQ. 4) ATOLI = ATOL(I)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1543 AYI = DABS(Y(I))
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1544 IF (AYI .NE. ZERO) TOL = DMAX1(TOL,ATOLI/AYI)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1545 150 CONTINUE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1546 160 TOL = DMAX1(TOL,100.0D0*UROUND)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1547 TOL = DMIN1(TOL,0.001D0)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1548 SUM = ODESSA_VNORM (N, RWORK(LF0), RWORK(LEWT))
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1549 SUM = ONE/(TOL*W0*W0) + TOL*SUM**2
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1550 H0 = ONE/DSQRT(SUM)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1551 H0 = MIN(H0,TDIST)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1552 H0 = DSIGN(H0,TOUT-T)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1553 C ADJUST H0 IF NECESSARY TO MEET HMAX BOUND. ---------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1554 180 RH = DABS(H0)*HMXI
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1555 IF (RH .GT. ONE) H0 = H0/RH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1556 C LOAD H WITH H0 AND SCALE YH(*,2) BY H0. ------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1557 H = H0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1558 DO 190 I = 1,NYH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1559 190 RWORK(I+LF0-1) = H0*RWORK(I+LF0-1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1560 GO TO 270
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1561 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1562 C BLOCK D.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1563 C THE NEXT CODE BLOCK IS FOR CONTINUATION CALLS ONLY (ISTATE = 2 OR 3)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1564 C AND IS TO CHECK STOP CONDITIONS BEFORE TAKING A STEP.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1565 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1566 200 NSLAST = NST
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1567 GO TO (210, 250, 220, 230, 240), ITASK
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1568 210 IF ((TN - TOUT)*H .LT. ZERO) GO TO 250
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1569 CALL ODESSA_INTDY (TOUT, 0, RWORK(LYH), NYH, Y, IFLAG)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1570 IF (IFLAG .NE. 0) GO TO 627
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1571 T = TOUT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1572 GO TO 420
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1573 220 TP = TN - HU*(ONE + 100.0D0*UROUND)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1574 IF ((TP - TOUT)*H .GT. ZERO) GO TO 623
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1575 IF ((TN - TOUT)*H .LT. ZERO) GO TO 250
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1576 GO TO 400
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1577 230 TCRIT = RWORK(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1578 IF ((TN - TCRIT)*H .GT. ZERO) GO TO 624
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1579 IF ((TCRIT - TOUT)*H .LT. ZERO) GO TO 625
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1580 IF ((TN - TOUT)*H .LT. ZERO) GO TO 245
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1581 CALL ODESSA_INTDY (TOUT, 0, RWORK(LYH), NYH, Y, IFLAG)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1582 IF (IFLAG .NE. 0) GO TO 627
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1583 T = TOUT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1584 GO TO 420
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1585 240 TCRIT = RWORK(1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1586 IF ((TN - TCRIT)*H .GT. ZERO) GO TO 624
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1587 245 HMX = DABS(TN) + DABS(H)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1588 IHIT = DABS(TN - TCRIT) .LE. 100.0D0*UROUND*HMX
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1589 IF (IHIT) GO TO 400
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1590 TNEXT = TN + H*(ONE + FOUR*UROUND)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1591 IF ((TNEXT - TCRIT)*H .LE. ZERO) GO TO 250
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1592 H = (TCRIT - TN)*(ONE - FOUR*UROUND)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1593 IF (ISTATE .EQ. 2) JSTART = -2
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1594 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1595 C BLOCK E.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1596 C THE NEXT BLOCK IS NORMALLY EXECUTED FOR ALL CALLS AND CONTAINS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1597 C THE CALL TO THE ONE-STEP CORE INTEGRATOR ODESSA_STODE.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1598 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1599 C THIS IS A LOOPING POINT FOR THE INTEGRATION STEPS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1600 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1601 C FIRST CHECK FOR TOO MANY STEPS BEING TAKEN, UPDATE EWT (IF NOT AT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1602 C START OF PROBLEM), CHECK FOR TOO MUCH ACCURACY BEING REQUESTED, AND
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1603 C CHECK FOR H BELOW THE ROUNDOFF LEVEL IN T.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1604 C TOLSF IS CALCULATED CONSIDERING ALL SOLUTION VECTORS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1605 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1606 250 CONTINUE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1607 IF ((NST-NSLAST) .GE. MXSTEP) GO TO 500
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1608 CALL ODESSA_EWSET (NYH, ITOL, RTOL, ATOL, RWORK(LYH), RWORK(LEWT))
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1609 DO 260 I = 1,NYH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1610 IF (RWORK(I+LEWT-1) .LE. ZERO) GO TO 510
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1611 260 RWORK(I+LEWT-1) = ONE/RWORK(I+LEWT-1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1612 270 TOLSF = UROUND*ODESSA_VNORM (NYH, RWORK(LYH), RWORK(LEWT))
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1613 IF (TOLSF .LE. ONE) GO TO 280
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1614 TOLSF = TOLSF*2.0D0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1615 IF (NST .EQ. 0) GO TO 626
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1616 GO TO 520
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1617 280 IF (ODESSA_ADDX(TN,H) .NE. TN) GO TO 290
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1618 NHNIL = NHNIL + 1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1619 IF (NHNIL .GT. MXHNIL) GO TO 290
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1620 CALL XERRWD ('ODESSA - WARNING..INTERNAL T (=R1) AND H (=R2) ARE',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1621 1 50, 101, 1, 0, 0, 0, 0, ZERO, ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1622 CALL XERRWD
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1623 1 ('SUCH THAT IN THE MACHINE, T + H = T ON THE NEXT STEP',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1624 1 52, 101, 1, 0, 0, 0, 0, ZERO, ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1625 CALL XERRWD ('(H = STEP SIZE). SOLVER WILL CONTINUE ANYWAY',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1626 1 44, 101, 1, 0, 0, 0, 2, TN, H)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1627 IF (NHNIL .LT. MXHNIL) GO TO 290
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1628 CALL XERRWD ('ODESSA - ABOVE WARNING HAS BEEN ISSUED I1 TIMES.',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1629 1 48, 102, 1, 0, 0, 0, 0, ZERO, ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1630 CALL XERRWD ('IT WILL NOT BE ISSUED AGAIN FOR THIS PROBLEM',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1631 1 44, 102, 1, 1, MXHNIL, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1632 290 CONTINUE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1633 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1634 C CALL ODESSA_STODE(NEQ,Y,YH,NYH,YH,WM,IWM,EWT,SAVF,ACOR,PAR,NRS,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1635 C 1 F,JAC,DF,ODESSA_PREPJ,ODESSA_PREPDF,ODESSA_SOLSY)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1636 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1637 CALL ODESSA_STODE (NEQ, Y, RWORK(LYH), NYH, RWORK(LYH),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1638 1 RWORK(LWM), IWORK(LIWM), RWORK(LEWT), RWORK(LSAVF),
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1639 2 RWORK(LACOR), PAR, IWORK(LNRS), F, JAC, DF, ODESSA_PREPJ,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1640 3 ODESSA_PREPDF, ODESSA_SOLSY)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1641 KGO = 1 - KFLAG
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1642 GO TO (300, 530, 540, 633), KGO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1643 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1644 C BLOCK F.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1645 C THE FOLLOWING BLOCK HANDLES THE CASE OF A SUCCESSFUL RETURN FROM THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1646 C CORE INTEGRATOR (KFLAG = 0). TEST FOR STOP CONDITIONS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1647 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1648 300 INIT = 1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1649 GO TO (310, 400, 330, 340, 350), ITASK
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1650 C ITASK = 1. IF TOUT HAS BEEN REACHED, INTERPOLATE. -------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1651 310 IF ((TN - TOUT)*H .LT. ZERO) GO TO 250
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1652 CALL ODESSA_INTDY (TOUT, 0, RWORK(LYH), NYH, Y, IFLAG)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1653 T = TOUT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1654 GO TO 420
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1655 C ITASK = 3. JUMP TO EXIT IF TOUT WAS REACHED. ------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1656 330 IF ((TN - TOUT)*H .GE. ZERO) GO TO 400
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1657 GO TO 250
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1658 C ITASK = 4. SEE IF TOUT OR TCRIT WAS REACHED. ADJUST H IF NECESSARY.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1659 340 IF ((TN - TOUT)*H .LT. ZERO) GO TO 345
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1660 CALL ODESSA_INTDY (TOUT, 0, RWORK(LYH), NYH, Y, IFLAG)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1661 T = TOUT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1662 GO TO 420
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1663 345 HMX = DABS(TN) + DABS(H)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1664 IHIT = DABS(TN - TCRIT) .LE. 100.0D0*UROUND*HMX
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1665 IF (IHIT) GO TO 400
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1666 TNEXT = TN + H*(ONE + FOUR*UROUND)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1667 IF ((TNEXT - TCRIT)*H .LE. ZERO) GO TO 250
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1668 H = (TCRIT - TN)*(ONE - FOUR*UROUND)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1669 JSTART = -2
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1670 GO TO 250
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1671 C ITASK = 5. SEE IF TCRIT WAS REACHED AND JUMP TO EXIT. ---------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1672 350 HMX = DABS(TN) + DABS(H)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1673 IHIT = DABS(TN - TCRIT) .LE. 100.0D0*UROUND*HMX
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1674 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1675 C BLOCK G.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1676 C THE FOLLOWING BLOCK HANDLES ALL SUCCESSFUL RETURNS FROM ODESSA.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1677 C IF ITASK .NE. 1, Y IS LOADED FROM YH AND T IS SET ACCORDINGLY.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1678 C ISTATE IS SET TO 2, THE ILLEGAL INPUT COUNTER IS ZEROED, AND THE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1679 C OPTIONAL OUTPUTS ARE LOADED INTO THE WORK ARRAYS BEFORE RETURNING.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1680 C IF ISTATE = 1 AND TOUT = T, THERE IS A RETURN WITH NO ACTION TAKEN,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1681 C EXCEPT THAT IF THIS HAS HAPPENED REPEATEDLY, THE RUN IS TERMINATED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1682 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1683 400 DO 410 I = 1,NYH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1684 410 Y(I) = RWORK(I+LYH-1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1685 T = TN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1686 IF (ITASK .NE. 4 .AND. ITASK .NE. 5) GO TO 420
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1687 IF (IHIT) T = TCRIT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1688 420 ISTATE = 2
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1689 ILLIN = 0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1690 RWORK(11) = HU
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1691 RWORK(12) = H
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1692 RWORK(13) = TN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1693 IWORK(11) = NST
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1694 IWORK(12) = NFE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1695 IWORK(13) = NJE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1696 IWORK(14) = NQU
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1697 IWORK(15) = NQ
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1698 IF (ISOPT .EQ. 0) RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1699 IWORK(19) = NDFE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1700 IWORK(20) = NSPE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1701 RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1702 430 NTREP = NTREP + 1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1703 IF (NTREP .LT. 5) RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1704 CALL XERRWD ('ODESSA -- REPEATED CALLS WITH ISTATE = 1 AND
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1705 1 TOUT = T (=R1)', 59, 301, 1, 0, 0, 0, 1, T, ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1706 GO TO 800
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1707 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1708 C BLOCK H.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1709 C THE FOLLOWING BLOCK HANDLES ALL UNSUCCESSFUL RETURNS OTHER THAN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1710 C THOSE FOR ILLEGAL INPUT. FIRST THE ERROR MESSAGE ROUTINE IS CALLED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1711 C IF THERE WAS AN ERROR TEST OR CONVERGENCE TEST FAILURE, IMXER IS SET.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1712 C THEN Y IS LOADED FROM YH, T IS SET TO TN, AND THE ILLEGAL INPUT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1713 C COUNTER ILLIN IS SET TO 0. THE OPTIONAL OUTPUTS ARE LOADED INTO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1714 C THE WORK ARRAYS BEFORE RETURNING.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1715 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1716 C THE MAXIMUM NUMBER OF STEPS WAS TAKEN BEFORE REACHING TOUT. ----------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1717 500 CALL XERRWD ('ODESSA - AT CURRENT T (=R1), MXSTEP (=I1) STEPS',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1718 1 47, 201, 1, 0, 0, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1719 CALL XERRWD ('TAKEN ON THIS CALL BEFORE REACHING TOUT',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1720 1 39, 201, 1, 1, MXSTEP, 0, 1, TN, ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1721 ISTATE = -1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1722 GO TO 580
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1723 C EWT(I) .LE. 0.0 FOR SOME I (NOT AT START OF PROBLEM). ----------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1724 510 EWTI = RWORK(LEWT+I-1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1725 CALL XERRWD ('ODESSA - AT T (=R1), EWT(I1) HAS BECOME R2 .LE. 0.',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1726 1 50, 202, 1, 1, I, 0, 2, TN, EWTI)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1727 ISTATE = -6
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1728 GO TO 580
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1729 C TOO MUCH ACCURACY REQUESTED FOR MACHINE PRECISION. -------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1730 520 CALL XERRWD ('ODESSA - AT T (=R1), TOO MUCH ACCURACY REQUESTED',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1731 1 48, 203, 1, 0, 0, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1732 CALL XERRWD ('FOR PRECISION OF MACHINE.. SEE TOLSF (=R2)',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1733 1 43, 203, 1, 0, 0, 0, 2, TN, TOLSF)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1734 RWORK(14) = TOLSF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1735 ISTATE = -2
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1736 GO TO 580
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1737 C KFLAG = -1. ERROR TEST FAILED REPEATEDLY OR WITH ABS(H) = HMIN. -----
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1738 530 CALL XERRWD ('ODESSA - AT T(=R1) AND STEP SIZE H(=R2), THE ERROR',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1739 1 50, 204, 1, 0, 0, 0, 0, ZERO, ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1740 CALL XERRWD ('TEST FAILED REPEATEDLY OR WITH ABS(H) = HMIN',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1741 1 44, 204, 1, 0, 0, 0, 2, TN, H)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1742 ISTATE = -4
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1743 GO TO 560
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1744 C KFLAG = -2. CONVERGENCE FAILED REPEATEDLY OR WITH ABS(H) = HMIN. ----
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1745 540 CALL XERRWD ('ODESSA - AT T (=R1) AND STEP SIZE H (=R2), THE',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1746 1 46, 205, 1, 0, 0, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1747 CALL XERRWD ('CORRECTOR CONVERGENCE FAILED REPEATEDLY',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1748 1 39, 205, 1, 0, 0, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1749 CALL XERRWD ('OR WITH ABS(H) = HMIN',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1750 1 21, 0, 1, 0, 0, 0, 2, TN, H)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1751 ISTATE = -5
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1752 C COMPUTE IMXER IF RELEVANT. -------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1753 560 BIG = ZERO
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1754 IMXER = 1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1755 DO 570 I = 1,NYH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1756 SIZE = DABS(RWORK(I+LACOR-1)*RWORK(I+LEWT-1))
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1757 IF (BIG .GE. SIZE) GO TO 570
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1758 BIG = SIZE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1759 IMXER = I
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1760 570 CONTINUE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1761 IWORK(16) = IMXER
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1762 C SET Y VECTOR, T, ILLIN, AND OPTIONAL OUTPUTS. ------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1763 580 DO 590 I = 1,NYH
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1764 590 Y(I) = RWORK(I+LYH-1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1765 T = TN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1766 ILLIN = 0
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1767 RWORK(11) = HU
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1768 RWORK(12) = H
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1769 RWORK(13) = TN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1770 IWORK(11) = NST
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1771 IWORK(12) = NFE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1772 IWORK(13) = NJE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1773 IWORK(14) = NQU
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1774 IWORK(15) = NQ
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1775 IF (ISOPT .EQ. 0) RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1776 IWORK(19) = NDFE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1777 IWORK(20) = NSPE
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1778 RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1779 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1780 C BLOCK I.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1781 C THE FOLLOWING BLOCK HANDLES ALL ERROR RETURNS DUE TO ILLEGAL INPUT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1782 C (ISTATE = -3), AS DETECTED BEFORE CALLING THE CORE INTEGRATOR.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1783 C FIRST THE ERROR MESSAGE ROUTINE IS CALLED. THEN IF THERE HAVE BEEN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1784 C 5 CONSECUTIVE SUCH RETURNS JUST BEFORE THIS CALL TO THE SOLVER,
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1785 C THE RUN IS HALTED.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1786 C-----------------------------------------------------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1787 601 CALL XERRWD ('ODESSA - ISTATE (=I1) ILLEGAL',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1788 1 29, 1, 1, 1, ISTATE, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1789 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1790 602 CALL XERRWD ('ODESSA - ITASK (=I1) ILLEGAL',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1791 1 28, 2, 1, 1, ITASK, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1792 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1793 603 CALL XERRWD ('ODESSA - ISTATE .GT. 1 BUT ODESSA NOT INITIALIZED',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1794 1 49, 3, 1, 0, 0, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1795 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1796 604 CALL XERRWD ('ODESSA - NEQ (=I1) .LT. 1',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1797 1 25, 4, 1, 1, NEQ(1), 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1798 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1799 605 CALL XERRWD ('ODESSA - ISTATE = 3 AND NEQ CHANGED. (I1 TO I2)',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1800 1 48, 5, 1, 2, N, NEQ(1), 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1801 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1802 606 CALL XERRWD ('ODESSA - ITOL (=I1) ILLEGAL',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1803 1 27, 6, 1, 1, ITOL, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1804 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1805 607 CALL XERRWD ('ODESSA - IOPT (=I1) ILLEGAL',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1806 1 27, 7, 1, 1, IOPT, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1807 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1808 608 CALL XERRWD('ODESSA - MF (=I1) ILLEGAL',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1809 1 25, 8, 1, 1, MF, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1810 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1811 609 CALL XERRWD('ODESSA - ML (=I1) ILLEGAL.. .LT.0 OR .GE.NEQ (=I2)',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1812 1 50, 9, 1, 2, ML, NEQ(1), 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1813 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1814 610 CALL XERRWD('ODESSA - MU (=I1) ILLEGAL.. .LT.0 OR .GE.NEQ (=I2)',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1815 1 50, 10, 1, 2, MU, NEQ(1), 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1816 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1817 611 CALL XERRWD('ODESSA - MAXORD (=I1) .LT. 0',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1818 1 28, 11, 1, 1, MAXORD, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1819 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1820 612 CALL XERRWD('ODESSA - MXSTEP (=I1) .LT. 0',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1821 1 28, 12, 1, 1, MXSTEP, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1822 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1823 613 CALL XERRWD('ODESSA - MXHNIL (=I1) .LT. 0',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1824 1 28, 13, 1, 1, MXHNIL, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1825 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1826 614 CALL XERRWD('ODESSA - TOUT (=R1) BEHIND T (=R2)',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1827 1 34, 14, 1, 0, 0, 0, 2, TOUT, T)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1828 CALL XERRWD('INTEGRATION DIRECTION IS GIVEN BY H0 (=R1)',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1829 1 42, 14, 1, 0, 0, 0, 1, H0, ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1830 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1831 615 CALL XERRWD('ODESSA - HMAX (=R1) .LT. 0.0',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1832 1 28, 15, 1, 0, 0, 0, 1, HMAX, ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1833 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1834 616 CALL XERRWD('ODESSA - HMIN (=R1) .LT. 0.0',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1835 1 28, 16, 1, 0, 0, 0, 1, HMIN, ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1836 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1837 617 CALL XERRWD('ODESSA - RWORK LENGTH NEEDED, LENRW (=I1), EXCEEDS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1838 1 LRW (=I2)', 60, 17, 1, 2, LENRW, LRW, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1839 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1840 618 CALL XERRWD('ODESSA - IWORK LENGTH NEEDED, LENIW (=I1), EXCEEDS
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1841 1 LIW (=I2)', 60, 18, 1, 2, LENIW, LIW, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1842 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1843 619 CALL XERRWD('ODESSA - RTOL(I1) IS R1 .LT. 0.0',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1844 1 32, 19, 1, 1, I, 0, 1, RTOLI, ZREO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1845 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1846 620 CALL XERRWD('ODESSA - ATOL(I1) IS R1 .LT. 0.0',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1847 1 32, 20, 1, 1, I, 0, 1, ATOLI, ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1848 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1849 *
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1850 621 EWTI = RWORK(LEWT+I-1)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1851 CALL XERRWD('ODESSA - EWT(I1) IS R1 .LE. 0.0',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1852 1 31, 21, 1, 1, I, 0, 1, EWTI, ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1853 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1854 622 CALL XERRWD('ODESSA - TOUT (=R1) TOO CLOSE TO T(=R2) TO START
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1855 1 INTEGRATION', 60, 22, 1, 0, 0, 0, 2, TOUT, T)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1856 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1857 623 CALL XERRWD('ODESSA - ITASK = I1 AND TOUT (=R1) BEHIND TCUR - HU
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1858 1 (= R2)', 58, 23, 1, 1, ITASK, 0, 2, TOUT, TP)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1859 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1860 624 CALL XERRWD('ODESSA - ITASK = 4 OR 5 AND TCRIT (=R1) BEHIND TCUR
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1861 1 (=R2)', 57, 24, 1, 0, 0, 0, 2, TCRIT, TN)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1862 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1863 625 CALL XERRWD('ODESSA - ITASK = 4 OR 5 AND TCRIT (=R1) BEHIND TOUT
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1864 1 (=R2)', 57, 25, 1, 0, 0, 0, 2, TCRIT, TOUT)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1865 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1866 626 CALL XERRWD('ODESSA - AT START OF PROBLEM, TOO MUCH ACCURACY',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1867 1 47, 26, 1, 0, 0, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1868 CALL XERRWD('REQUESTED FOR PRECISION OF MACHINE. SEE TOLSF (=R1)',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1869 1 51, 26, 1, 0, 0, 0, 1, TOLSF, ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1870 RWORK(14) = TOLSF
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1871 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1872 627 CALL XERRWD
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1873 1 ('ODESSA - TROUBLE FROM ODESSA_INTDY. ITASK = I1, TOUT = R1',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1874 1 57, 27, 1, 1, ITASK, 0, 1, TOUT, ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1875 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1876 C ERROR STATEMENTS ASSOCIATED WITH SENSITIVITY ANALYSIS.
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1877 628 CALL XERRWD('ODESSA - NPAR (=I1) .LT. 1',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1878 1 26, 28, 1, 1, NPAR, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1879 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1880 629 CALL XERRWD('ODESSA - ISTATE = 3 AND NPAR CHANGED (I1 TO I2)',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1881 1 47, 29, 1, 2, NP, NPAR, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1882 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1883 630 CALL XERRWD('ODESSA - MITER (=I1) ILLEGAL',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1884 1 28, 30, 1, 1, MITER, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1885 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1886 631 CALL XERRWD('ODESSA - TROUBLE IN ODESSA_SPRIME (IERPJ)',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1887 1 41, 31, 1, 0, 0, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1888 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1889 632 CALL XERRWD('ODESSA - TROUBLE IN ODESSA_SPRIME (MITER)',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1890 1 41, 32, 1, 0, 0, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1891 GO TO 700
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1892 633 CALL XERRWD('ODESSA - FATAL ERROR IN ODESSA_STODE (KFLAG = -3)',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1893 1 49, 33, 2, 0, 0, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1894 GO TO 801
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1895 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1896 700 IF (ILLIN .EQ. 5) GO TO 710
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1897 ILLIN = ILLIN + 1
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1898 ISTATE = -3
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1899 RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1900 710 CALL XERRWD('ODESSA - REPEATED OCCURRENCES OF ILLEGAL INPUT',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1901 1 46, 302, 1, 0, 0, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1902 C
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1903 800 CALL XERRWD('ODESSA - RUN ABORTED.. APPARENT INFINITE LOOP',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1904 1 45, 303, 2, 0, 0, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1905 RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1906 801 CALL XERRWD('ODESSA - RUN ABORTED',
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1907 1 20, 304, 2, 0, 0, 0, 0, ZERO,ZERO)
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1908 RETURN
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1909 C-------------------- END OF SUBROUTINE ODESSA -------------------------
70da2b8c91dd [project @ 2003-10-31 15:18:31 by jwe]
jwe
parents:
diff changeset
1910 END