-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathshoot.f
28 lines (28 loc) · 819 Bytes
/
shoot.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
SUBROUTINE SHOOT(NVAR,V,DELV,N2,X1,X2,EPS,H1,HMIN,F,DV)
PARAMETER (NP=20)
DIMENSION V(N2),DELV(N2),F(N2),DV(N2),Y(NP),DFDV(NP,NP),INDX(NP)
EXTERNAL DERIVS,RKQC
CALL LOAD(X1,V,Y)
CALL ODEINT(Y,NVAR,X1,X2,EPS,H1,HMIN,NOK,NBAD,DERIVS,RKQC)
CALL SCORE(X2,Y,F)
DO 12 IV=1,N2
SAV=V(IV)
V(IV)=V(IV)+DELV(IV)
CALL LOAD(X1,V,Y)
CALL ODEINT(Y,NVAR,X1,X2,EPS,H1,HMIN,NOK,NBAD,DERIVS,RKQC)
CALL SCORE(X2,Y,DV)
DO 11 I=1,N2
DFDV(I,IV)=(DV(I)-F(I))/DELV(IV)
11 CONTINUE
V(IV)=SAV
12 CONTINUE
DO 13 IV=1,N2
DV(IV)=-F(IV)
13 CONTINUE
CALL LUDCMP(DFDV,N2,NP,INDX,DET)
CALL LUBKSB(DFDV,N2,NP,INDX,DV)
DO 14 IV=1,N2
V(IV)=V(IV)+DV(IV)
14 CONTINUE
RETURN
END