5 SUBROUTINE dnsk(X,Y,YPRIME,NEQ,RES,PSOL,WT,RPAR,IPAR,
6 * savr,delta,e,wm,iwm,cj,sqrtn,rsqrtn,eplin,epcon,
7 * s,confac,tolnew,muldel,maxit,ires,iersl,iernew)
93 IMPLICIT DOUBLE PRECISION(a-h,o-z)
94 dimension y(*),yprime(*),wt(*),delta(*),e(*),savr(*)
98 parameter(lnni=19, lnre=12)
109 iwm(lnni) = iwm(lnni) + 1
113 IF (muldel .EQ. 1)
THEN
115 320 delta(i) = delta(i) * confac
121 340 savr(i) = delta(i)
125 CALL
dslvk(neq, y,
x, yprime, savr, delta, wt, wm, iwm,
126 * res, ires, psol, iersl, cj, eplin, sqrtn, rsqrtn, rhok,
128 IF (ires .NE. 0 .OR. iersl .NE. 0) go to 380
133 y(i) = y(i) - delta(i)
134 e(i) = e(i) - delta(i)
135 360 yprime(i) = yprime(i) - cj*delta(i)
139 delnrm =
ddwnrm(neq,delta,wt,rpar,ipar)
140 IF (delnrm .LE. tolnew) go to 370
144 rate = (delnrm/oldnrm)**(1.0d0/m)
145 IF (rate .GT. 0.9d0) go to 380
146 s = rate/(1.0d0 - rate)
148 IF (s*delnrm .LE. epcon) go to 370
154 IF (m .GE. maxit) go to 380
158 iwm(lnre) = iwm(lnre) + 1
159 CALL res(
x,y,yprime,cj,delta,ires,rpar,ipar)
160 IF (ires .LT. 0) go to 380
170 IF (ires .LE. -2 .OR. iersl .LT. 0)
THEN