1 SUBROUTINE prepj(neq, y, yh, nyh, ewt, ftem, savf, wm, iwm,
10 INTEGER,
DIMENSION(*) :: neq, iwm
11 REAL(rprec),
DIMENSION(*) :: y
12 REAL(rprec),
DIMENSION(nyh,*) :: yh
13 REAL(rprec),
DIMENSION(*) :: ewt, ftem, savf, wm
18 COMMON /ls0001/ rowns(209), ccmax, el0, h, hmin, hmxi, hu, rc, tn
19 1 , uround, iownd(14), iowns(6), icf, ierpj, iersl, jcur, jstart
20 2 , kflag, l, meth, miter, maxord, maxcor, msbp, mxncf, n, nq,
22 INTEGER iownd, iowns, icf, ierpj, iersl, jcur, jstart, kflag, l
23 1 , meth, miter, maxord, maxcor, msbp, mxncf, n, nq, nst, nfe,
25 REAL(rprec) ::rowns, ccmax, el0, h, hmin, hmxi, hu, rc, tn,
30 INTEGER :: i, i1, i2, ier, ii, j, j1, jj, lenp, mba, mband, meb1,
31 1 meband, ml, ml3, mu, np1
32 REAL(rprec) :: con, di, fac, hl0, r, r0, srur, yj, yjj
36 REAL(rprec) ,
EXTERNAL :: vnorm
78 GOTO (100,200,300,400,500) miter
83 CALL jac (neq, tn, y, 0, 0, wm(3), n)
85 wm(3:lenp+2) = wm(3:lenp+2)*con
89 fac = vnorm(n,savf,ewt)
90 r0 = 1000.0_dp*abs(h)*uround*n*fac
91 IF (r0 == 0.0_dp) r0 = 1.0_dp
96 r = max(srur*abs(yj),r0/ewt(j))
99 CALL f (neq, tn, y, ftem)
100 wm(1+j1:n+j1) = (ftem(:n)-savf(:n))*fac
109 wm(j:(n-1)*np1+j:np1) = wm(j:(n-1)*np1+j:np1) + 1.0_dp
111 CALL li_gefa (wm(3:3+n*n), n, n, iwm(21:21+n), ier)
112 IF (ier /= 0) ierpj = 1
118 y(:n) = y(:n) + r*(h*savf(:n)-yh(:n,2))
119 CALL f (neq, tn, y, wm(3))
122 r0 = h*savf(i) - yh(i,2)
123 di = 0.1_dp*r0 - h*(wm(i+2)-savf(i))
125 IF (abs(r0) >= uround/ewt(i))
THEN
126 IF (abs(di) == 0.0_dp)
GOTO 330
127 wm(i+2) = 0.1_dp*r0/di
142 wm(3:lenp+2) = 0.0_dp
143 CALL jac (neq, tn, y, ml, mu, wm(ml3), meband)
145 wm(3:lenp+2) = wm(3:lenp+2)*con
156 fac = vnorm(n,savf,ewt)
157 r0 = 1000.0_dp*abs(h)*uround*n*fac
158 IF (r0 == 0.0_dp) r0 = 1.0_dp
160 y(j:n:mband) = y(j:n:mband) + max(srur*abs(y(j:n:mband)),r0/
162 CALL f (neq, tn, y, ftem)
166 r = max(srur*abs(yjj),r0/ewt(jj))
170 ii = jj*meb1 - ml + 2
171 wm(ii+i1:i2+ii) = (ftem(i1:i2)-savf(i1:i2))*fac
178 wm(ii:(n-1)*meband+ii:meband) = wm(ii:(n-1)*meband+ii:meband) +
181 CALL li_gbfa (wm(3:3+meband*n), meband, n, ml, mu,
183 IF (ier /= 0) ierpj = 1