1 SUBROUTINE ddajac (NEQ, X, Y, YPRIME, DELTA, CJ, H,
2 + IER, WT, E, WM, IWM, RES, IRES, UROUND, JAC, RPAR,
59 INTEGER NEQ, IER, IWM(*), IRES, IPAR(*), NTEMP
61 * x, y(*), yprime(*), delta(*), cj, h, wt(*), e(*), wm(*),
65 EXTERNAL dgbtrf, dgetrf
67 INTEGER I, I1, I2, II, IPSAVE, ISAVE, J, K, L, LENPD, LIPVT,
68 * LML, LMTYPE, LMU, MBA, MBAND, MEB1, MEBAND, MSAVE, MTYPE, N,
70 DOUBLE PRECISION DEL, DELINV, SQUR, YPSAVE, YSAVE
82 GO TO (100,200,300,400,500),mtype
89 CALL jac(x,y,yprime,wm(npd),cj,rpar,ipar)
98 del=squr*
max(abs(y(i)),abs(h*yprime(i)),abs(wt(i)))
99 del=sign(del,h*yprime(i))
104 yprime(i)=yprime(i)+cj*del
105 CALL res(x,y,yprime,e,ires,rpar,ipar)
106 IF (ires .LT. 0)
RETURN
109 220 wm(nrow+l)=(e(l)-delta(l))*delinv
117 230
CALL dgetrf( neq, neq, wm(npd), neq, iwm(lipvt), ier)
126 400 lenpd=(2*iwm(lml)+iwm(lmu)+1)*neq
128 410 wm(npdm1+i)=0.0d0
129 CALL jac(x,y,yprime,wm(npd),cj,rpar,ipar)
130 meband=2*iwm(lml)+iwm(lmu)+1
135 500 mband=iwm(lml)+iwm(lmu)+1
137 meband=mband+iwm(lml)
148 wm(ipsave+k)=yprime(n)
149 del=squr*
max(abs(y(n)),abs(h*yprime(n)),abs(wt(n)))
150 del=sign(del,h*yprime(n))
153 510 yprime(n)=yprime(n)+cj*del
154 CALL res(x,y,yprime,e,ires,rpar,ipar)
155 IF (ires .LT. 0)
RETURN
159 yprime(n)=wm(ipsave+k)
160 del=squr*
max(abs(y(n)),abs(h*yprime(n)),abs(wt(n)))
161 del=sign(del,h*yprime(n))
164 i1=
max(1,(n-iwm(lmu)))
165 i2=
min(neq,(n+iwm(lml)))
166 ii=n*meb1-iwm(lml)+npdm1
168 520 wm(ii+i)=(e(i)-delta(i))*delinv
174 550
CALL dgbtrf(neq, neq, iwm(lml), iwm(lmu), wm(npd), meband,
charNDArray max(char d, const charNDArray &m)
charNDArray min(char d, const charNDArray &m)
subroutine ddajac(NEQ, X, Y, YPRIME, DELTA, CJ, H, IER, WT, E, WM, IWM, RES, IRES, UROUND, JAC, RPAR, IPAR, NTEMP)