1 ;;; Compiled by f2cl version:
2 ;;; ("f2cl1.l,v 95098eb54f13 2013/04/01 00:45:16 toy $"
3 ;;; "f2cl2.l,v 95098eb54f13 2013/04/01 00:45:16 toy $"
4 ;;; "f2cl3.l,v 96616d88fb7e 2008/02/22 22:19:34 rtoy $"
5 ;;; "f2cl4.l,v 96616d88fb7e 2008/02/22 22:19:34 rtoy $"
6 ;;; "f2cl5.l,v 95098eb54f13 2013/04/01 00:45:16 toy $"
7 ;;; "f2cl6.l,v 1d5cbacbb977 2008/08/24 00:56:27 rtoy $"
8 ;;; "macros.l,v 1409c1352feb 2013/03/24 20:44:50 toy $")
10 ;;; Using Lisp CMU Common Lisp snapshot-2013-11 (20E Unicode)
12 ;;; Options: ((:prune-labels nil) (:auto-save t) (:relaxed-array-decls t)
13 ;;; (:coerce-assigns :as-needed) (:array-type ':array)
14 ;;; (:array-slicing t) (:declare-common nil)
15 ;;; (:float-format single-float))
17 (in-package "ODEPACK")
22 :element-type
'f2cl-lib
:integer4
23 :initial-contents
'(12 5)))
26 (declare (type (array f2cl-lib
:integer4
(2)) mord
)
27 (type (f2cl-lib:integer4
) mxstp0 mxhnl0
))
29 (res adda jac neq y ydoti t$ tout itol rtol atol itask istate iopt
30 rwork lrw iwork liw mf
)
31 (declare (type (f2cl-lib:integer4
) mf liw lrw iopt istate itask itol
)
32 (type (double-float) tout t$
)
33 (type (array double-float
(*)) rwork atol rtol ydoti y
)
34 (type (array f2cl-lib
:integer4
(*)) iwork neq
))
36 (symbol-macrolet ((ccmax
37 (aref (dls001-part-0 *dls001-common-block
*) 209))
38 (h (aref (dls001-part-0 *dls001-common-block
*) 211))
39 (hmin (aref (dls001-part-0 *dls001-common-block
*) 212))
40 (hmxi (aref (dls001-part-0 *dls001-common-block
*) 213))
41 (hu (aref (dls001-part-0 *dls001-common-block
*) 214))
42 (tn (aref (dls001-part-0 *dls001-common-block
*) 216))
44 (aref (dls001-part-0 *dls001-common-block
*) 217))
45 (init (aref (dls001-part-1 *dls001-common-block
*) 0))
46 (mxstep (aref (dls001-part-1 *dls001-common-block
*) 1))
47 (mxhnil (aref (dls001-part-1 *dls001-common-block
*) 2))
48 (nhnil (aref (dls001-part-1 *dls001-common-block
*) 3))
49 (nslast (aref (dls001-part-1 *dls001-common-block
*) 4))
50 (nyh (aref (dls001-part-1 *dls001-common-block
*) 5))
52 (aref (dls001-part-1 *dls001-common-block
*) 16))
53 (kflag (aref (dls001-part-1 *dls001-common-block
*) 17))
54 (l (aref (dls001-part-1 *dls001-common-block
*) 18))
55 (lyh (aref (dls001-part-1 *dls001-common-block
*) 19))
56 (lewt (aref (dls001-part-1 *dls001-common-block
*) 20))
57 (lacor (aref (dls001-part-1 *dls001-common-block
*) 21))
58 (lsavf (aref (dls001-part-1 *dls001-common-block
*) 22))
59 (lwm (aref (dls001-part-1 *dls001-common-block
*) 23))
60 (liwm (aref (dls001-part-1 *dls001-common-block
*) 24))
61 (meth (aref (dls001-part-1 *dls001-common-block
*) 25))
62 (miter (aref (dls001-part-1 *dls001-common-block
*) 26))
64 (aref (dls001-part-1 *dls001-common-block
*) 27))
66 (aref (dls001-part-1 *dls001-common-block
*) 28))
67 (msbp (aref (dls001-part-1 *dls001-common-block
*) 29))
68 (mxncf (aref (dls001-part-1 *dls001-common-block
*) 30))
69 (n (aref (dls001-part-1 *dls001-common-block
*) 31))
70 (nq (aref (dls001-part-1 *dls001-common-block
*) 32))
71 (nst (aref (dls001-part-1 *dls001-common-block
*) 33))
72 (nfe (aref (dls001-part-1 *dls001-common-block
*) 34))
73 (nje (aref (dls001-part-1 *dls001-common-block
*) 35))
74 (nqu (aref (dls001-part-1 *dls001-common-block
*) 36)))
75 (f2cl-lib:with-multi-array-data
76 ((neq f2cl-lib
:integer4 neq-%data% neq-%offset%
)
77 (iwork f2cl-lib
:integer4 iwork-%data% iwork-%offset%
)
78 (y double-float y-%data% y-%offset%
)
79 (ydoti double-float ydoti-%data% ydoti-%offset%
)
80 (rtol double-float rtol-%data% rtol-%offset%
)
81 (atol double-float atol-%data% atol-%offset%
)
82 (rwork double-float rwork-%data% rwork-%offset%
))
83 (prog ((nb 0) (mb 0) (lyd0 0) (lp 0) (lenwm 0) (lenrw 0) (leniw 0)
84 (kgo 0) (ires 0) (imxer 0) (iflag 0) (ier 0) (i2 0) (i1 0)
85 (i 0) (w0 0.0d0
) (sum 0.0d0
) (size 0.0d0
) (tp 0.0d0
)
86 (tolsf 0.0d0
) (tol 0.0d0
) (tnext 0.0d0
) (tdist 0.0d0
)
87 (tcrit 0.0d0
) (rtoli 0.0d0
) (rh 0.0d0
) (hmx 0.0d0
)
88 (hmax 0.0d0
) (h0 0.0d0
) (ewti 0.0d0
) (big 0.0d0
) (ayi 0.0d0
)
89 (atoli 0.0d0
) (ihit nil
)
92 :element-type
'character
93 :initial-element
#\
)))
94 (declare (type (string 60) msg
)
95 (type f2cl-lib
:logical ihit
)
96 (type (double-float) atoli ayi big ewti h0 hmax hmx rh
97 rtoli tcrit tdist tnext tol tolsf tp
99 (type (f2cl-lib:integer4
) i i1 i2 ier iflag imxer ires kgo
100 leniw lenrw lenwm lp lyd0 mb
102 (if (or (< istate
0) (> istate
3)) (go label601
))
103 (if (or (< itask
1) (> itask
5)) (go label602
))
104 (if (<= istate
1) (go label10
))
105 (if (= init
0) (go label603
))
106 (if (= istate
2) (go label200
))
110 (if (= tout t$
) (go end_label
))
112 (if (<= (f2cl-lib:fref neq-%data%
(1) ((1 *)) neq-%offset%
) 0)
114 (if (<= istate
1) (go label25
))
115 (if (> (f2cl-lib:fref neq-%data%
(1) ((1 *)) neq-%offset%
) n
)
118 (setf n
(f2cl-lib:fref neq-%data%
(1) ((1 *)) neq-%offset%
))
119 (if (or (< itol
1) (> itol
4)) (go label606
))
120 (if (or (< iopt
0) (> iopt
1)) (go label607
))
121 (setf meth
(the f2cl-lib
:integer4
(truncate mf
10)))
122 (setf miter
(f2cl-lib:int-sub mf
(f2cl-lib:int-mul
10 meth
)))
123 (if (or (< meth
1) (> meth
2)) (go label608
))
124 (if (or (< miter
1) (> miter
2)) (go label608
))
125 (setf mb
(f2cl-lib:fref iwork-%data%
(1) ((1 liw
)) iwork-%offset%
))
126 (setf nb
(f2cl-lib:fref iwork-%data%
(2) ((1 liw
)) iwork-%offset%
))
127 (if (or (< mb
1) (> mb n
)) (go label609
))
128 (if (< nb
4) (go label610
))
129 (if (/= (f2cl-lib:int-mul mb nb
) n
) (go label609
))
130 (if (= iopt
1) (go label40
))
131 (setf maxord
(f2cl-lib:fref mord
(meth) ((1 2))))
134 (if (<= istate
1) (setf h0
0.0d0
))
140 (f2cl-lib:fref iwork-%data%
(5) ((1 liw
)) iwork-%offset%
))
141 (if (< maxord
0) (go label611
))
142 (if (= maxord
0) (setf maxord
100))
144 (min (the f2cl-lib
:integer4 maxord
)
145 (the f2cl-lib
:integer4
146 (f2cl-lib:fref mord
(meth) ((1 2))))))
148 (f2cl-lib:fref iwork-%data%
(6) ((1 liw
)) iwork-%offset%
))
149 (if (< mxstep
0) (go label612
))
150 (if (= mxstep
0) (setf mxstep mxstp0
))
152 (f2cl-lib:fref iwork-%data%
(7) ((1 liw
)) iwork-%offset%
))
153 (if (< mxhnil
0) (go label613
))
154 (if (= mxhnil
0) (setf mxhnil mxhnl0
))
155 (if (> istate
1) (go label50
))
156 (setf h0
(f2cl-lib:fref rwork-%data%
(5) ((1 lrw
)) rwork-%offset%
))
157 (if (< (* (- tout t$
) h0
) 0.0d0
) (go label614
))
160 (f2cl-lib:fref rwork-%data%
(6) ((1 lrw
)) rwork-%offset%
))
161 (if (< hmax
0.0d0
) (go label615
))
163 (if (> hmax
0.0d0
) (setf hmxi
(/ 1.0d0 hmax
)))
165 (f2cl-lib:fref rwork-%data%
(7) ((1 lrw
)) rwork-%offset%
))
166 (if (< hmin
0.0d0
) (go label616
))
169 (if (<= istate
1) (setf nyh n
))
171 (f2cl-lib:int-add lyh
173 (f2cl-lib:int-add maxord
1)
175 (setf lenwm
(f2cl-lib:int-add
(f2cl-lib:int-mul
3 mb mb nb
) 2))
176 (setf lewt
(f2cl-lib:int-add lwm lenwm
))
177 (setf lsavf
(f2cl-lib:int-add lewt n
))
178 (setf lacor
(f2cl-lib:int-add lsavf n
))
179 (setf lenrw
(f2cl-lib:int-sub
(f2cl-lib:int-add lacor n
) 1))
180 (setf (f2cl-lib:fref iwork-%data%
(17) ((1 liw
)) iwork-%offset%
)
183 (setf leniw
(f2cl-lib:int-add
20 n
))
184 (setf (f2cl-lib:fref iwork-%data%
(18) ((1 liw
)) iwork-%offset%
)
186 (if (> lenrw lrw
) (go label617
))
187 (if (> leniw liw
) (go label618
))
188 (setf rtoli
(f2cl-lib:fref rtol-%data%
(1) ((1 *)) rtol-%offset%
))
189 (setf atoli
(f2cl-lib:fref atol-%data%
(1) ((1 *)) atol-%offset%
))
190 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
195 (f2cl-lib:fref rtol-%data%
199 (if (or (= itol
2) (= itol
4))
201 (f2cl-lib:fref atol-%data%
205 (if (< rtoli
0.0d0
) (go label619
))
206 (if (< atoli
0.0d0
) (go label620
))
208 (if (<= istate
1) (go label100
))
210 (if (<= nq maxord
) (go label90
))
211 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
215 (setf (f2cl-lib:fref ydoti-%data%
(i) ((1 *)) ydoti-%offset%
)
216 (f2cl-lib:fref rwork-%data%
218 (f2cl-lib:int-add i lwm
)
223 (setf (f2cl-lib:fref rwork-%data%
(lwm) ((1 lrw
)) rwork-%offset%
)
224 (f2cl-lib:fsqrt uround
))
225 (if (= n nyh
) (go label200
))
226 (setf i1
(f2cl-lib:int-add lyh
(f2cl-lib:int-mul l nyh
)))
229 (f2cl-lib:int-add lyh
231 (f2cl-lib:int-add maxord
1)
234 (if (> i1 i2
) (go label200
))
235 (f2cl-lib:fdo
(i i1
(f2cl-lib:int-add i
1))
239 (setf (f2cl-lib:fref rwork-%data%
(i) ((1 lrw
)) rwork-%offset%
)
243 (setf uround
(dumach))
245 (if (and (/= itask
4) (/= itask
5)) (go label105
))
247 (f2cl-lib:fref rwork-%data%
(1) ((1 lrw
)) rwork-%offset%
))
248 (if (< (* (- tcrit tout
) (- tout t$
)) 0.0d0
) (go label625
))
249 (if (and (/= h0
0.0d0
) (> (* (- (+ t$ h0
) tcrit
) h0
) 0.0d0
))
250 (setf h0
(- tcrit t$
)))
253 (setf (f2cl-lib:fref rwork-%data%
(lwm) ((1 lrw
)) rwork-%offset%
)
254 (f2cl-lib:fsqrt uround
))
266 (setf lyd0
(f2cl-lib:int-add lyh nyh
))
267 (setf lp
(f2cl-lib:int-add lwm
1))
268 (if (= istate
1) (go label120
))
270 (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8 var-9
272 (daigbt res adda neq t$ y
273 (f2cl-lib:array-slice rwork-%data%
279 (f2cl-lib:array-slice rwork-%data%
284 (f2cl-lib:array-slice iwork-%data%
290 (declare (ignore var-0 var-1 var-2 var-4 var-5 var-8 var-9
))
295 (setf nfe
(f2cl-lib:int-add nfe
1))
296 (if (< ier
0) (go label560
))
297 (if (> ier
0) (go label565
))
298 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
302 (setf (f2cl-lib:fref rwork-%data%
304 (f2cl-lib:int-add i lyh
)
308 (f2cl-lib:fref y-%data%
(i) ((1 *)) y-%offset%
))))
311 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
314 (setf (f2cl-lib:fref rwork-%data%
316 (f2cl-lib:int-add i lyh
)
320 (f2cl-lib:fref y-%data%
(i) ((1 *)) y-%offset%
))
322 (setf (f2cl-lib:fref rwork-%data%
324 (f2cl-lib:int-add i lyd0
)
328 (f2cl-lib:fref ydoti-%data%
335 (dewset n itol rtol atol
336 (f2cl-lib:array-slice rwork-%data%
341 (f2cl-lib:array-slice rwork-%data%
346 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
351 (f2cl-lib:fref rwork-%data%
352 ((f2cl-lib:int-sub
(f2cl-lib:int-add i lewt
)
359 (setf (f2cl-lib:fref rwork-%data%
361 (f2cl-lib:int-add i lewt
)
366 (f2cl-lib:fref rwork-%data%
368 (f2cl-lib:int-add i lewt
)
372 (if (/= h0
0.0d0
) (go label180
))
373 (setf tdist
(abs (- tout t$
)))
374 (setf w0
(max (abs t$
) (abs tout
)))
375 (if (< tdist
(* 2.0d0 uround w0
)) (go label622
))
376 (setf tol
(f2cl-lib:fref rtol-%data%
(1) ((1 *)) rtol-%offset%
))
377 (if (<= itol
2) (go label145
))
378 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
384 (f2cl-lib:fref rtol-%data%
389 (if (> tol
0.0d0
) (go label160
))
390 (setf atoli
(f2cl-lib:fref atol-%data%
(1) ((1 *)) atol-%offset%
))
391 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
394 (if (or (= itol
2) (= itol
4))
396 (f2cl-lib:fref atol-%data%
401 (abs (f2cl-lib:fref y-%data%
(i) ((1 *)) y-%offset%
)))
402 (if (/= ayi
0.0d0
) (setf tol
(max tol
(/ atoli ayi
))))
405 (setf tol
(max tol
(* 100.0d0 uround
)))
406 (setf tol
(min tol
0.001d0
))
409 (f2cl-lib:array-slice rwork-%data%
414 (f2cl-lib:array-slice rwork-%data%
419 (setf sum
(+ (/ 1.0d0
(* tol w0 w0
)) (* tol
(expt sum
2))))
420 (setf h0
(/ 1.0d0
(f2cl-lib:fsqrt sum
)))
421 (setf h0
(min h0 tdist
))
422 (setf h0
(f2cl-lib:sign h0
(- tout t$
)))
424 (setf rh
(* (abs h0
) hmxi
))
425 (if (> rh
1.0d0
) (setf h0
(/ h0 rh
)))
427 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
431 (setf (f2cl-lib:fref rwork-%data%
433 (f2cl-lib:int-add i lyd0
)
438 (f2cl-lib:fref rwork-%data%
440 (f2cl-lib:int-add i lyd0
)
447 (f2cl-lib:computed-goto
448 (label210 label250 label220 label230 label240
)
451 (if (< (* (- tn tout
) h
) 0.0d0
) (go label250
))
452 (multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5
)
454 (f2cl-lib:array-slice rwork-%data%
460 (declare (ignore var-0 var-1 var-2 var-3 var-4
))
462 (if (/= iflag
0) (go label627
))
466 (setf tp
(- tn
(* hu
(+ 1.0d0
(* 100.0d0 uround
)))))
467 (if (> (* (- tp tout
) h
) 0.0d0
) (go label623
))
468 (if (< (* (- tn tout
) h
) 0.0d0
) (go label250
))
472 (f2cl-lib:fref rwork-%data%
(1) ((1 lrw
)) rwork-%offset%
))
473 (if (> (* (- tn tcrit
) h
) 0.0d0
) (go label624
))
474 (if (< (* (- tcrit tout
) h
) 0.0d0
) (go label625
))
475 (if (< (* (- tn tout
) h
) 0.0d0
) (go label245
))
476 (multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5
)
478 (f2cl-lib:array-slice rwork-%data%
484 (declare (ignore var-0 var-1 var-2 var-3 var-4
))
486 (if (/= iflag
0) (go label627
))
491 (f2cl-lib:fref rwork-%data%
(1) ((1 lrw
)) rwork-%offset%
))
492 (if (> (* (- tn tcrit
) h
) 0.0d0
) (go label624
))
494 (setf hmx
(+ (abs tn
) (abs h
)))
495 (setf ihit
(<= (abs (- tn tcrit
)) (* 100.0d0 uround hmx
)))
496 (if ihit
(go label400
))
497 (setf tnext
(+ tn
(* h
(+ 1.0d0
(* 4.0d0 uround
)))))
498 (if (<= (* (- tnext tcrit
) h
) 0.0d0
) (go label250
))
499 (setf h
(* (- tcrit tn
) (- 1.0d0
(* 4.0d0 uround
))))
500 (if (= istate
2) (setf jstart -
2))
502 (if (>= (f2cl-lib:int-sub nst nslast
) mxstep
) (go label500
))
503 (dewset n itol rtol atol
504 (f2cl-lib:array-slice rwork-%data%
509 (f2cl-lib:array-slice rwork-%data%
514 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
519 (f2cl-lib:fref rwork-%data%
520 ((f2cl-lib:int-sub
(f2cl-lib:int-add i lewt
)
527 (setf (f2cl-lib:fref rwork-%data%
529 (f2cl-lib:int-add i lewt
)
534 (f2cl-lib:fref rwork-%data%
536 (f2cl-lib:int-add i lewt
)
544 (f2cl-lib:array-slice rwork-%data%
549 (f2cl-lib:array-slice rwork-%data%
554 (if (<= tolsf
1.0d0
) (go label280
))
555 (setf tolsf
(* tolsf
2.0d0
))
556 (if (= nst
0) (go label626
))
559 (if (/= (+ tn h
) tn
) (go label290
))
560 (setf nhnil
(f2cl-lib:int-add nhnil
1))
561 (if (> nhnil mxhnil
) (go label290
))
562 (f2cl-lib:f2cl-set-string msg
563 "DLSOIBT- Warning..Internal T (=R1) and H (=R2) are"
565 (xerrwd msg
50 101 0 0 0 0 0 0.0d0
0.0d0
)
566 (f2cl-lib:f2cl-set-string msg
567 " such that in the machine, T + H = T on the next step "
569 (xerrwd msg
60 101 0 0 0 0 0 0.0d0
0.0d0
)
570 (f2cl-lib:f2cl-set-string msg
571 " (H = step size). Solver will continue anyway."
573 (xerrwd msg
50 101 0 0 0 0 2 tn h
)
574 (if (< nhnil mxhnil
) (go label290
))
575 (f2cl-lib:f2cl-set-string msg
576 "DLSOIBT- Above warning has been issued I1 times. "
578 (xerrwd msg
50 102 0 0 0 0 0 0.0d0
0.0d0
)
579 (f2cl-lib:f2cl-set-string msg
580 " It will not be issued again for this problem."
582 (xerrwd msg
50 102 0 1 mxhnil
0 0 0.0d0
0.0d0
)
585 (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8 var-9
586 var-10 var-11 var-12 var-13 var-14 var-15
)
588 (f2cl-lib:array-slice rwork-%data%
594 (f2cl-lib:array-slice rwork-%data%
599 (f2cl-lib:array-slice rwork-%data%
605 (f2cl-lib:array-slice rwork-%data%
610 (f2cl-lib:array-slice rwork-%data%
615 (f2cl-lib:array-slice rwork-%data%
620 (f2cl-lib:array-slice iwork-%data%
625 res adda jac
#'dpjibt
#'dslsbt
)
626 (declare (ignore var-0 var-1 var-2 var-4 var-5 var-6 var-7 var-8
627 var-9 var-10 var-11 var-12 var-13 var-14
630 (setf kgo
(f2cl-lib:int-sub
1 kflag
))
631 (f2cl-lib:computed-goto
632 (label300 label530 label540 label400 label550
)
636 (f2cl-lib:computed-goto
637 (label310 label400 label330 label340 label350
)
640 (if (< (* (- tn tout
) h
) 0.0d0
) (go label250
))
641 (multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5
)
643 (f2cl-lib:array-slice rwork-%data%
649 (declare (ignore var-0 var-1 var-2 var-3 var-4
))
654 (if (>= (* (- tn tout
) h
) 0.0d0
) (go label400
))
657 (if (< (* (- tn tout
) h
) 0.0d0
) (go label345
))
658 (multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5
)
660 (f2cl-lib:array-slice rwork-%data%
666 (declare (ignore var-0 var-1 var-2 var-3 var-4
))
671 (setf hmx
(+ (abs tn
) (abs h
)))
672 (setf ihit
(<= (abs (- tn tcrit
)) (* 100.0d0 uround hmx
)))
673 (if ihit
(go label400
))
674 (setf tnext
(+ tn
(* h
(+ 1.0d0
(* 4.0d0 uround
)))))
675 (if (<= (* (- tnext tcrit
) h
) 0.0d0
) (go label250
))
676 (setf h
(* (- tcrit tn
) (- 1.0d0
(* 4.0d0 uround
))))
680 (setf hmx
(+ (abs tn
) (abs h
)))
681 (setf ihit
(<= (abs (- tn tcrit
)) (* 100.0d0 uround hmx
)))
683 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
687 (setf (f2cl-lib:fref y-%data%
(i) ((1 *)) y-%offset%
)
688 (f2cl-lib:fref rwork-%data%
690 (f2cl-lib:int-add i lyh
)
695 (if (and (/= itask
4) (/= itask
5)) (go label420
))
696 (if ihit
(setf t$ tcrit
))
699 (if (= kflag -
3) (setf istate
3))
700 (setf (f2cl-lib:fref rwork-%data%
(11) ((1 lrw
)) rwork-%offset%
)
702 (setf (f2cl-lib:fref rwork-%data%
(12) ((1 lrw
)) rwork-%offset%
) h
)
703 (setf (f2cl-lib:fref rwork-%data%
(13) ((1 lrw
)) rwork-%offset%
)
705 (setf (f2cl-lib:fref iwork-%data%
(11) ((1 liw
)) iwork-%offset%
)
707 (setf (f2cl-lib:fref iwork-%data%
(12) ((1 liw
)) iwork-%offset%
)
709 (setf (f2cl-lib:fref iwork-%data%
(13) ((1 liw
)) iwork-%offset%
)
711 (setf (f2cl-lib:fref iwork-%data%
(14) ((1 liw
)) iwork-%offset%
)
713 (setf (f2cl-lib:fref iwork-%data%
(15) ((1 liw
)) iwork-%offset%
)
717 (f2cl-lib:f2cl-set-string msg
718 "DLSOIBT- At current T (=R1), MXSTEP (=I1) steps "
720 (xerrwd msg
50 201 0 0 0 0 0 0.0d0
0.0d0
)
721 (f2cl-lib:f2cl-set-string msg
722 " taken on this call before reaching TOUT "
724 (xerrwd msg
50 201 0 1 mxstep
0 1 tn
0.0d0
)
729 (f2cl-lib:fref rwork-%data%
730 ((f2cl-lib:int-sub
(f2cl-lib:int-add lewt i
)
734 (f2cl-lib:f2cl-set-string msg
735 "DLSOIBT- At T (=R1), EWT(I1) has become R2 <= 0."
737 (xerrwd msg
50 202 0 1 i
0 2 tn ewti
)
741 (f2cl-lib:f2cl-set-string msg
742 "DLSOIBT- At T (=R1), too much accuracy requested "
744 (xerrwd msg
50 203 0 0 0 0 0 0.0d0
0.0d0
)
745 (f2cl-lib:f2cl-set-string msg
746 " for precision of machine.. See TOLSF (=R2) "
748 (xerrwd msg
50 203 0 0 0 0 2 tn tolsf
)
749 (setf (f2cl-lib:fref rwork-%data%
(14) ((1 lrw
)) rwork-%offset%
)
754 (f2cl-lib:f2cl-set-string msg
755 "DLSOIBT- At T (=R1) and step size H (=R2), the "
757 (xerrwd msg
50 204 0 0 0 0 0 0.0d0
0.0d0
)
758 (f2cl-lib:f2cl-set-string msg
759 "error test failed repeatedly or with ABS(H) = HMIN"
761 (xerrwd msg
50 204 0 0 0 0 2 tn h
)
765 (f2cl-lib:f2cl-set-string msg
766 "DLSOIBT- At T (=R1) and step size H (=R2), the "
768 (xerrwd msg
50 205 0 0 0 0 0 0.0d0
0.0d0
)
769 (f2cl-lib:f2cl-set-string msg
770 " corrector convergence failed repeatedly "
772 (xerrwd msg
50 205 0 0 0 0 0 0.0d0
0.0d0
)
773 (f2cl-lib:f2cl-set-string msg
774 " or with ABS(H) = HMIN "
776 (xerrwd msg
30 205 0 0 0 0 2 tn h
)
780 (f2cl-lib:f2cl-set-string msg
781 "DLSOIBT- At T (=R1) residual routine returned "
783 (xerrwd msg
50 206 0 0 0 0 0 0.0d0
0.0d0
)
784 (f2cl-lib:f2cl-set-string msg
785 " error IRES = 3 repeatedly. "
787 (xerrwd msg
40 206 0 0 0 0 1 tn
0.0d0
)
791 (setf ier
(f2cl-lib:int-sub ier
))
792 (f2cl-lib:f2cl-set-string msg
793 "DLSOIBT- Attempt to initialize dy/dt failed: Matrix A has a"
795 (xerrwd msg
60 207 0 0 0 0 0 0.0d0
0.0d0
)
796 (f2cl-lib:f2cl-set-string msg
797 " singular diagonal block, block no. = (I1) "
799 (xerrwd msg
50 207 0 1 ier
0 0 0.0d0
0.0d0
)
803 (f2cl-lib:f2cl-set-string msg
804 "DLSOIBT- Attempt to initialize dy/dt failed "
806 (xerrwd msg
50 208 0 0 0 0 0 0.0d0
0.0d0
)
807 (f2cl-lib:f2cl-set-string msg
808 " because residual routine set its error flag "
810 (xerrwd msg
50 208 0 0 0 0 0 0.0d0
0.0d0
)
811 (f2cl-lib:f2cl-set-string msg
" to IRES = (I1)" (string 60))
812 (xerrwd msg
20 208 0 1 ier
0 0 0.0d0
0.0d0
)
818 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
824 (f2cl-lib:fref rwork-%data%
826 (f2cl-lib:int-add i lacor
)
830 (f2cl-lib:fref rwork-%data%
832 (f2cl-lib:int-add i lewt
)
836 (if (>= big size
) (go label575
))
840 (setf (f2cl-lib:fref iwork-%data%
(16) ((1 liw
)) iwork-%offset%
)
843 (setf lyd0
(f2cl-lib:int-add lyh nyh
))
844 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
847 (setf (f2cl-lib:fref rwork-%data%
849 (f2cl-lib:int-add i lsavf
)
854 (f2cl-lib:fref rwork-%data%
856 (f2cl-lib:int-add i lyd0
)
862 (setf (f2cl-lib:fref y-%data%
(i) ((1 *)) y-%offset%
)
863 (f2cl-lib:fref rwork-%data%
865 (f2cl-lib:int-add i lyh
)
870 (multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5
)
875 (f2cl-lib:array-slice rwork-%data%
882 (declare (ignore var-0 var-2 var-3 var-4
))
887 (setf nfe
(f2cl-lib:int-add nfe
1))
888 (if (<= ires
1) (go label595
))
889 (f2cl-lib:f2cl-set-string msg
890 "DLSOIBT- Residual routine set its flag IRES "
892 (xerrwd msg
50 210 0 0 0 0 0 0.0d0
0.0d0
)
893 (f2cl-lib:f2cl-set-string msg
894 " to (I1) when called for final output. "
896 (xerrwd msg
50 210 0 1 ires
0 0 0.0d0
0.0d0
)
899 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
903 (setf (f2cl-lib:fref y-%data%
(i) ((1 *)) y-%offset%
)
904 (f2cl-lib:fref rwork-%data%
906 (f2cl-lib:int-add i lyh
)
912 (setf (f2cl-lib:fref rwork-%data%
(11) ((1 lrw
)) rwork-%offset%
)
914 (setf (f2cl-lib:fref rwork-%data%
(12) ((1 lrw
)) rwork-%offset%
) h
)
915 (setf (f2cl-lib:fref rwork-%data%
(13) ((1 lrw
)) rwork-%offset%
)
917 (setf (f2cl-lib:fref iwork-%data%
(11) ((1 liw
)) iwork-%offset%
)
919 (setf (f2cl-lib:fref iwork-%data%
(12) ((1 liw
)) iwork-%offset%
)
921 (setf (f2cl-lib:fref iwork-%data%
(13) ((1 liw
)) iwork-%offset%
)
923 (setf (f2cl-lib:fref iwork-%data%
(14) ((1 liw
)) iwork-%offset%
)
925 (setf (f2cl-lib:fref iwork-%data%
(15) ((1 liw
)) iwork-%offset%
)
929 (f2cl-lib:f2cl-set-string msg
930 "DLSOIBT- ISTATE (=I1) illegal."
932 (xerrwd msg
30 1 0 1 istate
0 0 0.0d0
0.0d0
)
933 (if (< istate
0) (go label800
))
936 (f2cl-lib:f2cl-set-string msg
937 "DLSOIBT- ITASK (=I1) illegal. "
939 (xerrwd msg
30 2 0 1 itask
0 0 0.0d0
0.0d0
)
942 (f2cl-lib:f2cl-set-string msg
943 "DLSOIBT- ISTATE > 1 but DLSOIBT not initialized. "
945 (xerrwd msg
50 3 0 0 0 0 0 0.0d0
0.0d0
)
948 (f2cl-lib:f2cl-set-string msg
949 "DLSOIBT- NEQ (=I1) < 1 "
952 (f2cl-lib:fref neq-%data%
(1) ((1 *)) neq-%offset%
) 0 0 0.0d0
956 (f2cl-lib:f2cl-set-string msg
957 "DLSOIBT- ISTATE = 3 and NEQ increased (I1 to I2). "
959 (xerrwd msg
50 5 0 2 n
960 (f2cl-lib:fref neq-%data%
(1) ((1 *)) neq-%offset%
) 0 0.0d0
0.0d0
)
963 (f2cl-lib:f2cl-set-string msg
964 "DLSOIBT- ITOL (=I1) illegal. "
966 (xerrwd msg
30 6 0 1 itol
0 0 0.0d0
0.0d0
)
969 (f2cl-lib:f2cl-set-string msg
970 "DLSOIBT- IOPT (=I1) illegal. "
972 (xerrwd msg
30 7 0 1 iopt
0 0 0.0d0
0.0d0
)
975 (f2cl-lib:f2cl-set-string msg
976 "DLSOIBT- MF (=I1) illegal. "
978 (xerrwd msg
30 8 0 1 mf
0 0 0.0d0
0.0d0
)
981 (f2cl-lib:f2cl-set-string msg
982 "DLSOIBT- MB (=I1) or NB (=I2) illegal. "
984 (xerrwd msg
40 9 0 2 mb nb
0 0.0d0
0.0d0
)
987 (f2cl-lib:f2cl-set-string msg
988 "DLSOIBT- NB (=I1) < 4 illegal. "
990 (xerrwd msg
40 10 0 1 nb
0 0 0.0d0
0.0d0
)
993 (f2cl-lib:f2cl-set-string msg
994 "DLSOIBT- MAXORD (=I1) < 0 "
996 (xerrwd msg
30 11 0 1 maxord
0 0 0.0d0
0.0d0
)
999 (f2cl-lib:f2cl-set-string msg
1000 "DLSOIBT- MXSTEP (=I1) < 0 "
1002 (xerrwd msg
30 12 0 1 mxstep
0 0 0.0d0
0.0d0
)
1005 (f2cl-lib:f2cl-set-string msg
1006 "DLSOIBT- MXHNIL (=I1) < 0 "
1008 (xerrwd msg
30 13 0 1 mxhnil
0 0 0.0d0
0.0d0
)
1011 (f2cl-lib:f2cl-set-string msg
1012 "DLSOIBT- TOUT (=R1) behind T (=R2) "
1014 (xerrwd msg
40 14 0 0 0 0 2 tout t$
)
1015 (f2cl-lib:f2cl-set-string msg
1016 " Integration direction is given by H0 (=R1) "
1018 (xerrwd msg
50 14 0 0 0 0 1 h0
0.0d0
)
1021 (f2cl-lib:f2cl-set-string msg
1022 "DLSOIBT- HMAX (=R1) < 0.0 "
1024 (xerrwd msg
30 15 0 0 0 0 1 hmax
0.0d0
)
1027 (f2cl-lib:f2cl-set-string msg
1028 "DLSOIBT- HMIN (=R1) < 0.0 "
1030 (xerrwd msg
30 16 0 0 0 0 1 hmin
0.0d0
)
1033 (f2cl-lib:f2cl-set-string msg
1034 "DLSOIBT- RWORK length needed, LENRW (=I1), exceeds LRW (=I2)"
1036 (xerrwd msg
60 17 0 2 lenrw lrw
0 0.0d0
0.0d0
)
1039 (f2cl-lib:f2cl-set-string msg
1040 "DLSOIBT- IWORK length needed, LENIW (=I1), exceeds LIW (=I2)"
1042 (xerrwd msg
60 18 0 2 leniw liw
0 0.0d0
0.0d0
)
1045 (f2cl-lib:f2cl-set-string msg
1046 "DLSOIBT- RTOL(=I1) is R1 < 0.0 "
1048 (xerrwd msg
40 19 0 1 i
0 1 rtoli
0.0d0
)
1051 (f2cl-lib:f2cl-set-string msg
1052 "DLSOIBT- ATOL(=I1) is R1 < 0.0 "
1054 (xerrwd msg
40 20 0 1 i
0 1 atoli
0.0d0
)
1058 (f2cl-lib:fref rwork-%data%
1059 ((f2cl-lib:int-sub
(f2cl-lib:int-add lewt i
)
1063 (f2cl-lib:f2cl-set-string msg
1064 "DLSOIBT- EWT(I1) is R1 <= 0.0 "
1066 (xerrwd msg
40 21 0 1 i
0 1 ewti
0.0d0
)
1069 (f2cl-lib:f2cl-set-string msg
1070 "DLSOIBT- TOUT(=R1) too close to T(=R2) to start integration."
1072 (xerrwd msg
60 22 0 0 0 0 2 tout t$
)
1075 (f2cl-lib:f2cl-set-string msg
1076 "DLSOIBT- ITASK = I1 and TOUT (=R1) behind TCUR - HU (= R2) "
1078 (xerrwd msg
60 23 0 1 itask
0 2 tout tp
)
1081 (f2cl-lib:f2cl-set-string msg
1082 "DLSOIBT- ITASK = 4 or 5 and TCRIT (=R1) behind TCUR (=R2) "
1084 (xerrwd msg
60 24 0 0 0 0 2 tcrit tn
)
1087 (f2cl-lib:f2cl-set-string msg
1088 "DLSOIBT- ITASK = 4 or 5 and TCRIT (=R1) behind TOUT (=R2) "
1090 (xerrwd msg
60 25 0 0 0 0 2 tcrit tout
)
1093 (f2cl-lib:f2cl-set-string msg
1094 "DLSOIBT- At start of problem, too much accuracy "
1096 (xerrwd msg
50 26 0 0 0 0 0 0.0d0
0.0d0
)
1097 (f2cl-lib:f2cl-set-string msg
1098 " requested for precision of machine.. See TOLSF (=R1) "
1100 (xerrwd msg
60 26 0 0 0 0 1 tolsf
0.0d0
)
1101 (setf (f2cl-lib:fref rwork-%data%
(14) ((1 lrw
)) rwork-%offset%
)
1105 (f2cl-lib:f2cl-set-string msg
1106 "DLSOIBT- Trouble in DINTDY. ITASK = I1, TOUT = R1"
1108 (xerrwd msg
50 27 0 1 itask
0 1 tout
0.0d0
)
1113 (f2cl-lib:f2cl-set-string msg
1114 "DLSOIBT- Run aborted.. apparent infinite loop. "
1116 (xerrwd msg
50 303 2 0 0 0 0 0.0d0
0.0d0
)
1140 (in-package #:cl-user
)
1141 #+#.
(cl:if
(cl:find-package
'#:f2cl
) '(and) '(or))
1142 (eval-when (:load-toplevel
:compile-toplevel
:execute
)
1143 (setf (gethash 'fortran-to-lisp
::dlsoibt
1144 fortran-to-lisp
::*f2cl-function-info
*)
1145 (fortran-to-lisp::make-f2cl-finfo
1146 :arg-types
'(t t t
(array fortran-to-lisp
::integer4
(*))
1147 (array double-float
(*)) (array double-float
(*))
1148 (double-float) (double-float)
1149 (fortran-to-lisp::integer4
) (array double-float
(*))
1150 (array double-float
(*)) (fortran-to-lisp::integer4
)
1151 (fortran-to-lisp::integer4
) (fortran-to-lisp::integer4
)
1152 (array double-float
(*)) (fortran-to-lisp::integer4
)
1153 (array fortran-to-lisp
::integer4
(*))
1154 (fortran-to-lisp::integer4
)
1155 (fortran-to-lisp::integer4
))
1156 :return-values
'(nil nil nil nil nil nil fortran-to-lisp
::t$ nil nil
1157 nil nil nil fortran-to-lisp
::istate nil nil nil nil
1159 :calls
'(fortran-to-lisp::dstodi fortran-to-lisp
::xerrwd
1160 fortran-to-lisp
::dintdy fortran-to-lisp
::dvnorm
1161 fortran-to-lisp
::dewset fortran-to-lisp
::daigbt
))))