Math-Lsoda
view release on metacpan or search on metacpan
C 0 the step was succesful.
C -1 the requested error could not be achieved.
C -2 corrector convergence could not be achieved.
C -3 fatal error in PJAC or SLVS.
C A return with KFLAG = -1 or -2 means either
C abs(H) = HMIN or 10 consecutive failures occurred.
C On a return with KFLAG negative, the values of TN and
C the YH array are as of the beginning of the last
C step, and H is the last step size attempted.
C MAXORD = the maximum order of integration method to be allowed.
C MAXCOR = the maximum number of corrector iterations allowed.
C MSBP = maximum number of steps between PJAC calls (MITER .gt. 0).
C MXNCF = maximum number of convergence failures allowed.
C METH/MITER = the method flags. See description in driver.
C N = the number of first-order differential equations.
C The values of CCMAX, H, HMIN, HMXI, TN, JSTART, KFLAG, MAXORD,
C MAXCOR, MSBP, MXNCF, METH, MITER, and N are communicated via COMMON.
C
C***SEE ALSO DLSODE
C***ROUTINES CALLED DCFODE, DVNORM
C***COMMON BLOCKS DLS001
IF (NST .GE. NSLP+MSBP) IPUP = MITER
TN = TN + H
I1 = NQNYH + 1
DO 215 JB = 1,NQ
I1 = I1 - NYH
Cdir$ ivdep
DO 210 I = I1,NQNYH
210 YH1(I) = YH1(I) + YH1(I+NYH)
215 CONTINUE
C-----------------------------------------------------------------------
C Up to MAXCOR corrector iterations are taken. A convergence test is
C made on the R.M.S. norm of each correction, weighted by the error
C weight vector EWT. The sum of the corrections is accumulated in the
C vector ACOR(i). The YH array is not altered in the corrector loop.
C-----------------------------------------------------------------------
220 M = 0
DO 230 I = 1,N
230 Y(I) = YH(I,1)
CALL F (NEQ, TN, Y, SAVF)
NFE = NFE + 1
IF (IPUP .LE. 0) GO TO 250
C 0 the step was succesful.
C -1 the requested error could not be achieved.
C -2 corrector convergence could not be achieved.
C -3 fatal error in PJAC or SLVS.
C A return with KFLAG = -1 or -2 means either
C ABS(H) = HMIN or 10 consecutive failures occurred.
C On a return with KFLAG negative, the values of TN and
C the YH array are as of the beginning of the last
C step, and H is the last step size attempted.
C MAXORD = the maximum order of integration method to be allowed.
C MAXCOR = the maximum number of corrector iterations allowed.
C MSBP = maximum number of steps between PJAC calls (MITER .gt. 0).
C MXNCF = maximum number of convergence failures allowed.
C METH = current method.
C METH = 1 means Adams method (nonstiff)
C METH = 2 means BDF method (stiff)
C METH may be reset by DSTODA.
C MITER = corrector iteration method.
C MITER = 0 means functional iteration.
C MITER = JT .gt. 0 means a chord iteration corresponding
C to Jacobian type JT. (The DLSODA/DLSODAR argument JT is
TN = TN + H
I1 = NQNYH + 1
DO 215 JB = 1,NQ
I1 = I1 - NYH
CDIR$ IVDEP
DO 210 I = I1,NQNYH
210 YH1(I) = YH1(I) + YH1(I+NYH)
215 CONTINUE
PNORM = DMNORM (N, YH1, EWT)
C-----------------------------------------------------------------------
C Up to MAXCOR corrector iterations are taken. A convergence test is
C made on the RMS-norm of each correction, weighted by the error
C weight vector EWT. The sum of the corrections is accumulated in the
C vector ACOR(i). The YH array is not altered in the corrector loop.
C-----------------------------------------------------------------------
220 M = 0
RATE = 0.0D0
DEL = 0.0D0
DO 230 I = 1,N
230 Y(I) = YH(I,1)
CALL F (NEQ, TN, Y, SAVF)
DO 380 I = 1,N
ACOR(I) = ACOR(I) + Y(I)
380 Y(I) = YH(I,1) + EL(1)*ACOR(I)
C-----------------------------------------------------------------------
C Test for convergence. If M .gt. 0, an estimate of the convergence
C rate constant is stored in CRATE, and this is used in the test.
C
C We first check for a change of iterates that is the size of
C roundoff error. If this occurs, the iteration has converged, and a
C new rate estimate is not formed.
C In all other cases, force at least two iterations to estimate a
C local Lipschitz constant estimate for Adams methods.
C On convergence, form PDEST = local maximum Lipschitz constant
C estimate. PDLAST is the most recent nonzero estimate.
C-----------------------------------------------------------------------
400 CONTINUE
IF (DEL .LE. 100.0D0*PNORM*UROUND) GO TO 450
IF (M .EQ. 0 .AND. METH .EQ. 1) GO TO 405
IF (M .EQ. 0) GO TO 402
RM = 1024.0D0
IF (DEL .LE. 1024.0D0*DELP) RM = DEL/DELP
C 0 the step was succesful.
C -1 the requested error could not be achieved.
C -2 corrector convergence could not be achieved.
C -3 fatal error in DPKSET or DSOLPK.
C A return with KFLAG = -1 or -2 means either
C ABS(H) = HMIN or 10 consecutive failures occurred.
C On a return with KFLAG negative, the values of TN and
C the YH array are as of the beginning of the last
C step, and H is the last step size attempted.
C MAXORD = the maximum order of integration method to be allowed.
C MAXCOR = the maximum number of corrector iterations allowed.
C MSBP = maximum number of steps between DPKSET calls (MITER .gt. 0).
C MXNCF = maximum number of convergence failures allowed.
C METH/MITER = the method flags. See description in driver.
C N = the number of first-order differential equations.
C-----------------------------------------------------------------------
INTEGER I, I1, IREDO, IRET, J, JB, M, NCF, NEWQ
DOUBLE PRECISION DCON, DDN, DEL, DELP, DSM, DUP, EXDN, EXSM, EXUP,
1 R, RH, RHDN, RHSM, RHUP, TOLD, DVNORM
C
KFLAG = 0
IF (NST .GE. NSLP+MSBP) IPUP = MITER
205 TN = TN + H
I1 = NQNYH + 1
DO 215 JB = 1,NQ
I1 = I1 - NYH
CDIR$ IVDEP
DO 210 I = I1,NQNYH
210 YH1(I) = YH1(I) + YH1(I+NYH)
215 CONTINUE
C-----------------------------------------------------------------------
C Up to MAXCOR corrector iterations are taken. A convergence test is
C made on the RMS-norm of each correction, weighted by the error
C weight vector EWT. The sum of the corrections is accumulated in the
C vector ACOR(i). The YH array is not altered in the corrector loop.
C-----------------------------------------------------------------------
220 M = 0
MNEWT = 0
DO 230 I = 1,N
230 Y(I) = YH(I,1)
CALL F (NEQ, TN, Y, SAVF)
NFE = NFE + 1
C V = the N by (LIOM+1) array containing the LIOM
C orthogonal vectors V(*,1) to V(*,LIOM).
C
C HES = the LU factorization of the LIOM by LIOM upper
C Hessenberg matrix whose entries are the
C scaled inner products of A*V(*,k) and V(*,i).
C
C IPVT = an integer array containg pivoting information.
C It is loaded in DHEFA and used in DHESL.
C
C LIOM = the number of iterations performed, and current
C order of the upper Hessenberg matrix HES.
C
C NPSL = the number of calls to PSOL.
C
C IFLAG = integer error flag:
C 0 means convergence in LIOM iterations, LIOM.le.MAXL.
C 1 means the convergence test did not pass in MAXL
C iterations, but the residual norm is .lt. 1,
C or .lt. norm(b) if MNEWT = 0, and so X is computed.
C 2 means the convergence test did not pass in MAXL
C iterations, residual .gt. 1, and X is undefined.
C 3 means there was a recoverable error in PSOL
C caused by the preconditioner being out of date.
C -1 means there was a nonrecoverable error in PSOL.
C
C-----------------------------------------------------------------------
INTEGER I, IER, INFO, J, K, LL, LM1
DOUBLE PRECISION BNRM, BNRM0, PROD, RHO, SNORMW, DNRM2, TEM
C
IFLAG = 0
LIOM = 0
C
C WP = real work array used by preconditioner PSOL.
C
C IWP = integer work array used by preconditioner PSOL.
C
C On return
C
C X = the final computed approximation to the solution
C of the system A*x = b.
C
C LGMR = the number of iterations performed and
C the current order of the upper Hessenberg
C matrix HES.
C
C NPSL = the number of calls to PSOL.
C
C V = the N by (LGMR+1) array containing the LGMR
C orthogonal vectors V(*,1) to V(*,LGMR).
C
C HES = the upper triangular factor of the QR decomposition
C of the (LGMR+1) by lgmr upper Hessenberg matrix whose
C entries are the scaled inner-products of A*V(*,i)
C and V(*,k).
C
C Q = real array of length 2*MAXL containing the components
C of the Givens rotations used in the QR decomposition
C of HES. It is loaded in DHEQR and used in DHELS.
C
C IFLAG = integer error flag:
C 0 means convergence in LGMR iterations, LGMR .le. MAXL.
C 1 means the convergence test did not pass in MAXL
C iterations, but the residual norm is .lt. 1,
C or .lt. norm(b) if MNEWT = 0, and so x is computed.
C 2 means the convergence test did not pass in MAXL
C iterations, residual .gt. 1, and X is undefined.
C 3 means there was a recoverable error in PSOL
C caused by the preconditioner being out of date.
C -1 means there was a nonrecoverable error in PSOL.
C
C-----------------------------------------------------------------------
INTEGER I, IER, INFO, IP1, I2, J, K, LL, LLP1
DOUBLE PRECISION BNRM,BNRM0,C,DLNRM,PROD,RHO,S,SNORMW,DNRM2,TEM
C
IFLAG = 0
LGMR = 0
C
C WP = real work array used by preconditioner PSOL.
C
C IWP = integer work array used by preconditioner PSOL.
C
C On return
C
C X = the final computed approximation to the solution
C of the system A*x = b.
C
C LPCG = the number of iterations performed, and current
C order of the upper Hessenberg matrix HES.
C
C NPSL = the number of calls to PSOL.
C
C IFLAG = integer error flag:
C 0 means convergence in LPCG iterations, LPCG .le. MAXL.
C 1 means the convergence test did not pass in MAXL
C iterations, but the residual norm is .lt. 1,
C or .lt. norm(b) if MNEWT = 0, and so X is computed.
C 2 means the convergence test did not pass in MAXL
C iterations, residual .gt. 1, and X is undefined.
C 3 means there was a recoverable error in PSOL
C caused by the preconditioner being out of date.
C 4 means there was a zero denominator in the algorithm.
C The system matrix or preconditioner matrix is not
C sufficiently close to being symmetric pos. definite.
C -1 means there was a nonrecoverable error in PSOL.
C
C-----------------------------------------------------------------------
INTEGER I, IER
DOUBLE PRECISION ALPHA,BETA,BNRM,PTW,RNRM,DDOT,DVNORM,ZTR,ZTR0
DO 10 I = 1,N
10 X(I) = 0.0D0
BNRM = DVNORM (N, R, WGHT)
C Test for immediate return with X = 0 or X = b. -----------------------
IF (BNRM .GT. DELTA) GO TO 20
IF (MNEWT .GT. 0) RETURN
CALL DCOPY (N, R, 1, X, 1)
RETURN
C
20 ZTR = 0.0D0
C Loop point for PCG iterations. ---------------------------------------
30 CONTINUE
LPCG = LPCG + 1
CALL DCOPY (N, R, 1, Z, 1)
IER = 0
IF (JPRE .EQ. 0) GO TO 40
CALL PSOL (NEQ, TN, Y, SAVF, WK, HL0, WP, IWP, Z, 3, IER)
NPSL = NPSL + 1
IF (IER .NE. 0) GO TO 100
40 CONTINUE
ZTR0 = ZTR
C
C WP = real work array used by preconditioner PSOL.
C
C IWP = integer work array used by preconditioner PSOL.
C
C On return
C
C X = the final computed approximation to the solution
C of the system A*x = b.
C
C LPCG = the number of iterations performed, and current
C order of the upper Hessenberg matrix HES.
C
C NPSL = the number of calls to PSOL.
C
C IFLAG = integer error flag:
C 0 means convergence in LPCG iterations, LPCG .le. MAXL.
C 1 means the convergence test did not pass in MAXL
C iterations, but the residual norm is .lt. 1,
C or .lt. norm(b) if MNEWT = 0, and so X is computed.
C 2 means the convergence test did not pass in MAXL
C iterations, residual .gt. 1, and X is undefined.
C 3 means there was a recoverable error in PSOL
C caused by the preconditioner being out of date.
C 4 means there was a zero denominator in the algorithm.
C the scaled matrix or scaled preconditioner is not
C sufficiently close to being symmetric pos. definite.
C -1 means there was a nonrecoverable error in PSOL.
C
C-----------------------------------------------------------------------
INTEGER I, IER
DOUBLE PRECISION ALPHA, BETA, BNRM, PTW, RNRM, DVNORM, ZTR, ZTR0
DO 10 I = 1,N
10 X(I) = 0.0D0
BNRM = DVNORM (N, R, WGHT)
C Test for immediate return with X = 0 or X = b. -----------------------
IF (BNRM .GT. DELTA) GO TO 20
IF (MNEWT .GT. 0) RETURN
CALL DCOPY (N, R, 1, X, 1)
RETURN
C
20 ZTR = 0.0D0
C Loop point for PCG iterations. ---------------------------------------
30 CONTINUE
LPCG = LPCG + 1
CALL DCOPY (N, R, 1, Z, 1)
IER = 0
IF (JPRE .EQ. 0) GO TO 40
CALL PSOL (NEQ, TN, Y, SAVF, WK, HL0, WP, IWP, Z, 3, IER)
NPSL = NPSL + 1
IF (IER .NE. 0) GO TO 100
40 CONTINUE
ZTR0 = ZTR
C T0 = initial value of independent variable, input.
C Y0 = vector of initial conditions, input.
C YDOT = vector of initial first derivatives, input.
C F = name of subroutine for right-hand side f(t,y), input.
C TOUT = first output value of independent variable
C UROUND = machine unit roundoff
C EWT, ITOL, ATOL = error weights and tolerance parameters
C as described in the driver routine, input.
C Y, TEMP = work arrays of length N.
C H0 = step size to be attempted, output.
C NITER = number of iterations (and of f evaluations) to compute H0,
C output.
C IER = the error flag, returned with the value
C IER = 0 if no trouble occurred, or
C IER = -1 if TOUT and t0 are considered too close to proceed.
C-----------------------------------------------------------------------
C
C Type declarations for local variables --------------------------------
C
DOUBLE PRECISION AFI, ATOLI, DELYI, HALF, HG, HLB, HNEW, HRAT,
1 HUB, HUN, PT1, T1, TDIST, TROUND, TWO, DVNORM, YDDNRM
C Get the corresponding new value of H. --------------------------------
IF (YDDNRM*HUB*HUB .GT. TWO) THEN
HNEW = SQRT(TWO/YDDNRM)
ELSE
HNEW = SQRT(HG*HUB)
ENDIF
ITER = ITER + 1
C-----------------------------------------------------------------------
C Test the stopping conditions.
C Stop if the new and previous H values differ by a factor of .lt. 2.
C Stop if four iterations have been done. Also, stop with previous H
C if hnew/hg .gt. 2 after first iteration, as this probably means that
C the second derivative value is bad because of cancellation error.
C-----------------------------------------------------------------------
IF (ITER .GE. 4) GO TO 80
HRAT = HNEW/HG
IF ( (HRAT .GT. HALF) .AND. (HRAT .LT. TWO) ) GO TO 80
IF ( (ITER .GE. 2) .AND. (HNEW .GT. TWO*HG) ) THEN
HNEW = HG
GO TO 80
ENDIF
C 0 the step was succesful.
C -1 the requested error could not be achieved.
C -2 corrector convergence could not be achieved.
C -3 fatal error in DSETPK or DSOLPK.
C A return with KFLAG = -1 or -2 means either
C ABS(H) = HMIN or 10 consecutive failures occurred.
C On a return with KFLAG negative, the values of TN and
C the YH array are as of the beginning of the last
C step, and H is the last step size attempted.
C MAXORD = the maximum order of integration method to be allowed.
C MAXCOR = the maximum number of corrector iterations allowed.
C MSBP = maximum number of steps between DSETPK calls (MITER .gt. 0).
C MXNCF = maximum number of convergence failures allowed.
C METH/MITER = the method flags. See description in driver.
C N = the number of first-order differential equations.
C-----------------------------------------------------------------------
INTEGER I, I1, IREDO, IRET, J, JB, JOK, M, NCF, NEWQ, NSLOW
DOUBLE PRECISION DCON, DDN, DEL, DELP, DRC, DSM, DUP, EXDN, EXSM,
1 EXUP, DFNORM, R, RH, RHDN, RHSM, RHUP, ROC, STIFF, TOLD, DVNORM
C
KFLAG = 0
ENDIF
TN = TN + H
I1 = NQNYH + 1
DO 215 JB = 1,NQ
I1 = I1 - NYH
CDIR$ IVDEP
DO 210 I = I1,NQNYH
210 YH1(I) = YH1(I) + YH1(I+NYH)
215 CONTINUE
C-----------------------------------------------------------------------
C Up to MAXCOR corrector iterations are taken. A convergence test is
C made on the RMS-norm of each correction, weighted by the error
C weight vector EWT. The sum of the corrections is accumulated in the
C vector ACOR(i). The YH array is not altered in the corrector loop.
C Within the corrector loop, an estimated rate of convergence (ROC)
C and a stiffness ratio estimate (STIFF) are kept. Corresponding
C global estimates are kept as CRATE and stifr.
C-----------------------------------------------------------------------
220 M = 0
MNEWT = 0
STIFF = 0.0D0
C -2 corrector convergence could not be achieved.
C -3 RES ordered immediate return.
C -4 error condition from RES could not be avoided.
C -5 fatal error in PJAC or SLVS.
C A return with KFLAG = -1, -2, or -4 means either
C ABS(H) = HMIN or 10 consecutive failures occurred.
C On a return with KFLAG negative, the values of TN and
C the YH array are as of the beginning of the last
C step, and H is the last step size attempted.
C MAXORD = the maximum order of integration method to be allowed.
C MAXCOR = the maximum number of corrector iterations allowed.
C MSBP = maximum number of steps between PJAC calls.
C MXNCF = maximum number of convergence failures allowed.
C METH/MITER = the method flags. See description in driver.
C N = the number of first-order differential equations.
C-----------------------------------------------------------------------
KFLAG = 0
TOLD = TN
NCF = 0
IERPJ = 0
IERSL = 0
IF (NST .GE. NSLP+MSBP) IPUP = MITER
TN = TN + H
I1 = NQNYH + 1
DO 215 JB = 1,NQ
I1 = I1 - NYH
CDIR$ IVDEP
DO 210 I = I1,NQNYH
210 YH1(I) = YH1(I) + YH1(I+NYH)
215 CONTINUE
C-----------------------------------------------------------------------
C Up to MAXCOR corrector iterations are taken. A convergence test is
C made on the RMS-norm of each correction, weighted by H and the
C error weight vector EWT. The sum of the corrections is accumulated
C in ACOR(i). The YH array is not altered in the corrector loop.
C-----------------------------------------------------------------------
220 M = 0
DO 230 I = 1,N
SAVF(I) = YH(I,2) / H
230 Y(I) = YH(I,1)
IF (IPUP .LE. 0) GO TO 240
C-----------------------------------------------------------------------
C
C MXSTEP IWORK(6) maximum number of (internally defined) steps
C allowed during one call to the solver.
C The default value is 500.
C
C MXHNIL IWORK(7) maximum number of messages printed (per problem)
C warning that T + H = T on a step (H = step size).
C This must be positive to result in a non-default
C value. The default value is 10.
C
C MAXL IWORK(8) maximum number of iterations in the SPIOM, SPIGMR,
C PCG, or PCGS algorithm (.le. NEQ).
C The default is MAXL = MIN(5,NEQ).
C
C KMP IWORK(9) number of vectors on which orthogonalization
C is done in SPIOM or SPIGMR algorithm (.le. MAXL).
C The default is KMP = MAXL.
C Note: When KMP .lt. MAXL and MF = 22, the length
C of RWORK must be defined accordingly. See
C the definition of RWORK above.
C-----------------------------------------------------------------------
C on an error return with ISTATE = -4 or -5.
C
C LENRW IWORK(17) the length of RWORK actually required.
C This is defined on normal returns and on an illegal
C input return for insufficient storage.
C
C LENIW IWORK(18) the length of IWORK actually required.
C This is defined on normal returns and on an illegal
C input return for insufficient storage.
C
C NNI IWORK(19) number of nonlinear iterations so far (each of
C which calls an iterative linear solver).
C
C NLI IWORK(20) number of linear iterations so far.
C Note: A measure of the success of algorithm is
C the average number of linear iterations per
C nonlinear iteration, given by NLI/NNI.
C If this is close to MAXL, MAXL may be too small.
C
C NPS IWORK(21) number of preconditioning solve operations
C (PSOL calls) so far.
C
C NCFN IWORK(22) number of convergence failures of the nonlinear
C (Newton) iteration so far.
C Note: A measure of success is the overall
C rate of nonlinear convergence failures, NCFN/NST.
LCFL = RCFL .GT. 0.9D0
LWARN = LAVD .OR. LCFN .OR. LCFL
IF (.NOT.LWARN) GO TO 255
NWARN = NWARN + 1
IF (NWARN .GT. 10) GO TO 255
IF (LAVD) THEN
MSG='DLSODPK- Warning. Poor iterative algorithm performance seen '
CALL XERRWD (MSG, 60, 111, 0, 0, 0, 0, 0, 0.0D0, 0.0D0)
ENDIF
IF (LAVD) THEN
MSG=' at T = R1 by average no. of linear iterations = R2 '
CALL XERRWD (MSG, 60, 111, 0, 0, 0, 0, 2, TN, AVDIM)
ENDIF
IF (LCFN) THEN
MSG='DLSODPK- Warning. Poor iterative algorithm performance seen '
CALL XERRWD (MSG, 60, 112, 0, 0, 0, 0, 0, 0.0D0, 0.0D0)
ENDIF
IF (LCFN) THEN
MSG=' at T = R1 by nonlinear convergence failure rate = R2 '
CALL XERRWD (MSG, 60, 112, 0, 0, 0, 0, 2, TN, RCFN)
ENDIF
C
C MXSTEP IWORK(6) maximum number of (internally defined) steps
C allowed during one call to the solver.
C The default value is 500.
C
C MXHNIL IWORK(7) maximum number of messages printed (per problem)
C warning that T + H = T on a step (H = step size).
C This must be positive to result in a non-default
C value. The default value is 10.
C
C MAXL IWORK(8) maximum number of iterations in the SPIOM, SPIGMR,
C PCG, or PCGS algorithm (.le. NEQ).
C The default is MAXL = MIN(5,NEQ).
C
C KMP IWORK(9) number of vectors on which orthogonalization
C is done in SPIOM or SPIGMR algorithm (.le. MAXL).
C The default is KMP = MAXL.
C Note: When KMP .lt. MAXL and MF = 22, the length
C of RWORK must be defined accordingly. See
C the definition of RWORK above.
C-----------------------------------------------------------------------
C on an error return with ISTATE = -4 or -5.
C
C LENRW IWORK(17) the length of RWORK actually required.
C This is defined on normal returns and on an illegal
C input return for insufficient storage.
C
C LENIW IWORK(18) the length of IWORK actually required.
C This is defined on normal returns and on an illegal
C input return for insufficient storage.
C
C NNI IWORK(19) number of nonlinear iterations so far (each of
C which calls an iterative linear solver).
C
C NLI IWORK(20) number of linear iterations so far.
C Note: A measure of the success of algorithm is
C the average number of linear iterations per
C nonlinear iteration, given by NLI/NNI.
C If this is close to MAXL, MAXL may be too small.
C
C NPS IWORK(21) number of preconditioning solve operations
C (PSOL calls) so far.
C
C NCFN IWORK(22) number of convergence failures of the nonlinear
C (Newton) iteration so far.
C Note: A measure of success is the overall
C rate of nonlinear convergence failures, NCFN/NST.
LCFL = RCFL .GT. 0.9D0
LWARN = LAVD .OR. LCFN .OR. LCFL
IF (.NOT.LWARN) GO TO 255
NWARN = NWARN + 1
IF (NWARN .GT. 10) GO TO 255
IF (LAVD) THEN
MSG='DLSODKR- Warning. Poor iterative algorithm performance seen '
CALL XERRWD (MSG, 60, 111, 0, 0, 0, 0, 0, 0.0D0, 0.0D0)
ENDIF
IF (LAVD) THEN
MSG=' at T = R1 by average no. of linear iterations = R2 '
CALL XERRWD (MSG, 60, 111, 0, 0, 0, 0, 2, TN, AVDIM)
ENDIF
IF (LCFN) THEN
MSG='DLSODKR- Warning. Poor iterative algorithm performance seen '
CALL XERRWD (MSG, 60, 112, 0, 0, 0, 0, 0, 0.0D0, 0.0D0)
ENDIF
IF (LCFN) THEN
MSG=' at T = R1 by nonlinear convergence failure rate = R2 '
CALL XERRWD (MSG, 60, 112, 0, 0, 0, 0, 2, TN, RCFN)
ENDIF
( run in 2.019 seconds using v1.01-cache-2.11-cpan-71847e10f99 )