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
subroutine dslvk(NEQ, Y, TN, YPRIME, SAVR, X, EWT, WM, IWM, RES, IRES, PSOL, IERSL, CJ, EPLIN, SQRTN, RSQRTN, RHOK, RPAR, IPAR)
std::string dimension(void) const
subroutine dnsk(X, Y, YPRIME, NEQ, RES, PSOL, WT, RPAR, IPAR, SAVR, DELTA, E, WM, IWM, CJ, SQRTN, RSQRTN, EPLIN, EPCON, S, CONFAC, TOLNEW, MULDEL, MAXIT, IRES, IERSL, IERNEW)
double precision function ddwnrm(NEQ, V, RWT, RPAR, IPAR)