-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGTCHRT.FOR
72 lines (69 loc) · 2.37 KB
/
GTCHRT.FOR
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
C ./ i 0
$STORAGE:2
SUBROUTINE GT CHRT
LOGICAL DONE(35), FUNC(35), OK,OVER
INTEGER ORDER (35)
CHARACTER*4 NAME
COMMON ICOM1(176), NAME(7),ISTUDY,IDATE(3),
A IFLAG(75),NVAR,NTABLE, COM2(75), ICOM3(96)
C
DATA ORDER /16,12,24,13,1, 28,29,27,2,18, 3,22,25,4,21,
A 23,15,9,5,14,
B 7,8,6,10,11, 17,19,20,26, 6*0/
C Old ORDER adding 27,28,29 on 6/13/85 DWW
C DATA ORDER /16,12,24,13,1,2,18,3,22,25,4,21,23,15,9,5,14,
C A 7,8,6,10,11,17,19,20,26, 9*0/
C FUNC array is in order of 1 - MAXVAR, not by order in ORDER
DATA FUNC /5*.FALSE.,.TRUE.,8*.FALSE.,7*.TRUE.,.FALSE.,
A .TRUE.,.FALSE.,.TRUE.,4*.FALSE., 6*.FALSE./
C Old FUNC below adding VDVT, PECO2, AND FECO2 routines 6/13/85 DWW
C DATA FUNC /5*.FALSE.,.TRUE.,8*.FALSE.,7*.TRUE.,.FALSE.,
C A .TRUE.,.FALSE.,.TRUE.,.FALSE., 9*.FALSE./
C
C ROUTINE TO GET GET 'CHARTS' IN APPROPRIATE ORDER.
C THAT ORDER IS MAINTAINED IN ARRAY 'ORDER'
C
DO 20 J = 1,NTABLE
20 DONE (J) = .FALSE.
C
C LOOP - FIND FIRST 'ICHART' IN 'ORDER' LIST THAT HASN'T BEEN DONE
C YET (I.E., 'DONE(ICHART)' = .FALSE.), BUT THAT HAS ENOUGH
C INFO SO THAT WE CAN DO IT NOW (I.E., 'OK' = .TRUE.)
C
50 OVER = .TRUE.
DO 9000 I = 1,NTABLE
ICHART = ORDER (I)
IF (DONE(ICHART)) GO TO 9000
CALL CHRT OK (OK,NKNOWN,ICHART)
IF (.NOT. OK .OR. (FUNC(ICHART) .AND. NKNOWN .NE. 0)) GO TO 9000
OVER = .FALSE.
C
C CERTAIN OF THE CHARTS ARE 'FUNCTIONS' & CAN HAVE ONLY 1 UNKNOWN,
C E.G., THE DISSOCIATION CURVES. IN THESE CASES, 'NKNOWN' = 0,
C 'FUNC' = .TRUE. AND THE UNKNOWNS ARE NOT LISTED IN 'LIST'
C AND 'IPARM'.
C
DONE (ICHART) = .TRUE.
IF (NKNOWN .EQ. 0 .AND. .NOT. FUNC(ICHART)) GO TO 9000
GO TO (300,300,300,300,300, 400, 300,300, 100,100,100,100,100,
A 300, 100,100,100,100, 200,200, 500,500,500,
B 200,200,200, 600,600,600), ICHART
C
100 CALL CHART (ICHART,NKNOWN)
GO TO 9000
200 CALL CHART2 (ICHART,NKNOWN)
GO TO 9000
300 CALL CSH (ICHART,NKNOWN)
GO TO 9000
400 CALL DIFF
GO TO 9000
500 CALL MIT (ICHART,NKNOWN)
GO TO 9000
C Routines for FECO2, PECO2, and Bohr equation
600 CALL CHART3 (ICHART,NKNOWN)
C
9000 CONTINUE
IF (.NOT. OVER) GO TO 50
RETURN
END