-
Notifications
You must be signed in to change notification settings - Fork 16
/
intpts.f
52 lines (52 loc) · 1.29 KB
/
intpts.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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
SUBROUTINE INTPTS(ZI,CI,NL,Z1,Z2,Q,ZA,ZB,SUMA,SUMB,IERR)
INTEGER I,NL,IERR
INTEGER Z1,Z2,ZA,ZB
DOUBLE PRECISION ZI,CI,Q,SUMA,SUMB,SUM
DIMENSION ZI(NL),CI(NL)
DATA SUM/14.0D0/
C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C
C THIS SUBROUTINE DOES THE FOLLOWING:
C -DETERMINES THE POINTS AT WHICH THE OUTWARDS & INWARDS
C INTEGRATIONS ARE TO BE STARTED
C
C INPUT VARIABLES:
C ZI(NL),CI(NL),NL,Z1,Z2,Q
C
C OUTPUT VARIABLES:
C ZA,ZB,SUMA,SUMB
C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C
C CALCULATE SUMA & FIND ZA
C
SUMA=0.0D0
I=Z1-1
IF(I.EQ.0)GO TO 120
105 SUMA=SUMA+DSQRT(DABS(CI(I)-Q))*(ZI(I+1)-ZI(I))
IF(SUMA.GT.SUM)GO TO 130
I=I-1
IF(I.EQ.0)GO TO 120
GO TO 105
120 ZA=1
GO TO 200
130 SUMA=SUMA-DSQRT(DABS(CI(I)-Q))*(ZI(I+1)-ZI(I))
ZA=I+1
C
C CALCULATE SUMB & FIND ZB
C
200 SUMB=0.0D0
I=Z2
205 IF(I.EQ.NL)GO TO 220
SUMB=SUMB+DSQRT(DABS(CI(I)-Q))*(ZI(I+1)-ZI(I))
IF(SUMB.GT.SUM)GO TO 210
I=I+1
GO TO 205
210 SUMB=SUMB-DSQRT(DABS(CI(I)-Q))*(ZI(I+1)-ZI(I))
C XXX ZB=I-1 STATEMENT REMOVED 14-SEPT-79 DDE
ZB=I
GO TO 300
220 ZB=NL
300 RETURN
END